From f4fc692dae32b235a3e83e7463ca572896a4baab Mon Sep 17 00:00:00 2001 From: elbica Date: Mon, 22 Aug 2022 21:51:39 +0900 Subject: [PATCH 001/102] =?UTF-8?q?feat:=20Quick=20Button=20UI=20=EC=A0=9C?= =?UTF-8?q?=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Home, Chat, Calender Icon Button - next/link route change - custom theme color 설정 필요 --- front-end/.eslintrc.json | 5 +- .../application/navigation/QuickButton.tsx | 53 + front-end/application/navigation/index.tsx | 15 + front-end/package-lock.json | 4752 ++++++++++++++++- front-end/package.json | 1 + front-end/pages/chat/index.tsx | 44 +- front-end/styles/globals.css | 4 +- 7 files changed, 4766 insertions(+), 108 deletions(-) create mode 100644 front-end/application/navigation/QuickButton.tsx create mode 100644 front-end/application/navigation/index.tsx diff --git a/front-end/.eslintrc.json b/front-end/.eslintrc.json index bffb357..d2a18fa 100644 --- a/front-end/.eslintrc.json +++ b/front-end/.eslintrc.json @@ -1,3 +1,6 @@ { - "extends": "next/core-web-vitals" + "extends": "next/core-web-vitals", + "rules": { + "react/no-unescaped-entities": "off" + } } diff --git a/front-end/application/navigation/QuickButton.tsx b/front-end/application/navigation/QuickButton.tsx new file mode 100644 index 0000000..91d3e94 --- /dev/null +++ b/front-end/application/navigation/QuickButton.tsx @@ -0,0 +1,53 @@ +import React, {useState} from 'react' +import {Backdrop, Box, Fab} from "@mui/material" +import {Add, HomeOutlined, MessageOutlined, TodayOutlined} from '@mui/icons-material' +import Link from "next/link" + +const wrapStyle = { + display: 'flex', + flexWrap: "wrap", + width: 1, + height: 100, + justifyContent: "center", + alignItems: "flex-end", + justifySelf: "center", + position: "fixed", + bottom: 20 +} + +type IQuickButton = {}; +const QuickButton = ({}: IQuickButton) => { + const [isOpen, setIsOpen] = useState(false) + const toggleOpen = () => setIsOpen(!isOpen) + + return ( + + + { + isOpen && + + + + + + + + + + + + + + + + + + } + + + + + ) +} + +export default QuickButton \ No newline at end of file diff --git a/front-end/application/navigation/index.tsx b/front-end/application/navigation/index.tsx new file mode 100644 index 0000000..48e93c0 --- /dev/null +++ b/front-end/application/navigation/index.tsx @@ -0,0 +1,15 @@ +import React from 'react' +import QuickButton from "./QuickButton" +import {Box} from "@mui/material" + +type INavigation = React.PropsWithChildren +const Navigation = ({children}: INavigation) => { + return ( + + {children} + + + ) +} + +export default Navigation \ No newline at end of file diff --git a/front-end/package-lock.json b/front-end/package-lock.json index 39f0c63..9d78c94 100644 --- a/front-end/package-lock.json +++ b/front-end/package-lock.json @@ -1,8 +1,4632 @@ { "name": "front-end", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "0.1.0", + "dependencies": { + "@emotion/react": "^11.10.0", + "@emotion/styled": "^11.10.0", + "@mui/icons-material": "^5.8.4", + "@mui/material": "^5.10.1", + "@tailwindcss/forms": "^0.5.2", + "next": "12.2.5", + "react": "18.2.0", + "react-dom": "18.2.0", + "styled-components": "^5.3.5", + "styled-reset": "^4.4.2" + }, + "devDependencies": { + "@types/node": "18.7.8", + "@types/react": "18.0.17", + "@types/react-dom": "18.0.6", + "@types/styled-components": "^5.1.26", + "autoprefixer": "^10.4.8", + "eslint": "8.22.0", + "eslint-config-next": "12.2.5", + "postcss": "^8.4.16", + "tailwindcss": "^3.1.8", + "typescript": "4.7.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "dependencies": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "dependencies": { + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", + "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", + "dev": true, + "dependencies": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.18.11", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", + "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.11", + "@babel/types": "^7.18.10", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.0.tgz", + "integrity": "sha512-xVnpDAAbtxL1dsuSelU5A7BnY/lftws0wUexNJZTPsvX/1tM4GZJbclgODhvW4E+NH7E5VFcH0bBn30NvniPJA==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.0", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.0.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.10.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.1.tgz", + "integrity": "sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A==", + "dependencies": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.0.13" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "dependencies": { + "@emotion/memoize": "^0.8.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "node_modules/@emotion/react": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.0.tgz", + "integrity": "sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/cache": "^11.10.0", + "@emotion/serialize": "^1.1.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz", + "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/serialize/node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/@emotion/sheet": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", + "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + }, + "node_modules/@emotion/styled": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.0.tgz", + "integrity": "sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.0", + "@emotion/utils": "^1.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, + "node_modules/@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.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" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "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/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@mui/base": { + "version": "5.0.0-alpha.93", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.93.tgz", + "integrity": "sha512-IVUWO0NNlELDc9FD7mM+fWTS1/6n5sJYdIbXpLQ00NjWdVEYmTyRgUAZDlJJJrz+tbF0eeffx0kOsvJvyTZlsA==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@emotion/is-prop-valid": "^1.1.3", + "@mui/types": "^7.1.5", + "@mui/utils": "^5.9.3", + "@popperjs/core": "^2.11.6", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.1.tgz", + "integrity": "sha512-zyzLkVSqi+WuxG8UZrrOaWbhHkDK+MlHFjLpL+vqUVU6iSUaDYREu1xoLWEQsWOznT4oT2iEiGZLpQLgkn+WiA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.8.4", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz", + "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==", + "dependencies": { + "@babel/runtime": "^7.17.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.1.tgz", + "integrity": "sha512-E9fhskX6TwUdAzpL5+yoAzRxb6wY4oBqmBVlgUuLndSwPRYxXoGu+z74NxbDEkxUoHdb7vrDcRTswpB6ykDITQ==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@mui/base": "5.0.0-alpha.93", + "@mui/core-downloads-tracker": "^5.10.1", + "@mui/system": "^5.10.1", + "@mui/types": "^7.1.5", + "@mui/utils": "^5.9.3", + "@types/react-transition-group": "^4.4.5", + "clsx": "^1.2.1", + "csstype": "^3.1.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@mui/private-theming": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.9.3.tgz", + "integrity": "sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@mui/utils": "^5.9.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.1.tgz", + "integrity": "sha512-xiQp6wvSLpMcRCOExbRSvkHf6gIQ/eeK7mx/Re6BtPPYIx6OerPwia+23uVIop/k4Bs5D+w7Rv2yXYJxo5rMSQ==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@emotion/cache": "^11.9.3", + "csstype": "^3.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.1.tgz", + "integrity": "sha512-Ix8LVAMtVrNtmncK0yc5llHWlZKCm9okbw8QMnWbI5UH+nI9qhtf+Aure4p5ei6dGKdil++lukar/GxCjfzRSg==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@mui/private-theming": "^5.9.3", + "@mui/styled-engine": "^5.10.1", + "@mui/types": "^7.1.5", + "@mui/utils": "^5.9.3", + "clsx": "^1.2.1", + "csstype": "^3.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.5.tgz", + "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.9.3.tgz", + "integrity": "sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==", + "dependencies": { + "@babel/runtime": "^7.17.2", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^16.7.1 || ^17.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@next/env": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.5.tgz", + "integrity": "sha512-vLPLV3cpPGjUPT3PjgRj7e3nio9t6USkuew3JE/jMeon/9Mvp1WyR18v3iwnCuX7eUAm1HmAbJHHLAbcu/EJcw==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.5.tgz", + "integrity": "sha512-VBjVbmqEzGiOTBq4+wpeVXt/KgknnGB6ahvC/AxiIGnN93/RCSyXhFRI4uSfftM2Ba3w7ZO7076bfKasZsA0fw==", + "dev": true, + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@next/swc-android-arm-eabi": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.5.tgz", + "integrity": "sha512-cPWClKxGhgn2dLWnspW+7psl3MoLQUcNqJqOHk2BhNcou9ARDtC0IjQkKe5qcn9qg7I7U83Gp1yh2aesZfZJMA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-android-arm64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.5.tgz", + "integrity": "sha512-vMj0efliXmC5b7p+wfcQCX0AfU8IypjkzT64GiKJD9PgiA3IILNiGJr1fw2lyUDHkjeWx/5HMlMEpLnTsQslwg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.5.tgz", + "integrity": "sha512-VOPWbO5EFr6snla/WcxUKtvzGVShfs302TEMOtzYyWni6f9zuOetijJvVh9CCTzInnXAZMtHyNhefijA4HMYLg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.5.tgz", + "integrity": "sha512-5o8bTCgAmtYOgauO/Xd27vW52G2/m3i5PX7MUYePquxXAnX73AAtqA3WgPXBRitEB60plSKZgOTkcpqrsh546A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-freebsd-x64": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.5.tgz", + "integrity": "sha512-yYUbyup1JnznMtEBRkK4LT56N0lfK5qNTzr6/DEyDw5TbFVwnuy2hhLBzwCBkScFVjpFdfiC6SQAX3FrAZzuuw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm-gnueabihf": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.5.tgz", + "integrity": "sha512-2ZE2/G921Acks7UopJZVMgKLdm4vN4U0yuzvAMJ6KBavPzqESA2yHJlm85TV/K9gIjKhSk5BVtauIUntFRP8cg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.5.tgz", + "integrity": "sha512-/I6+PWVlz2wkTdWqhlSYYJ1pWWgUVva6SgX353oqTh8njNQp1SdFQuWDqk8LnM6ulheVfSsgkDzxrDaAQZnzjQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.5.tgz", + "integrity": "sha512-LPQRelfX6asXyVr59p5sTpx5l+0yh2Vjp/R8Wi4X9pnqcayqT4CUJLiHqCvZuLin3IsFdisJL0rKHMoaZLRfmg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.5.tgz", + "integrity": "sha512-0szyAo8jMCClkjNK0hknjhmAngUppoRekW6OAezbEYwHXN/VNtsXbfzgYOqjKWxEx3OoAzrT3jLwAF0HdX2MEw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.5.tgz", + "integrity": "sha512-zg/Y6oBar1yVnW6Il1I/08/2ukWtOG6s3acdJdEyIdsCzyQi4RLxbbhkD/EGQyhqBvd3QrC6ZXQEXighQUAZ0g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.5.tgz", + "integrity": "sha512-3/90DRNSqeeSRMMEhj4gHHQlLhhKg5SCCoYfE3kBjGpE63EfnblYUqsszGGZ9ekpKL/R4/SGB40iCQr8tR5Jiw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.5.tgz", + "integrity": "sha512-hGLc0ZRAwnaPL4ulwpp4D2RxmkHQLuI8CFOEEHdzZpS63/hMVzv81g8jzYA0UXbb9pus/iTc3VRbVbAM03SRrw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.5.tgz", + "integrity": "sha512-7h5/ahY7NeaO2xygqVrSG/Y8Vs4cdjxIjowTZ5W6CKoTKn7tmnuxlUc2h74x06FKmbhAd9agOjr/AOKyxYYm9Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz", + "integrity": "sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", + "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.2.tgz", + "integrity": "sha512-pSrFeJB6Bg1Mrg9CdQW3+hqZXAKsBrSG9MAfFLKy1pVA4Mb4W7C0k7mEhlmS2Dfo/otxrQOET7NJiJ9RrS563w==", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dev": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.7.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.8.tgz", + "integrity": "sha512-/YP55EMK2341JkODUb8DM9O0x1SIz2aBvyF33Uf1c76St3VpsMXEIW0nxuKkq/5cxnbz0RD9cfwNZHEAZQD3ag==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "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==" + }, + "node_modules/@types/react": { + "version": "18.0.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz", + "integrity": "sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", + "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-is": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", + "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/styled-components": { + "version": "5.1.26", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz", + "integrity": "sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==", + "dev": true, + "dependencies": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz", + "integrity": "sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.33.1", + "@typescript-eslint/types": "5.33.1", + "@typescript-eslint/typescript-estree": "5.33.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz", + "integrity": "sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.33.1", + "@typescript-eslint/visitor-keys": "5.33.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz", + "integrity": "sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz", + "integrity": "sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.33.1", + "@typescript-eslint/visitor-keys": "5.33.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz", + "integrity": "sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.33.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.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/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "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/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "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.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", + "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.3", + "caniuse-lite": "^1.0.30001373", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-styled-components": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", + "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-module-imports": "^7.16.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11", + "picomatch": "^2.3.0" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" + }, + "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/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001379", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001379.tgz", + "integrity": "sha512-zXf+qxuN8OJrK5Bl5HbJg8cc5/Zm01WNW4ooVWUh92YlKqQZW3fwN5lXLB+kI8wkP5vTWkIIN+rutZuJhf4ykw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "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/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "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==" + }, + "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/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/core-js-pure": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", + "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "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==", + "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.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "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/defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "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/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.225", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.225.tgz", + "integrity": "sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz", + "integrity": "sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.3", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "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-config-next": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.2.5.tgz", + "integrity": "sha512-SOowilkqPzW6DxKp3a3SYlrfPi5Ajs9MIzp9gVfUDxxH9QFM5ElkR1hX5m/iICJuvCbWgQqFBiA3mCMozluniw==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "12.2.5", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.21.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react-hooks": "^4.5.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", + "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/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-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.30.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz", + "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "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.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "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/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-plugin-react/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/eslint-plugin-react/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", + "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "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-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "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/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "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/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "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==", + "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==" + }, + "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/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "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.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "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==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "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==", + "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-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/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "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==", + "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.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "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==", + "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==", + "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": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "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-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-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/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/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "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/lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "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": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "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/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "bin": { + "mini-svg-data-uri": "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/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "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==" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "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/next": { + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/next/-/next-12.2.5.tgz", + "integrity": "sha512-tBdjqX5XC/oFs/6gxrZhjmiq90YWizUYU6qOWAfat7zJwrwapJ+BYgX2PmiacunXMaRpeVT4vz5MSPSLgNkrpA==", + "dependencies": { + "@next/env": "12.2.5", + "@swc/helpers": "0.4.3", + "caniuse-lite": "^1.0.30001332", + "postcss": "8.4.14", + "styled-jsx": "5.0.4", + "use-sync-external-store": "1.2.0" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=12.22.0" + }, + "optionalDependencies": { + "@next/swc-android-arm-eabi": "12.2.5", + "@next/swc-android-arm64": "12.2.5", + "@next/swc-darwin-arm64": "12.2.5", + "@next/swc-darwin-x64": "12.2.5", + "@next/swc-freebsd-x64": "12.2.5", + "@next/swc-linux-arm-gnueabihf": "12.2.5", + "@next/swc-linux-arm64-gnu": "12.2.5", + "@next/swc-linux-arm64-musl": "12.2.5", + "@next/swc-linux-x64-gnu": "12.2.5", + "@next/swc-linux-x64-musl": "12.2.5", + "@next/swc-win32-arm64-msvc": "12.2.5", + "@next/swc-win32-ia32-msvc": "12.2.5", + "@next/swc-win32-x64-msvc": "12.2.5" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^6.0.0 || ^7.0.0", + "react": "^17.0.2 || ^18.0.0-0", + "react-dom": "^17.0.2 || ^18.0.0-0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "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.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "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.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "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==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "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==", + "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/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "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==", + "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==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "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": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "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/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "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-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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/styled-components": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz", + "integrity": "sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==", + "hasInstallScript": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^1.1.0", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/styled-components/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/styled-jsx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", + "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/styled-reset": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/styled-reset/-/styled-reset-4.4.2.tgz", + "integrity": "sha512-VzVhEZHpO/CD/F5ZllqTAY+GTaKlNDZt5mTrtPf/kXZSe85+wMkhRIiPARgvCP9/HQMk+ZGaEWk1IkdP2SYAUQ==", + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/zacanger" + }, + "peerDependencies": { + "styled-components": ">=4.0.0 || >=5.0.0" + } + }, + "node_modules/stylis": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", + "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", + "dependencies": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.1", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.6", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.14", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "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/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "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/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "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/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": 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/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "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": { "@babel/code-frame": { "version": "7.18.6", @@ -439,6 +5063,14 @@ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.1.tgz", "integrity": "sha512-zyzLkVSqi+WuxG8UZrrOaWbhHkDK+MlHFjLpL+vqUVU6iSUaDYREu1xoLWEQsWOznT4oT2iEiGZLpQLgkn+WiA==" }, + "@mui/icons-material": { + "version": "5.8.4", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz", + "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==", + "requires": { + "@babel/runtime": "^7.17.2" + } + }, "@mui/material": { "version": "5.10.1", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.1.tgz", @@ -504,7 +5136,8 @@ "@mui/types": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.5.tgz", - "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==" + "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==", + "requires": {} }, "@mui/utils": { "version": "5.9.3", @@ -637,7 +5270,6 @@ "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" @@ -646,14 +5278,12 @@ "@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 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@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" @@ -832,13 +5462,13 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-node": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, "requires": { "acorn": "^7.0.0", "acorn-walk": "^7.0.0", @@ -848,16 +5478,14 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" } } }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, "ajv": { "version": "6.12.6", @@ -890,7 +5518,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -899,8 +5526,7 @@ "arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "argparse": { "version": "2.0.1", @@ -1029,8 +5655,7 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "brace-expansion": { "version": "1.1.11", @@ -1046,7 +5671,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -1081,8 +5705,7 @@ "camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, "camelize": { "version": "1.0.0", @@ -1108,7 +5731,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1124,7 +5746,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -1148,8 +5769,7 @@ "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 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "concat-map": { "version": "0.0.1", @@ -1212,8 +5832,7 @@ "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "csstype": { "version": "3.1.0", @@ -1253,14 +5872,12 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", - "dev": true + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" }, "detective": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, "requires": { "acorn-node": "^1.8.2", "defined": "^1.0.0", @@ -1270,8 +5887,7 @@ "didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "dir-glob": { "version": "3.0.1", @@ -1285,8 +5901,7 @@ "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "doctrine": { "version": "3.0.0", @@ -1636,7 +6251,8 @@ "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 + "dev": true, + "requires": {} }, "eslint-scope": { "version": "7.1.1", @@ -1722,7 +6338,6 @@ "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1735,7 +6350,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -1758,7 +6372,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -1776,7 +6389,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -1828,7 +6440,6 @@ "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": { @@ -1899,7 +6510,6 @@ "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" } @@ -2051,7 +6661,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -2092,14 +6701,12 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "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" } @@ -2113,8 +6720,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { "version": "1.0.7", @@ -2260,8 +6866,7 @@ "lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" }, "lines-and-columns": { "version": "1.2.4", @@ -2308,14 +6913,12 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -2338,8 +6941,7 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "ms": { "version": "2.1.2", @@ -2404,8 +7006,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-range": { "version": "0.1.2", @@ -2421,8 +7022,7 @@ "object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { "version": "1.12.2", @@ -2592,14 +7192,12 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, "postcss": { "version": "8.4.16", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -2610,7 +7208,6 @@ "version": "14.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, "requires": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -2621,7 +7218,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, "requires": { "camelcase-css": "^2.0.1" } @@ -2630,7 +7226,6 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, "requires": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" @@ -2640,7 +7235,6 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, "requires": { "postcss-selector-parser": "^6.0.6" } @@ -2649,7 +7243,6 @@ "version": "6.0.10", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2685,14 +7278,12 @@ "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 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, "react": { "version": "18.2.0", @@ -2731,7 +7322,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "requires": { "pify": "^2.3.0" } @@ -2740,7 +7330,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -2785,8 +7374,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { "version": "3.0.2", @@ -2801,7 +7389,6 @@ "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" } @@ -2969,12 +7556,14 @@ "styled-jsx": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", - "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==" + "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", + "requires": {} }, "styled-reset": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/styled-reset/-/styled-reset-4.4.2.tgz", - "integrity": "sha512-VzVhEZHpO/CD/F5ZllqTAY+GTaKlNDZt5mTrtPf/kXZSe85+wMkhRIiPARgvCP9/HQMk+ZGaEWk1IkdP2SYAUQ==" + "integrity": "sha512-VzVhEZHpO/CD/F5ZllqTAY+GTaKlNDZt5mTrtPf/kXZSe85+wMkhRIiPARgvCP9/HQMk+ZGaEWk1IkdP2SYAUQ==", + "requires": {} }, "stylis": { "version": "4.0.13", @@ -2999,7 +7588,6 @@ "version": "3.1.8", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", - "dev": true, "requires": { "arg": "^5.0.2", "chokidar": "^3.5.3", @@ -3040,7 +7628,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -3134,13 +7721,13 @@ "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "requires": {} }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "v8-compile-cache": { "version": "2.3.0", @@ -3185,8 +7772,7 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "yallist": { "version": "4.0.0", diff --git a/front-end/package.json b/front-end/package.json index 0a29c21..909146c 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -11,6 +11,7 @@ "dependencies": { "@emotion/react": "^11.10.0", "@emotion/styled": "^11.10.0", + "@mui/icons-material": "^5.8.4", "@mui/material": "^5.10.1", "@tailwindcss/forms": "^0.5.2", "next": "12.2.5", diff --git a/front-end/pages/chat/index.tsx b/front-end/pages/chat/index.tsx index 8f5b7ae..a7640fd 100644 --- a/front-end/pages/chat/index.tsx +++ b/front-end/pages/chat/index.tsx @@ -1,28 +1,28 @@ -import type { NextPage } from "next"; -import Layout from "../../components/layout"; +import type {NextPage} from "next" +import Navigation from "../../application/navigation" export interface IChat { - isUser: boolean; - message: string; - date: Date; - option?: string; - emotion?: "Positive" | "Negative" | "Sad" | ""; - hasError: boolean; + isUser: boolean; + message: string; + date: Date; + option?: string; + emotion?: "Positive" | "Negative" | "Sad" | ""; + hasError: boolean; } const Chat: NextPage = () => { - return ( - -

I'm Chat!

-
-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-
-
- ); -}; + return ( + +

I'm Chat!

+
+

Hello!

+

Hello!

+

Hello!

+

Hello!

+

Hello!

+
+
+ ) +} -export default Chat; +export default Chat diff --git a/front-end/styles/globals.css b/front-end/styles/globals.css index fe69564..7b91d6c 100644 --- a/front-end/styles/globals.css +++ b/front-end/styles/globals.css @@ -1,4 +1,4 @@ /* globals.css */ -@tailwind base; +/*@tailwind base; @tailwind components; -@tailwind utilities; +@tailwind utilities;*/ From ab96f72a563b96775e59123458bdd08992d5c0b8 Mon Sep 17 00:00:00 2001 From: elbica Date: Tue, 23 Aug 2022 16:36:37 +0900 Subject: [PATCH 002/102] =?UTF-8?q?feat:=20App=20Bar=20UI=20=EC=A0=9C?= =?UTF-8?q?=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - App Current Context - 스크롤바 hide, tailwind 비활성 - Context 위치 논의 필요 --- front-end/application/navigation/GNB.tsx | 57 +++++++++++++++++++ .../navigation/NavigationProvider.tsx | 34 +++++++++++ .../application/navigation/QuickButton.tsx | 10 ++-- front-end/application/navigation/index.tsx | 18 ++++-- front-end/pages/_app.tsx | 21 ++++--- front-end/pages/chat/index.tsx | 16 +++++- front-end/pages/index.tsx | 5 +- front-end/styles/globals.css | 3 + 8 files changed, 138 insertions(+), 26 deletions(-) create mode 100644 front-end/application/navigation/GNB.tsx create mode 100644 front-end/application/navigation/NavigationProvider.tsx diff --git a/front-end/application/navigation/GNB.tsx b/front-end/application/navigation/GNB.tsx new file mode 100644 index 0000000..7a0940a --- /dev/null +++ b/front-end/application/navigation/GNB.tsx @@ -0,0 +1,57 @@ +import React, {useContext} from 'react' +import {ArrowBackOutlined, PersonOutlineOutlined} from "@mui/icons-material" +import {AppBar, Box, Button, IconButton, Toolbar, Typography, useScrollTrigger} from '@mui/material' +import Link from "next/link" +import {NavigationContext, SCREEN_NAME} from "./NavigationProvider" + +function ElevationScroll({children}: { children: React.ReactElement }) { + const trigger = useScrollTrigger({ + disableHysteresis: true, + threshold: 0, + }) + + return React.cloneElement(children, { + elevation: trigger ? 4 : 0, + }) +} + +const Gnb = () => { + const [screenName, setScreenName] = useContext(NavigationContext) + return ( + + + + + { + screenName !== SCREEN_NAME.home && + + } + + + + + {screenName} + + + + setScreenName(SCREEN_NAME.profile)} + size="large" + color="inherit"> + + + + + + + + + ) +} + +export default Gnb \ No newline at end of file diff --git a/front-end/application/navigation/NavigationProvider.tsx b/front-end/application/navigation/NavigationProvider.tsx new file mode 100644 index 0000000..d26c5e0 --- /dev/null +++ b/front-end/application/navigation/NavigationProvider.tsx @@ -0,0 +1,34 @@ +import React, {Dispatch, SetStateAction, useState} from 'react' +import {useRouter} from "next/router" + +type IScreenState = [string, Dispatch>] + +export const SCREEN_NAME = { + home: "PUE", + chat : "상담", + profile: "내 프로필", + calendar: "감정 캘린더", +} + +/** + * @todo + * Context(Store)은 추후 infra로 이동 + * 상태 관리 논의 필요 + */ +export const NavigationContext = React.createContext([] as unknown as IScreenState) +NavigationContext.displayName = "NavigationContext"; + +type INavigationProvider = React.PropsWithChildren; +const NavigationProvider = ({children}: INavigationProvider) => { + const router = useRouter() + const screenInit = router.pathname.split('/').pop() + const screenState = useState(screenInit || SCREEN_NAME.home) + + return ( + + {children} + + ) +} + +export default NavigationProvider \ No newline at end of file diff --git a/front-end/application/navigation/QuickButton.tsx b/front-end/application/navigation/QuickButton.tsx index 91d3e94..59dc350 100644 --- a/front-end/application/navigation/QuickButton.tsx +++ b/front-end/application/navigation/QuickButton.tsx @@ -1,7 +1,8 @@ -import React, {useState} from 'react' +import React, {useContext, useState} from 'react' import {Backdrop, Box, Fab} from "@mui/material" import {Add, HomeOutlined, MessageOutlined, TodayOutlined} from '@mui/icons-material' import Link from "next/link" +import {NavigationContext, SCREEN_NAME} from "./NavigationProvider" const wrapStyle = { display: 'flex', @@ -19,6 +20,7 @@ type IQuickButton = {}; const QuickButton = ({}: IQuickButton) => { const [isOpen, setIsOpen] = useState(false) const toggleOpen = () => setIsOpen(!isOpen) + const [, setScreenName] = useContext(NavigationContext) return ( @@ -27,17 +29,17 @@ const QuickButton = ({}: IQuickButton) => { isOpen && - + setScreenName(SCREEN_NAME.home)}> - + setScreenName(SCREEN_NAME.chat)}> - + setScreenName(SCREEN_NAME.calendar)}> diff --git a/front-end/application/navigation/index.tsx b/front-end/application/navigation/index.tsx index 48e93c0..40e07a4 100644 --- a/front-end/application/navigation/index.tsx +++ b/front-end/application/navigation/index.tsx @@ -1,14 +1,20 @@ import React from 'react' import QuickButton from "./QuickButton" -import {Box} from "@mui/material" +import Gnb from "./GNB" +import NavigationProvider from "./NavigationProvider" -type INavigation = React.PropsWithChildren -const Navigation = ({children}: INavigation) => { +type INavigation = React.PropsWithChildren<{ + quickDisable?: boolean; +}> +const Navigation = ({children, quickDisable}: INavigation) => { return ( - + + {children} - - + { + !quickDisable && + } + ) } diff --git a/front-end/pages/_app.tsx b/front-end/pages/_app.tsx index cae63ac..cd8ebbf 100644 --- a/front-end/pages/_app.tsx +++ b/front-end/pages/_app.tsx @@ -1,12 +1,15 @@ -import type { AppProps } from "next/app"; -import "../styles/globals.css"; +import type {AppProps} from "next/app" +import "../styles/globals.css" +import Navigation from "../application/navigation" +import {CssBaseline} from "@mui/material" -function App({ Component, pageProps }: AppProps) { - return ( -
- -
- ); +function App({Component, pageProps}: AppProps) { + return ( + + + + + ) } -export default App; +export default App diff --git a/front-end/pages/chat/index.tsx b/front-end/pages/chat/index.tsx index a7640fd..c3a880d 100644 --- a/front-end/pages/chat/index.tsx +++ b/front-end/pages/chat/index.tsx @@ -1,5 +1,4 @@ import type {NextPage} from "next" -import Navigation from "../../application/navigation" export interface IChat { isUser: boolean; @@ -12,16 +11,27 @@ export interface IChat { const Chat: NextPage = () => { return ( - + <>

I'm Chat!

+

Hello! dfdfdf

+

Hello!

+

Hello!

+

Hello!

+

Hello!

+

Hello!

+

Hello!

+

Hello!

+

Hello!

+

Hello!

+

Hello!

Hello!

Hello!

Hello!

Hello!

Hello!

-
+ ) } diff --git a/front-end/pages/index.tsx b/front-end/pages/index.tsx index 3d78130..8d4f227 100644 --- a/front-end/pages/index.tsx +++ b/front-end/pages/index.tsx @@ -1,13 +1,10 @@ -import type { NextPage } from "next"; -import Layout from "../components/layout"; +import type {NextPage} from "next" const Home: NextPage = () => { return ( -

I'm Home

-
); }; diff --git a/front-end/styles/globals.css b/front-end/styles/globals.css index 7b91d6c..a086211 100644 --- a/front-end/styles/globals.css +++ b/front-end/styles/globals.css @@ -2,3 +2,6 @@ /*@tailwind base; @tailwind components; @tailwind utilities;*/ +::-webkit-scrollbar { + width: 0; +} From 704e713554e38f70a5195fdcaf5cf54213fc2a33 Mon Sep 17 00:00:00 2001 From: Sohee Kim <74011724+elbica@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:21:20 +0900 Subject: [PATCH 003/102] Update issue templates Feature Issue Template --- .github/ISSUE_TEMPLATE/feature-request.md | 26 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature-suggest.md | 26 +++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/feature-suggest.md diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000..efafcdc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,26 @@ +--- +name: Feature Request +about: Suggest an feature for PUE +title: 'Feat : Title' +labels: '' +assignees: '' + +--- + +--- +## Feature Info + - Person in charge : + - Definition : + - Timeline : + - ClickUp : [Task Name](https://clickup.url) +--- +## Description + +### Summary / Behavior + + +### Necessity + + +### Outcome + diff --git a/.github/ISSUE_TEMPLATE/feature-suggest.md b/.github/ISSUE_TEMPLATE/feature-suggest.md new file mode 100644 index 0000000..905cbcc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-suggest.md @@ -0,0 +1,26 @@ +--- +name: Feature Suggest +about: Suggest an feature for PUE +title: 'Feat : Title' +labels: '' +assignees: '' + +--- + +--- +## Feature Info + - Person in charge : + - Definition : + - Timeline : + - ClickUp : [Task Name](https://clickup.url) +--- +## Description + +### Summary / Behavior + + +### Necessity + + +### Outcome + From 3b75104ecb44b2ac771b1c5cb79b291c6671e37c Mon Sep 17 00:00:00 2001 From: Sohee Kim <74011724+elbica@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:23:25 +0900 Subject: [PATCH 004/102] Delete feature-request.md --- .github/ISSUE_TEMPLATE/feature-request.md | 26 ----------------------- 1 file changed, 26 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/feature-request.md diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md deleted file mode 100644 index efafcdc..0000000 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: Feature Request -about: Suggest an feature for PUE -title: 'Feat : Title' -labels: '' -assignees: '' - ---- - ---- -## Feature Info - - Person in charge : - - Definition : - - Timeline : - - ClickUp : [Task Name](https://clickup.url) ---- -## Description - -### Summary / Behavior - - -### Necessity - - -### Outcome - From 6ea4a0368e51f63e13c3c7baec097226525e69c7 Mon Sep 17 00:00:00 2001 From: Sohee Kim <74011724+elbica@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:26:33 +0900 Subject: [PATCH 005/102] Update feature-suggest.md --- .github/ISSUE_TEMPLATE/feature-suggest.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature-suggest.md b/.github/ISSUE_TEMPLATE/feature-suggest.md index 905cbcc..1594b0c 100644 --- a/.github/ISSUE_TEMPLATE/feature-suggest.md +++ b/.github/ISSUE_TEMPLATE/feature-suggest.md @@ -7,13 +7,13 @@ assignees: '' --- ---- + ## Feature Info - Person in charge : - Definition : - Timeline : - ClickUp : [Task Name](https://clickup.url) ---- + ## Description ### Summary / Behavior From 398147e78453d36666e58f6eae603a84ff43240e Mon Sep 17 00:00:00 2001 From: Sohee Kim <74011724+elbica@users.noreply.github.com> Date: Tue, 23 Aug 2022 17:52:53 +0900 Subject: [PATCH 006/102] Create PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..847cb62 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ +## Description + +Fixes # (issue) + + + +### Type of change + + + +### Todo + + + +### ScreenShot + + +## For Reviewer + From fe2fcc71ba9572d7a061daa1cab36e08383e2997 Mon Sep 17 00:00:00 2001 From: elbica Date: Wed, 24 Aug 2022 18:14:16 +0900 Subject: [PATCH 007/102] =?UTF-8?q?feat:=20Chat=20Message=20UI=20=EC=A0=9C?= =?UTF-8?q?=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Mock Message - ChatService, Repository, Resource 인터페이스 정의 중 - User, MessageRes 타입 정의 중 --- front-end/application/chat/ChatService.ts | 61 +++++++++++++++++++ front-end/application/navigation/GNB.tsx | 2 +- .../navigation/NavigationProvider.tsx | 4 +- front-end/application/navigation/index.tsx | 7 +++ front-end/components/chat/Message.tsx | 48 +++++++++++++++ front-end/components/chat/index.tsx | 30 +++++++++ front-end/pages/chat/index.tsx | 35 +++++------ 7 files changed, 163 insertions(+), 24 deletions(-) create mode 100644 front-end/application/chat/ChatService.ts create mode 100644 front-end/components/chat/Message.tsx create mode 100644 front-end/components/chat/index.tsx diff --git a/front-end/application/chat/ChatService.ts b/front-end/application/chat/ChatService.ts new file mode 100644 index 0000000..755b5e5 --- /dev/null +++ b/front-end/application/chat/ChatService.ts @@ -0,0 +1,61 @@ +/** + * User (domain) + * + * MessageRes (domain) + * - message, writeAt, user:User, (추가 가능) + * + * ChatService (application) + * - property : ChatRepository + * - 가공 로직 + * + * ChatResource (infra) + * - property : SocketClient, HttpClient + */ +interface User { + name: string; + photo: string; +} + +export interface MessageRes { + text: string; + writeAt?: Date; + user: User; +} + +const MOCK_MESSAGE: MessageRes = { + text: "hello this is mock", + user: { + name: "PUE", + photo: "mock photo url" + } +} +const MOCK_SEND_MESSAGE: MessageRes = { + text: "hello?", + user: { + name: "YOU", + photo: "mock photo url" + } +} + +interface ChatRepository { + sendMessage(m: string): Promise; +} + +class ChatService { + addListener(cb: Function) { + } + + clear() { + } + + sendMessage() { + } + + getMessageLog() { + const ret = Array(4).fill(null).map(() => MOCK_MESSAGE) + return ret.concat(MOCK_SEND_MESSAGE) + } +} + +// singleton instance +export const chatService = new ChatService() \ No newline at end of file diff --git a/front-end/application/navigation/GNB.tsx b/front-end/application/navigation/GNB.tsx index 7a0940a..d283bdc 100644 --- a/front-end/application/navigation/GNB.tsx +++ b/front-end/application/navigation/GNB.tsx @@ -19,7 +19,7 @@ const Gnb = () => { const [screenName, setScreenName] = useContext(NavigationContext) return ( - + { diff --git a/front-end/application/navigation/NavigationProvider.tsx b/front-end/application/navigation/NavigationProvider.tsx index d26c5e0..42d294c 100644 --- a/front-end/application/navigation/NavigationProvider.tsx +++ b/front-end/application/navigation/NavigationProvider.tsx @@ -3,7 +3,7 @@ import {useRouter} from "next/router" type IScreenState = [string, Dispatch>] -export const SCREEN_NAME = { +export const SCREEN_NAME: {[key: string]: string} = { home: "PUE", chat : "상담", profile: "내 프로필", @@ -22,7 +22,7 @@ type INavigationProvider = React.PropsWithChildren; const NavigationProvider = ({children}: INavigationProvider) => { const router = useRouter() const screenInit = router.pathname.split('/').pop() - const screenState = useState(screenInit || SCREEN_NAME.home) + const screenState = useState(screenInit && SCREEN_NAME[screenInit] || SCREEN_NAME.home) return ( diff --git a/front-end/application/navigation/index.tsx b/front-end/application/navigation/index.tsx index 40e07a4..44e476c 100644 --- a/front-end/application/navigation/index.tsx +++ b/front-end/application/navigation/index.tsx @@ -3,6 +3,13 @@ import QuickButton from "./QuickButton" import Gnb from "./GNB" import NavigationProvider from "./NavigationProvider" +/** + * @todo + * navigationProvider 제외, component/navigation 으로 이동 + * + * provider : navigation local context 이므로 application에 위치 + * UI : presentation이므로 component/navigation에 위치 + */ type INavigation = React.PropsWithChildren<{ quickDisable?: boolean; }> diff --git a/front-end/components/chat/Message.tsx b/front-end/components/chat/Message.tsx new file mode 100644 index 0000000..6ad7f15 --- /dev/null +++ b/front-end/components/chat/Message.tsx @@ -0,0 +1,48 @@ +import React from 'react' +import {MessageRes} from "../../application/chat/ChatService" +import {Avatar, Box, Paper, Typography} from "@mui/material" + +type IMessage = MessageRes; + +export const MessageLeft = ({text}: IMessage) => { + return ( + + 퓨이 + + + 퓨이 + + + + {text} + + + + + ) +} +export const MessageRight = ({text}: IMessage) => { + return ( + + + + + {text} + + + + + ) +} + diff --git a/front-end/components/chat/index.tsx b/front-end/components/chat/index.tsx new file mode 100644 index 0000000..c949e1e --- /dev/null +++ b/front-end/components/chat/index.tsx @@ -0,0 +1,30 @@ +import React, {useEffect, useState} from 'react' +import {chatService, MessageRes} from "../../application/chat/ChatService" +import {MessageLeft, MessageRight} from "./Message" +import {Box} from "@mui/material" + +type IChat = {}; +const ChatContainer = ({}: IChat) => { + + const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)) + + const [messages, setMessages] = useState([]) + + useEffect(() => { + chatService.addListener(addMessage) + setMessages(chatService.getMessageLog()) + return () => chatService.clear() + }, []) + + return ( + + {messages.map((message, idx) => + message.user.name === "PUE" + ? + : )} + {/* input Component */} + + ) +} + +export default ChatContainer \ No newline at end of file diff --git a/front-end/pages/chat/index.tsx b/front-end/pages/chat/index.tsx index c3a880d..8342d7d 100644 --- a/front-end/pages/chat/index.tsx +++ b/front-end/pages/chat/index.tsx @@ -1,4 +1,6 @@ import type {NextPage} from "next" +import ChatContainer from "../../components/chat" +import {Container} from "@mui/material" export interface IChat { isUser: boolean; @@ -9,29 +11,20 @@ export interface IChat { hasError: boolean; } +/** + * @desc 채팅 서비스 + * 말풍선, 선택지, 입력 UI, layout - application + * 채팅 메세지 전달 - domain + * socket 통신 담당 - infra + * + * + */ + const Chat: NextPage = () => { return ( - <> -

I'm Chat!

-
-

Hello! dfdfdf

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-

Hello!

-
- + + + ) } From a3bbae69f94e2b72b29bd2ea1288984551bbf135 Mon Sep 17 00:00:00 2001 From: elbica Date: Thu, 25 Aug 2022 00:46:46 +0900 Subject: [PATCH 008/102] =?UTF-8?q?feat:=20Chat=20Input=20UI=20=EC=A0=9C?= =?UTF-8?q?=EC=9E=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 제어 컴포넌트로 Input Form 작성 - Submit 시 Chat Message 추가 --- front-end/application/chat/ChatService.ts | 2 +- front-end/components/chat/index.tsx | 36 +++++++++++++--- front-end/components/input/ChatInput.tsx | 50 +++++++++++++++++++++++ front-end/pages/chat/index.tsx | 16 +++++--- 4 files changed, 93 insertions(+), 11 deletions(-) create mode 100644 front-end/components/input/ChatInput.tsx diff --git a/front-end/application/chat/ChatService.ts b/front-end/application/chat/ChatService.ts index 755b5e5..a07fe05 100644 --- a/front-end/application/chat/ChatService.ts +++ b/front-end/application/chat/ChatService.ts @@ -53,7 +53,7 @@ class ChatService { getMessageLog() { const ret = Array(4).fill(null).map(() => MOCK_MESSAGE) - return ret.concat(MOCK_SEND_MESSAGE) + return ret.concat(MOCK_SEND_MESSAGE, MOCK_SEND_MESSAGE) } } diff --git a/front-end/components/chat/index.tsx b/front-end/components/chat/index.tsx index c949e1e..fab2d3f 100644 --- a/front-end/components/chat/index.tsx +++ b/front-end/components/chat/index.tsx @@ -1,7 +1,7 @@ -import React, {useEffect, useState} from 'react' +import React, {useCallback, useEffect, useState} from 'react' import {chatService, MessageRes} from "../../application/chat/ChatService" import {MessageLeft, MessageRight} from "./Message" -import {Box} from "@mui/material" +import ChatInput from "../input/ChatInput" type IChat = {}; const ChatContainer = ({}: IChat) => { @@ -10,20 +10,46 @@ const ChatContainer = ({}: IChat) => { const [messages, setMessages] = useState([]) + const handleSendMessage = useCallback( + (message: string) => { + /** + * @todo + * create Message Domain + */ + const param: MessageRes = { + text: message, + user: {name: "sohee", photo: ""} + } + addMessage(param) + + /** + * @todo + * send Message Domain to ChatService + */ + chatService.sendMessage() + }, + [], + ) + useEffect(() => { chatService.addListener(addMessage) setMessages(chatService.getMessageLog()) return () => chatService.clear() }, []) + /** + * @desc + * index key 는 권장하지 않지만, + * element 순서가 바뀌진 않으므로 사용한다. + */ return ( - + <> {messages.map((message, idx) => message.user.name === "PUE" ? : )} - {/* input Component */} - + + ) } diff --git a/front-end/components/input/ChatInput.tsx b/front-end/components/input/ChatInput.tsx new file mode 100644 index 0000000..bc167a9 --- /dev/null +++ b/front-end/components/input/ChatInput.tsx @@ -0,0 +1,50 @@ +import React, {useState} from 'react' +import {Box, IconButton, InputBase, Paper} from "@mui/material" +import {Send} from "@mui/icons-material" + +type IInput = { handler: (m: string) => void }; + +const ChatInput = ({handler}: IInput) => { + /** + * @desc + * Controlled Component + */ + const [text, setText] = useState('') + const onSubmit = (e: React.FormEvent) => { + e.preventDefault() + if(text === '') return + + handler(text) + setText('') + } + + /** + * @todo + * position, width 스타일 조정 필요 + * 다른 컴포넌트에서 재사용 불가 + */ + return ( + + + setText(e.target.value)} fullWidth + placeholder={"메세지를 입력해 주세요."}/> + + + + + + ) +} + +export default ChatInput \ No newline at end of file diff --git a/front-end/pages/chat/index.tsx b/front-end/pages/chat/index.tsx index 8342d7d..1e8044b 100644 --- a/front-end/pages/chat/index.tsx +++ b/front-end/pages/chat/index.tsx @@ -1,6 +1,7 @@ import type {NextPage} from "next" import ChatContainer from "../../components/chat" -import {Container} from "@mui/material" +import {Box} from "@mui/material" +import {useLayoutEffect} from "react" export interface IChat { isUser: boolean; @@ -16,15 +17,20 @@ export interface IChat { * 말풍선, 선택지, 입력 UI, layout - application * 채팅 메세지 전달 - domain * socket 통신 담당 - infra - * - * */ const Chat: NextPage = () => { + useLayoutEffect(() => { + document.body.style.backgroundColor = 'mintcream' + return () => { + document.body.style.backgroundColor = 'white' + } + }, []) + return ( - + - +
) } From af65b7ebdc499e8c90f136bf75d98691d09754e9 Mon Sep 17 00:00:00 2001 From: elbica Date: Thu, 25 Aug 2022 00:50:41 +0900 Subject: [PATCH 009/102] =?UTF-8?q?fix:=20Navigation=20UI=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 퀵 버튼으로 이동 시, Backdrop이 꺼지는 않는 현상 수정 - 채팅 진입 시 퀵 버튼 hide - calender 철자 오타 --- .../navigation/NavigationProvider.tsx | 1 + .../application/navigation/QuickButton.tsx | 69 +++++++++++-------- front-end/application/navigation/index.tsx | 12 ++-- 3 files changed, 45 insertions(+), 37 deletions(-) diff --git a/front-end/application/navigation/NavigationProvider.tsx b/front-end/application/navigation/NavigationProvider.tsx index 42d294c..c7b25ed 100644 --- a/front-end/application/navigation/NavigationProvider.tsx +++ b/front-end/application/navigation/NavigationProvider.tsx @@ -7,6 +7,7 @@ export const SCREEN_NAME: {[key: string]: string} = { home: "PUE", chat : "상담", profile: "내 프로필", + calender: "감정 캘린더", calendar: "감정 캘린더", } diff --git a/front-end/application/navigation/QuickButton.tsx b/front-end/application/navigation/QuickButton.tsx index 59dc350..95aa169 100644 --- a/front-end/application/navigation/QuickButton.tsx +++ b/front-end/application/navigation/QuickButton.tsx @@ -1,4 +1,4 @@ -import React, {useContext, useState} from 'react' +import React, {useCallback, useContext, useState} from 'react' import {Backdrop, Box, Fab} from "@mui/material" import {Add, HomeOutlined, MessageOutlined, TodayOutlined} from '@mui/icons-material' import Link from "next/link" @@ -19,36 +19,47 @@ const wrapStyle = { type IQuickButton = {}; const QuickButton = ({}: IQuickButton) => { const [isOpen, setIsOpen] = useState(false) - const toggleOpen = () => setIsOpen(!isOpen) - const [, setScreenName] = useContext(NavigationContext) + const toggleOpen = () => setIsOpen(prev => !prev) + const [screenName, setScreenName] = useContext(NavigationContext) + + const handleQB = useCallback( + (name: string) => { + setScreenName(name) + setIsOpen(false) + }, + [setScreenName], + ) return ( - - - { - isOpen && - - - setScreenName(SCREEN_NAME.home)}> - - - - - setScreenName(SCREEN_NAME.chat)}> - - - - - setScreenName(SCREEN_NAME.calendar)}> - - - - - } - - - - + screenName !== SCREEN_NAME.chat ? + + + { + isOpen && + + + handleQB(SCREEN_NAME.home)}> + + + + + handleQB(SCREEN_NAME.chat)}> + + + + + handleQB(SCREEN_NAME.calendar)}> + + + + + } + + + + : null ) } diff --git a/front-end/application/navigation/index.tsx b/front-end/application/navigation/index.tsx index 44e476c..33b4022 100644 --- a/front-end/application/navigation/index.tsx +++ b/front-end/application/navigation/index.tsx @@ -10,17 +10,13 @@ import NavigationProvider from "./NavigationProvider" * provider : navigation local context 이므로 application에 위치 * UI : presentation이므로 component/navigation에 위치 */ -type INavigation = React.PropsWithChildren<{ - quickDisable?: boolean; -}> -const Navigation = ({children, quickDisable}: INavigation) => { +type INavigation = React.PropsWithChildren<{}> +const Navigation = ({children}: INavigation) => { return ( - + {children} - { - !quickDisable && - } + ) } From 171c034a8953390b62e0ea1a9d9a865c7f386c33 Mon Sep 17 00:00:00 2001 From: elbica Date: Thu, 25 Aug 2022 02:06:44 +0900 Subject: [PATCH 010/102] =?UTF-8?q?feat:=20=EC=B1=84=ED=8C=85=20=EC=8B=9C?= =?UTF-8?q?=20scroll=20bottom=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - useRef, box scroll 이동 - 스타일 수정 --- front-end/components/chat/Message.tsx | 2 +- front-end/components/chat/index.tsx | 29 ++++++++++++++++-------- front-end/components/input/ChatInput.tsx | 9 -------- front-end/pages/chat/index.tsx | 6 ++--- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/front-end/components/chat/Message.tsx b/front-end/components/chat/Message.tsx index 6ad7f15..9dfa6ac 100644 --- a/front-end/components/chat/Message.tsx +++ b/front-end/components/chat/Message.tsx @@ -7,7 +7,7 @@ type IMessage = MessageRes; export const MessageLeft = ({text}: IMessage) => { return ( - 퓨이 + 퓨이 퓨이 diff --git a/front-end/components/chat/index.tsx b/front-end/components/chat/index.tsx index fab2d3f..57fcd5c 100644 --- a/front-end/components/chat/index.tsx +++ b/front-end/components/chat/index.tsx @@ -1,14 +1,16 @@ -import React, {useCallback, useEffect, useState} from 'react' +import React, {useCallback, useEffect, useRef, useState} from 'react' import {chatService, MessageRes} from "../../application/chat/ChatService" import {MessageLeft, MessageRight} from "./Message" import ChatInput from "../input/ChatInput" +import {Box} from "@mui/material" type IChat = {}; const ChatContainer = ({}: IChat) => { - const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)) - const [messages, setMessages] = useState([]) + const scrollRef = useRef(null) + + const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)) const handleSendMessage = useCallback( (message: string) => { @@ -37,19 +39,28 @@ const ChatContainer = ({}: IChat) => { return () => chatService.clear() }, []) + useEffect(() => { + if (scrollRef.current) { + scrollRef.current.scrollTop = scrollRef.current.scrollHeight + } + }, [messages]) + /** * @desc * index key 는 권장하지 않지만, * element 순서가 바뀌진 않으므로 사용한다. */ return ( - <> - {messages.map((message, idx) => - message.user.name === "PUE" - ? - : )} + + + {messages.map((message, idx) => + message.user.name === "PUE" + ? + : )} + - + ) } diff --git a/front-end/components/input/ChatInput.tsx b/front-end/components/input/ChatInput.tsx index bc167a9..9f8fc05 100644 --- a/front-end/components/input/ChatInput.tsx +++ b/front-end/components/input/ChatInput.tsx @@ -18,11 +18,6 @@ const ChatInput = ({handler}: IInput) => { setText('') } - /** - * @todo - * position, width 스타일 조정 필요 - * 다른 컴포넌트에서 재사용 불가 - */ return ( { display: 'flex', justifyContent: 'space-between', alignItems: 'center', - position: 'fixed', - width: 'calc(100% - 32px)', - bottom: 30, - }}> setText(e.target.value)} fullWidth diff --git a/front-end/pages/chat/index.tsx b/front-end/pages/chat/index.tsx index 1e8044b..c7a8dca 100644 --- a/front-end/pages/chat/index.tsx +++ b/front-end/pages/chat/index.tsx @@ -1,6 +1,6 @@ import type {NextPage} from "next" import ChatContainer from "../../components/chat" -import {Box} from "@mui/material" +import {Container} from "@mui/material" import {useLayoutEffect} from "react" export interface IChat { @@ -28,9 +28,9 @@ const Chat: NextPage = () => { }, []) return ( - + - + ) } From 791f09d258fc213d05eef993662a18eb13d41fe4 Mon Sep 17 00:00:00 2001 From: pangthing Date: Thu, 25 Aug 2022 10:26:18 +0900 Subject: [PATCH 011/102] docs: Update Templates --- .github/ISSUE_TEMPLATE/epic-template.md | 34 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature-suggest.md | 26 ----------------- .github/ISSUE_TEMPLATE/feature-template.md | 25 ++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 26 ++++++++--------- 4 files changed, 72 insertions(+), 39 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/epic-template.md delete mode 100644 .github/ISSUE_TEMPLATE/feature-suggest.md create mode 100644 .github/ISSUE_TEMPLATE/feature-template.md diff --git a/.github/ISSUE_TEMPLATE/epic-template.md b/.github/ISSUE_TEMPLATE/epic-template.md new file mode 100644 index 0000000..8852190 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/epic-template.md @@ -0,0 +1,34 @@ +--- +name: Epic template +about: If you want to create new epic, Describe it in this template +title: '' +labels: '' +assignees: '' + +--- +--- +--- +--- +### Epic Info +- Person in charge : +- Definition : +- Timeline : + +--- +### Description + +1. Summary +이 Epic이 무엇인지 간략하게 설명합니다. 만약 필요하다면 해당 epic을 생성한 story, 계기, 이유 등을 서술합니다. + +2. Outcomes +이 에픽을 통해 나타내고자 하는 결과를 간단히 설명합니다. 첨부할 설계/구조 혹은 예상 결과물이 있으면 첨부해도 좋습니다. + +--- +### Measure +1. Goal/Acceptance criteria +해당 에픽이 성취해야할 목표 혹은 성공했다고 수용할 수 있는 기준을 서술하십시오. + +2. Hypothesis +해당 에픽이 성공적으로 위의 목표를 달성하기 위한 대한 당신의 가설은 무엇입니까? 성공 여부를 측정하는 방법과 성공 여부를 팀이 알아야 할 선행 지표에 대해 설명합니다. + +--- diff --git a/.github/ISSUE_TEMPLATE/feature-suggest.md b/.github/ISSUE_TEMPLATE/feature-suggest.md deleted file mode 100644 index 1594b0c..0000000 --- a/.github/ISSUE_TEMPLATE/feature-suggest.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: Feature Suggest -about: Suggest an feature for PUE -title: 'Feat : Title' -labels: '' -assignees: '' - ---- - - -## Feature Info - - Person in charge : - - Definition : - - Timeline : - - ClickUp : [Task Name](https://clickup.url) - -## Description - -### Summary / Behavior - - -### Necessity - - -### Outcome - diff --git a/.github/ISSUE_TEMPLATE/feature-template.md b/.github/ISSUE_TEMPLATE/feature-template.md new file mode 100644 index 0000000..f4d4de3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-template.md @@ -0,0 +1,25 @@ +--- +name: Feature template +about: Describe this issue template's purpose here. +title: '' +labels: '' +assignees: '' + +--- +--- +--- +--- +### Feature Info +- Person in charge : +- Definition : +- Timeline : +--- +### Description +1. Summary/Behavior +이 Feature이 무엇인지 간략하게 설명하고, 어떻게 작동해야 하는지 서술합니다. + +2. Necessity +해당 Feature가 필요한 이유, Epic에 어떤 영향을 미치는 지 서술합니다. + +3. Outcomes +이 Feature을 통해 나타내고자 하는 결과를 간단히 설명합니다. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 847cb62..ec19edb 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,19 +1,19 @@ ## Description +- Describe your changes in detail -Fixes # (issue) - +## Related Issue +- This project only accepts pull requests related to open issues + - If suggesting a new feature or change, please discuss it in an issue first + - If fixing a bug, there should be an issue describing it with steps to reproduce + - Please link to the issue here: +## Motivation and Context +- Why is this change required? What problem does it solve? +- If it fixes an open issue, please link to the issue here. -### Type of change - +## How Has This Been Tested? +- Please describe in detail how you tested your changes. +- Include details of your testing environment, and the tests you ran to see how your change affects other areas of the code, etc. +## Screenshots -### Todo - - - -### ScreenShot - - -## For Reviewer - From cb9192b02208f7e50a332029d24b2a735b99b598 Mon Sep 17 00:00:00 2001 From: pangthing <100204819+pangthing@users.noreply.github.com> Date: Thu, 25 Aug 2022 17:31:07 +0900 Subject: [PATCH 012/102] docs: Update feature-template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feature-template에 대한 내용 변경 --- .github/ISSUE_TEMPLATE/feature-template.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/feature-template.md b/.github/ISSUE_TEMPLATE/feature-template.md index f4d4de3..27d4820 100644 --- a/.github/ISSUE_TEMPLATE/feature-template.md +++ b/.github/ISSUE_TEMPLATE/feature-template.md @@ -23,3 +23,14 @@ assignees: '' 3. Outcomes 이 Feature을 통해 나타내고자 하는 결과를 간단히 설명합니다. + +--- + +### Parent Epic +해당 feature를 포괄하는 상위 epic과 그 epic의 issue number를 기입하세요. + +Example) +[Epic] 마케팅 조사 +#1 + +--- From 6262ea6a310516b36973fc7041a26ab009c4fdf1 Mon Sep 17 00:00:00 2001 From: elbica Date: Fri, 26 Aug 2022 03:55:56 +0900 Subject: [PATCH 013/102] =?UTF-8?q?style:=20eslint,=20prettier=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - airbnb code convention - typescript, prettier, react, react-hooks 적용 --- front-end/.eslintrc.json | 35 ++++- front-end/application/chat/ChatService.ts | 57 ++++---- front-end/application/navigation/GNB.tsx | 110 +++++++------- .../navigation/NavigationProvider.tsx | 50 ++++--- .../application/navigation/QuickButton.tsx | 138 ++++++++++-------- front-end/application/navigation/index.tsx | 30 ++-- front-end/components/chat/Message.tsx | 89 ++++++----- front-end/components/chat/index.tsx | 119 +++++++-------- front-end/components/input/ChatInput.tsx | 79 +++++----- front-end/package.json | 22 +++ front-end/pages/_app.tsx | 24 +-- front-end/pages/chat/index.tsx | 46 +++--- front-end/pages/index.tsx | 8 +- 13 files changed, 453 insertions(+), 354 deletions(-) diff --git a/front-end/.eslintrc.json b/front-end/.eslintrc.json index d2a18fa..bbdd7a1 100644 --- a/front-end/.eslintrc.json +++ b/front-end/.eslintrc.json @@ -1,6 +1,35 @@ { - "extends": "next/core-web-vitals", + "env": { + "browser": true, + "es2021": true + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2021, + "project": "./tsconfig.json" + }, + "extends": [ + "plugin:prettier/recommended", + "airbnb-typescript", + "plugin:@typescript-eslint/recommended", + "plugin:react/recommended", + "plugin:react-hooks/recommended", + "plugin:import/recommended", + "plugin:jsx-a11y/recommended" + ], + "plugins": [ + "react", + "react-hooks", + "prettier" + ], "rules": { - "react/no-unescaped-entities": "off" - } + "react/no-unescaped-entities": "off", + "react/react-in-jsx-scope": "off" + }, + "settings": { + "import/resolver": { + "typescript": {} + } + }, + "ignorePatterns": ["*.js", "*.json"] } diff --git a/front-end/application/chat/ChatService.ts b/front-end/application/chat/ChatService.ts index a07fe05..d98242b 100644 --- a/front-end/application/chat/ChatService.ts +++ b/front-end/application/chat/ChatService.ts @@ -12,50 +12,49 @@ * - property : SocketClient, HttpClient */ interface User { - name: string; - photo: string; + name: string; + photo: string; } export interface MessageRes { - text: string; - writeAt?: Date; - user: User; + text: string; + writeAt?: Date; + user: User; } const MOCK_MESSAGE: MessageRes = { - text: "hello this is mock", - user: { - name: "PUE", - photo: "mock photo url" - } -} + text: 'hello this is mock', + user: { + name: 'PUE', + photo: 'mock photo url', + }, +}; const MOCK_SEND_MESSAGE: MessageRes = { - text: "hello?", - user: { - name: "YOU", - photo: "mock photo url" - } -} + text: 'hello?', + user: { + name: 'YOU', + photo: 'mock photo url', + }, +}; interface ChatRepository { - sendMessage(m: string): Promise; + sendMessage(m: string): Promise; } class ChatService { - addListener(cb: Function) { - } + addListener(cb: Function) {} - clear() { - } + clear() {} - sendMessage() { - } + sendMessage() {} - getMessageLog() { - const ret = Array(4).fill(null).map(() => MOCK_MESSAGE) - return ret.concat(MOCK_SEND_MESSAGE, MOCK_SEND_MESSAGE) - } + getMessageLog() { + const ret = Array(4) + .fill(null) + .map(() => MOCK_MESSAGE); + return ret.concat(MOCK_SEND_MESSAGE, MOCK_SEND_MESSAGE); + } } // singleton instance -export const chatService = new ChatService() \ No newline at end of file +export const chatService = new ChatService(); diff --git a/front-end/application/navigation/GNB.tsx b/front-end/application/navigation/GNB.tsx index d283bdc..8a6eca5 100644 --- a/front-end/application/navigation/GNB.tsx +++ b/front-end/application/navigation/GNB.tsx @@ -1,57 +1,67 @@ -import React, {useContext} from 'react' -import {ArrowBackOutlined, PersonOutlineOutlined} from "@mui/icons-material" -import {AppBar, Box, Button, IconButton, Toolbar, Typography, useScrollTrigger} from '@mui/material' -import Link from "next/link" -import {NavigationContext, SCREEN_NAME} from "./NavigationProvider" +import React, { useContext } from 'react'; +import { ArrowBackOutlined, PersonOutlineOutlined } from '@mui/icons-material'; +import { + AppBar, + Box, + Button, + IconButton, + Toolbar, + Typography, + useScrollTrigger, +} from '@mui/material'; +import Link from 'next/link'; +import { NavigationContext, SCREEN_NAME } from './NavigationProvider'; -function ElevationScroll({children}: { children: React.ReactElement }) { - const trigger = useScrollTrigger({ - disableHysteresis: true, - threshold: 0, - }) +function ElevationScroll({ children }: { children: React.ReactElement }) { + const trigger = useScrollTrigger({ + disableHysteresis: true, + threshold: 0, + }); - return React.cloneElement(children, { - elevation: trigger ? 4 : 0, - }) + return React.cloneElement(children, { + elevation: trigger ? 4 : 0, + }); } const Gnb = () => { - const [screenName, setScreenName] = useContext(NavigationContext) - return ( - - - - - { - screenName !== SCREEN_NAME.home && - - } - + const [screenName, setScreenName] = useContext(NavigationContext); + return ( + + + + + {screenName !== SCREEN_NAME.home && ( + + )} + - - - {screenName} - - - - setScreenName(SCREEN_NAME.profile)} - size="large" - color="inherit"> - - - - - - - - - ) -} + + + {screenName} + + + + setScreenName(SCREEN_NAME.profile)} + size="large" + color="inherit" + > + + + + + + + + + ); +}; -export default Gnb \ No newline at end of file +export default Gnb; diff --git a/front-end/application/navigation/NavigationProvider.tsx b/front-end/application/navigation/NavigationProvider.tsx index c7b25ed..3a2811b 100644 --- a/front-end/application/navigation/NavigationProvider.tsx +++ b/front-end/application/navigation/NavigationProvider.tsx @@ -1,35 +1,39 @@ -import React, {Dispatch, SetStateAction, useState} from 'react' -import {useRouter} from "next/router" +import React, { Dispatch, SetStateAction, useState } from 'react'; +import { useRouter } from 'next/router'; -type IScreenState = [string, Dispatch>] +type IScreenState = [string, Dispatch>]; -export const SCREEN_NAME: {[key: string]: string} = { - home: "PUE", - chat : "상담", - profile: "내 프로필", - calender: "감정 캘린더", - calendar: "감정 캘린더", -} +export const SCREEN_NAME: { [key: string]: string } = { + home: 'PUE', + chat: '상담', + profile: '내 프로필', + calender: '감정 캘린더', + calendar: '감정 캘린더', +}; /** * @todo * Context(Store)은 추후 infra로 이동 * 상태 관리 논의 필요 */ -export const NavigationContext = React.createContext([] as unknown as IScreenState) -NavigationContext.displayName = "NavigationContext"; +export const NavigationContext = React.createContext( + [] as unknown as IScreenState, +); +NavigationContext.displayName = 'NavigationContext'; type INavigationProvider = React.PropsWithChildren; -const NavigationProvider = ({children}: INavigationProvider) => { - const router = useRouter() - const screenInit = router.pathname.split('/').pop() - const screenState = useState(screenInit && SCREEN_NAME[screenInit] || SCREEN_NAME.home) +const NavigationProvider = ({ children }: INavigationProvider) => { + const router = useRouter(); + const screenInit = router.pathname.split('/').pop(); + const screenState = useState( + (screenInit && SCREEN_NAME[screenInit]) || SCREEN_NAME.home, + ); - return ( - - {children} - - ) -} + return ( + + {children} + + ); +}; -export default NavigationProvider \ No newline at end of file +export default NavigationProvider; diff --git a/front-end/application/navigation/QuickButton.tsx b/front-end/application/navigation/QuickButton.tsx index 95aa169..a3f4139 100644 --- a/front-end/application/navigation/QuickButton.tsx +++ b/front-end/application/navigation/QuickButton.tsx @@ -1,66 +1,88 @@ -import React, {useCallback, useContext, useState} from 'react' -import {Backdrop, Box, Fab} from "@mui/material" -import {Add, HomeOutlined, MessageOutlined, TodayOutlined} from '@mui/icons-material' -import Link from "next/link" -import {NavigationContext, SCREEN_NAME} from "./NavigationProvider" +import React, { useCallback, useContext, useState } from 'react'; +import { Backdrop, Box, Fab } from '@mui/material'; +import { + Add, + HomeOutlined, + MessageOutlined, + TodayOutlined, +} from '@mui/icons-material'; +import Link from 'next/link'; +import { NavigationContext, SCREEN_NAME } from './NavigationProvider'; const wrapStyle = { - display: 'flex', - flexWrap: "wrap", - width: 1, - height: 100, - justifyContent: "center", - alignItems: "flex-end", - justifySelf: "center", - position: "fixed", - bottom: 20 -} + display: 'flex', + flexWrap: 'wrap', + width: 1, + height: 100, + justifyContent: 'center', + alignItems: 'flex-end', + justifySelf: 'center', + position: 'fixed', + bottom: 20, +}; type IQuickButton = {}; const QuickButton = ({}: IQuickButton) => { - const [isOpen, setIsOpen] = useState(false) - const toggleOpen = () => setIsOpen(prev => !prev) - const [screenName, setScreenName] = useContext(NavigationContext) + const [isOpen, setIsOpen] = useState(false); + const toggleOpen = () => setIsOpen(prev => !prev); + const [screenName, setScreenName] = useContext(NavigationContext); - const handleQB = useCallback( - (name: string) => { - setScreenName(name) - setIsOpen(false) - }, - [setScreenName], - ) + const handleQB = useCallback( + (name: string) => { + setScreenName(name); + setIsOpen(false); + }, + [setScreenName], + ); - return ( - screenName !== SCREEN_NAME.chat ? - - - { - isOpen && - - - handleQB(SCREEN_NAME.home)}> - - - - - handleQB(SCREEN_NAME.chat)}> - - - - - handleQB(SCREEN_NAME.calendar)}> - - - - - } - - - - : null - ) -} + return screenName !== SCREEN_NAME.chat ? ( + + + {isOpen && ( + + + handleQB(SCREEN_NAME.home)} + > + + + + + handleQB(SCREEN_NAME.chat)} + > + + + + + handleQB(SCREEN_NAME.calendar)} + > + + + + + )} + + + + + ) : null; +}; -export default QuickButton \ No newline at end of file +export default QuickButton; diff --git a/front-end/application/navigation/index.tsx b/front-end/application/navigation/index.tsx index 33b4022..634350d 100644 --- a/front-end/application/navigation/index.tsx +++ b/front-end/application/navigation/index.tsx @@ -1,7 +1,7 @@ -import React from 'react' -import QuickButton from "./QuickButton" -import Gnb from "./GNB" -import NavigationProvider from "./NavigationProvider" +import React from 'react'; +import QuickButton from './QuickButton'; +import Gnb from './GNB'; +import NavigationProvider from './NavigationProvider'; /** * @todo @@ -10,15 +10,15 @@ import NavigationProvider from "./NavigationProvider" * provider : navigation local context 이므로 application에 위치 * UI : presentation이므로 component/navigation에 위치 */ -type INavigation = React.PropsWithChildren<{}> -const Navigation = ({children}: INavigation) => { - return ( - - - {children} - - - ) -} +type INavigation = React.PropsWithChildren<{}>; +const Navigation = ({ children }: INavigation) => { + return ( + + + {children} + + + ); +}; -export default Navigation \ No newline at end of file +export default Navigation; diff --git a/front-end/components/chat/Message.tsx b/front-end/components/chat/Message.tsx index 9dfa6ac..44c2ea0 100644 --- a/front-end/components/chat/Message.tsx +++ b/front-end/components/chat/Message.tsx @@ -1,48 +1,47 @@ -import React from 'react' -import {MessageRes} from "../../application/chat/ChatService" -import {Avatar, Box, Paper, Typography} from "@mui/material" +import React from 'react'; +import { MessageRes } from '../../application/chat/ChatService'; +import { Avatar, Box, Paper, Typography } from '@mui/material'; type IMessage = MessageRes; -export const MessageLeft = ({text}: IMessage) => { - return ( - - 퓨이 - - - 퓨이 - - - - {text} - - - - - ) -} -export const MessageRight = ({text}: IMessage) => { - return ( - - - - - {text} - - - - - ) -} - +export const MessageLeft = ({ text }: IMessage) => { + return ( + + 퓨이 + + 퓨이 + + {text} + + + + ); +}; +export const MessageRight = ({ text }: IMessage) => { + return ( + + + + {text} + + + + ); +}; diff --git a/front-end/components/chat/index.tsx b/front-end/components/chat/index.tsx index 57fcd5c..df57443 100644 --- a/front-end/components/chat/index.tsx +++ b/front-end/components/chat/index.tsx @@ -1,67 +1,72 @@ -import React, {useCallback, useEffect, useRef, useState} from 'react' -import {chatService, MessageRes} from "../../application/chat/ChatService" -import {MessageLeft, MessageRight} from "./Message" -import ChatInput from "../input/ChatInput" -import {Box} from "@mui/material" +import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { chatService, MessageRes } from '../../application/chat/ChatService'; +import { MessageLeft, MessageRight } from './Message'; +import ChatInput from '../input/ChatInput'; +import { Box } from '@mui/material'; type IChat = {}; const ChatContainer = ({}: IChat) => { + const [messages, setMessages] = useState([]); + const scrollRef = useRef(null); - const [messages, setMessages] = useState([]) - const scrollRef = useRef(null) + const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)); - const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)) - - const handleSendMessage = useCallback( - (message: string) => { - /** - * @todo - * create Message Domain - */ - const param: MessageRes = { - text: message, - user: {name: "sohee", photo: ""} - } - addMessage(param) + const handleSendMessage = useCallback((message: string) => { + /** + * @todo + * create Message Domain + */ + const param: MessageRes = { + text: message, + user: { name: 'sohee', photo: '' }, + }; + addMessage(param); - /** - * @todo - * send Message Domain to ChatService - */ - chatService.sendMessage() - }, - [], - ) + /** + * @todo + * send Message Domain to ChatService + */ + chatService.sendMessage(); + }, []); - useEffect(() => { - chatService.addListener(addMessage) - setMessages(chatService.getMessageLog()) - return () => chatService.clear() - }, []) + useEffect(() => { + chatService.addListener(addMessage); + setMessages(chatService.getMessageLog()); + return () => chatService.clear(); + }, []); - useEffect(() => { - if (scrollRef.current) { - scrollRef.current.scrollTop = scrollRef.current.scrollHeight - } - }, [messages]) + useEffect(() => { + if (scrollRef.current) { + scrollRef.current.scrollTop = scrollRef.current.scrollHeight; + } + }, [messages]); - /** - * @desc - * index key 는 권장하지 않지만, - * element 순서가 바뀌진 않으므로 사용한다. - */ - return ( - - - {messages.map((message, idx) => - message.user.name === "PUE" - ? - : )} - - - - ) -} + /** + * @desc + * index key 는 권장하지 않지만, + * element 순서가 바뀌진 않으므로 사용한다. + */ + return ( + + + {messages.map((message, idx) => + message.user.name === 'PUE' ? ( + + ) : ( + + ), + )} + + + + ); +}; -export default ChatContainer \ No newline at end of file +export default ChatContainer; diff --git a/front-end/components/input/ChatInput.tsx b/front-end/components/input/ChatInput.tsx index 9f8fc05..78ebd07 100644 --- a/front-end/components/input/ChatInput.tsx +++ b/front-end/components/input/ChatInput.tsx @@ -1,41 +1,50 @@ -import React, {useState} from 'react' -import {Box, IconButton, InputBase, Paper} from "@mui/material" -import {Send} from "@mui/icons-material" +import React, { useState } from 'react'; +import { Box, IconButton, InputBase, Paper } from '@mui/material'; +import { Send } from '@mui/icons-material'; type IInput = { handler: (m: string) => void }; -const ChatInput = ({handler}: IInput) => { - /** - * @desc - * Controlled Component - */ - const [text, setText] = useState('') - const onSubmit = (e: React.FormEvent) => { - e.preventDefault() - if(text === '') return +const ChatInput = ({ handler }: IInput) => { + /** + * @desc + * Controlled Component + */ + const [text, setText] = useState(''); + const onSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (text === '') return; - handler(text) - setText('') - } + handler(text); + setText(''); + }; - return ( - - - setText(e.target.value)} fullWidth - placeholder={"메세지를 입력해 주세요."}/> - - - - - - ) -} + return ( + + + setText(e.target.value)} + fullWidth + placeholder={'메세지를 입력해 주세요.'} + /> + + + + + + ); +}; -export default ChatInput \ No newline at end of file +export default ChatInput; diff --git a/front-end/package.json b/front-end/package.json index 909146c..7d6f932 100644 --- a/front-end/package.json +++ b/front-end/package.json @@ -25,11 +25,33 @@ "@types/react": "18.0.17", "@types/react-dom": "18.0.6", "@types/styled-components": "^5.1.26", + "@typescript-eslint/eslint-plugin": "^5.35.1", + "@typescript-eslint/parser": "^5.35.1", "autoprefixer": "^10.4.8", "eslint": "8.22.0", + "eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-next": "12.2.5", + "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.31.0", + "eslint-plugin-react-hooks": "^4.6.0", "postcss": "^8.4.16", "tailwindcss": "^3.1.8", "typescript": "4.7.4" + }, + "prettier": { + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "singleQuote": true, + "trailingComma": "all", + "bracketSpacing": true, + "arrowParens": "avoid", + "proseWrap": "never", + "endOfLine": "auto" } } diff --git a/front-end/pages/_app.tsx b/front-end/pages/_app.tsx index cd8ebbf..b7a0552 100644 --- a/front-end/pages/_app.tsx +++ b/front-end/pages/_app.tsx @@ -1,15 +1,15 @@ -import type {AppProps} from "next/app" -import "../styles/globals.css" -import Navigation from "../application/navigation" -import {CssBaseline} from "@mui/material" +import type { AppProps } from 'next/app'; +import '../styles/globals.css'; +import Navigation from '../application/navigation'; +import { CssBaseline } from '@mui/material'; -function App({Component, pageProps}: AppProps) { - return ( - - - - - ) +function App({ Component, pageProps }: AppProps) { + return ( + + + + + ); } -export default App +export default App; diff --git a/front-end/pages/chat/index.tsx b/front-end/pages/chat/index.tsx index c7a8dca..be7f330 100644 --- a/front-end/pages/chat/index.tsx +++ b/front-end/pages/chat/index.tsx @@ -1,15 +1,15 @@ -import type {NextPage} from "next" -import ChatContainer from "../../components/chat" -import {Container} from "@mui/material" -import {useLayoutEffect} from "react" +import type { NextPage } from 'next'; +import ChatContainer from '../../components/chat'; +import { Container } from '@mui/material'; +import { useLayoutEffect } from 'react'; export interface IChat { - isUser: boolean; - message: string; - date: Date; - option?: string; - emotion?: "Positive" | "Negative" | "Sad" | ""; - hasError: boolean; + isUser: boolean; + message: string; + date: Date; + option?: string; + emotion?: 'Positive' | 'Negative' | 'Sad' | ''; + hasError: boolean; } /** @@ -20,18 +20,18 @@ export interface IChat { */ const Chat: NextPage = () => { - useLayoutEffect(() => { - document.body.style.backgroundColor = 'mintcream' - return () => { - document.body.style.backgroundColor = 'white' - } - }, []) + useLayoutEffect(() => { + document.body.style.backgroundColor = 'mintcream'; + return () => { + document.body.style.backgroundColor = 'white'; + }; + }, []); - return ( - - - - ) -} + return ( + + + + ); +}; -export default Chat +export default Chat; diff --git a/front-end/pages/index.tsx b/front-end/pages/index.tsx index 8d4f227..5dd54e5 100644 --- a/front-end/pages/index.tsx +++ b/front-end/pages/index.tsx @@ -1,10 +1,10 @@ -import type {NextPage} from "next" +import type { NextPage } from 'next'; const Home: NextPage = () => { return ( -
-

I'm Home

-
+
+

I'm Home

+
); }; From 37faf7f63ed95e26a40f8179edc4770341c243d9 Mon Sep 17 00:00:00 2001 From: chanbyeongee <51030319+chanbyeongee@users.noreply.github.com> Date: Mon, 29 Aug 2022 12:58:03 +0900 Subject: [PATCH 014/102] Update issue templates --- .github/ISSUE_TEMPLATE/epic-template.md | 22 ++++++++++++++++------ .github/ISSUE_TEMPLATE/feature-template.md | 22 +++++++++++++++++----- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/epic-template.md b/.github/ISSUE_TEMPLATE/epic-template.md index 8852190..3986acb 100644 --- a/.github/ISSUE_TEMPLATE/epic-template.md +++ b/.github/ISSUE_TEMPLATE/epic-template.md @@ -1,11 +1,21 @@ --- name: Epic template about: If you want to create new epic, Describe it in this template -title: '' -labels: '' +title: "[EPIC]" +labels: epic assignees: '' --- + +--- +name: Epic template +about: If you want to create new epic, Describe it in this template +title: "[EPIC]" +labels: epic +assignees: '' + +--- + --- --- --- @@ -17,18 +27,18 @@ assignees: '' --- ### Description -1. Summary +- Summary 이 Epic이 무엇인지 간략하게 설명합니다. 만약 필요하다면 해당 epic을 생성한 story, 계기, 이유 등을 서술합니다. -2. Outcomes +- Outcomes 이 에픽을 통해 나타내고자 하는 결과를 간단히 설명합니다. 첨부할 설계/구조 혹은 예상 결과물이 있으면 첨부해도 좋습니다. --- ### Measure -1. Goal/Acceptance criteria +- Goal/Acceptance criteria 해당 에픽이 성취해야할 목표 혹은 성공했다고 수용할 수 있는 기준을 서술하십시오. -2. Hypothesis +- Hypothesis 해당 에픽이 성공적으로 위의 목표를 달성하기 위한 대한 당신의 가설은 무엇입니까? 성공 여부를 측정하는 방법과 성공 여부를 팀이 알아야 할 선행 지표에 대해 설명합니다. --- diff --git a/.github/ISSUE_TEMPLATE/feature-template.md b/.github/ISSUE_TEMPLATE/feature-template.md index 27d4820..068fa28 100644 --- a/.github/ISSUE_TEMPLATE/feature-template.md +++ b/.github/ISSUE_TEMPLATE/feature-template.md @@ -1,3 +1,12 @@ +--- +name: Feature template +about: Describe this issue template's purpose here. +title: "[Feature]" +labels: feature +assignees: '' + +--- + --- name: Feature template about: Describe this issue template's purpose here. @@ -9,19 +18,20 @@ assignees: '' --- --- --- + ### Feature Info - Person in charge : - Definition : - Timeline : --- ### Description -1. Summary/Behavior +- Summary/Behavior 이 Feature이 무엇인지 간략하게 설명하고, 어떻게 작동해야 하는지 서술합니다. -2. Necessity +- Necessity 해당 Feature가 필요한 이유, Epic에 어떤 영향을 미치는 지 서술합니다. -3. Outcomes +- Outcomes 이 Feature을 통해 나타내고자 하는 결과를 간단히 설명합니다. --- @@ -29,8 +39,10 @@ assignees: '' ### Parent Epic 해당 feature를 포괄하는 상위 epic과 그 epic의 issue number를 기입하세요. -Example) -[Epic] 마케팅 조사 +Example) + +[Epic] 마케팅 조사 + #1 --- From 385df4cb1976aa5408aaedafee9f5e760ac52b91 Mon Sep 17 00:00:00 2001 From: elbica Date: Wed, 31 Aug 2022 20:52:46 +0900 Subject: [PATCH 015/102] =?UTF-8?q?refactor:=20=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - src, public, style 으로 루트 폴더 구분 # feat : 새로운 기능 추가, 기존의 기능을 요구 사항에 맞추어 수정 # fix : 기능에 대한 버그 수정 # build : 빌드 관련 수정 # chore : 패키지 매니저 수정, 그 외 기타 수정 ex) .gitignore # ci : CI 관련 설정 수정 # docs : 문서(주석) 수정 # style : 코드 스타일, 포맷팅에 대한 수정 # refactor : 기능의 변화가 아닌 코드 리팩터링 ex) 변수 이름 변경 # test : 테스트 코드 추가/수정 # release : 버전 릴리즈 --- front-end/.eslintrc.json => .eslintrc.json | 0 front-end/.gitignore => .gitignore | 0 front-end/README.md => README.md | 0 .../package-lock.json => package-lock.json | 481 ++++++++++++++++-- front-end/package.json => package.json | 8 +- .../postcss.config.js => postcss.config.js | 0 {front-end/public => public}/favicon.ico | Bin {front-end/public => public}/vercel.svg | 0 .../application/chat/ChatService.ts | 0 .../application/navigation/GNB.tsx | 0 .../navigation/NavigationProvider.tsx | 0 .../application/navigation/QuickButton.tsx | 0 .../application/navigation/index.tsx | 0 .../components/chat/Message.tsx | 0 {front-end => src}/components/chat/index.tsx | 0 .../components/input/ChatInput.tsx | 0 {front-end => src}/components/layout.tsx | 0 {front-end => src}/pages/_app.tsx | 2 +- {front-end => src}/pages/calender/index.tsx | 0 {front-end => src}/pages/chat/index.tsx | 0 {front-end => src}/pages/index.tsx | 0 {front-end/styles => styles}/globals.css | 0 .../tailwind.config.js => tailwind.config.js | 0 front-end/tsconfig.json => tsconfig.json | 7 +- 24 files changed, 439 insertions(+), 59 deletions(-) rename front-end/.eslintrc.json => .eslintrc.json (100%) rename front-end/.gitignore => .gitignore (100%) rename front-end/README.md => README.md (100%) rename front-end/package-lock.json => package-lock.json (94%) rename front-end/package.json => package.json (88%) rename front-end/postcss.config.js => postcss.config.js (100%) rename {front-end/public => public}/favicon.ico (100%) rename {front-end/public => public}/vercel.svg (100%) rename {front-end => src}/application/chat/ChatService.ts (100%) rename {front-end => src}/application/navigation/GNB.tsx (100%) rename {front-end => src}/application/navigation/NavigationProvider.tsx (100%) rename {front-end => src}/application/navigation/QuickButton.tsx (100%) rename {front-end => src}/application/navigation/index.tsx (100%) rename {front-end => src}/components/chat/Message.tsx (100%) rename {front-end => src}/components/chat/index.tsx (100%) rename {front-end => src}/components/input/ChatInput.tsx (100%) rename {front-end => src}/components/layout.tsx (100%) rename {front-end => src}/pages/_app.tsx (90%) rename {front-end => src}/pages/calender/index.tsx (100%) rename {front-end => src}/pages/chat/index.tsx (100%) rename {front-end => src}/pages/index.tsx (100%) rename {front-end/styles => styles}/globals.css (100%) rename front-end/tailwind.config.js => tailwind.config.js (100%) rename front-end/tsconfig.json => tsconfig.json (80%) diff --git a/front-end/.eslintrc.json b/.eslintrc.json similarity index 100% rename from front-end/.eslintrc.json rename to .eslintrc.json diff --git a/front-end/.gitignore b/.gitignore similarity index 100% rename from front-end/.gitignore rename to .gitignore diff --git a/front-end/README.md b/README.md similarity index 100% rename from front-end/README.md rename to README.md diff --git a/front-end/package-lock.json b/package-lock.json similarity index 94% rename from front-end/package-lock.json rename to package-lock.json index 9d78c94..75df649 100644 --- a/front-end/package-lock.json +++ b/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "front-end", "version": "0.1.0", "dependencies": { "@emotion/react": "^11.10.0", @@ -23,9 +24,19 @@ "@types/react": "18.0.17", "@types/react-dom": "18.0.6", "@types/styled-components": "^5.1.26", + "@typescript-eslint/eslint-plugin": "^5.35.1", + "@typescript-eslint/parser": "^5.35.1", "autoprefixer": "^10.4.8", "eslint": "8.22.0", + "eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-next": "12.2.5", + "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-react": "^7.31.0", + "eslint-plugin-react-hooks": "^4.6.0", "postcss": "^8.4.16", "tailwindcss": "^3.1.8", "typescript": "4.7.4" @@ -1122,6 +1133,12 @@ "hoist-non-react-statics": "^3.3.0" } }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -1195,15 +1212,48 @@ "csstype": "^3.0.2" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz", + "integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/type-utils": "5.35.1", + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@typescript-eslint/parser": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz", - "integrity": "sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", + "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/typescript-estree": "5.33.1", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", "debug": "^4.3.4" }, "engines": { @@ -1223,13 +1273,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz", - "integrity": "sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", + "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1239,10 +1289,36 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz", + "integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@typescript-eslint/types": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz", - "integrity": "sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", + "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1253,13 +1329,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz", - "integrity": "sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", + "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1279,13 +1355,59 @@ } } }, + "node_modules/@typescript-eslint/utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz", + "integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz", - "integrity": "sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", + "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.33.1", + "@typescript-eslint/types": "5.35.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -1770,6 +1892,12 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -2119,6 +2247,49 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", + "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, "node_modules/eslint-config-next": { "version": "12.2.5", "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.2.5.tgz", @@ -2145,6 +2316,18 @@ } } }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -2300,10 +2483,31 @@ "semver": "bin/semver.js" } }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/eslint-plugin-react": { - "version": "7.30.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz", - "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==", + "version": "7.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.0.tgz", + "integrity": "sha512-BWriBttYYCnfb4RO9SB91Og8uA9CPcBMl5UlCOCtuYW1UjhN3QypzEcEHky4ZIRZDKjbO2Blh9BjP8E7W/b1SA==", "dev": true, "dependencies": { "array-includes": "^3.1.5", @@ -2492,6 +2696,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -3839,6 +4049,34 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -5326,6 +5564,12 @@ "hoist-non-react-statics": "^3.3.0" } }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -5399,42 +5643,70 @@ "csstype": "^3.0.2" } }, + "@typescript-eslint/eslint-plugin": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz", + "integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/type-utils": "5.35.1", + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, "@typescript-eslint/parser": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.33.1.tgz", - "integrity": "sha512-IgLLtW7FOzoDlmaMoXdxG8HOCByTBXrB1V2ZQYSEV1ggMmJfAkMWTwUjjzagS6OkfpySyhKFkBw7A9jYmcHpZA==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", + "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.33.1", - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/typescript-estree": "5.33.1", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz", - "integrity": "sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", + "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1" + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz", + "integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.35.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.33.1.tgz", - "integrity": "sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", + "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz", - "integrity": "sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", + "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.33.1", - "@typescript-eslint/visitor-keys": "5.33.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/visitor-keys": "5.35.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5442,13 +5714,45 @@ "tsutils": "^3.21.0" } }, + "@typescript-eslint/utils": { + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz", + "integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.35.1", + "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/typescript-estree": "5.35.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, "@typescript-eslint/visitor-keys": { - "version": "5.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz", - "integrity": "sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==", + "version": "5.35.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", + "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.33.1", + "@typescript-eslint/types": "5.35.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -5777,6 +6081,12 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -6050,6 +6360,35 @@ "v8-compile-cache": "^2.0.3" } }, + "eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "eslint-config-airbnb-typescript": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", + "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", + "dev": true, + "requires": { + "eslint-config-airbnb-base": "^15.0.0" + } + }, "eslint-config-next": { "version": "12.2.5", "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.2.5.tgz", @@ -6067,6 +6406,13 @@ "eslint-plugin-react-hooks": "^4.5.0" } }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, "eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -6197,10 +6543,19 @@ } } }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, "eslint-plugin-react": { - "version": "7.30.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz", - "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==", + "version": "7.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.0.tgz", + "integrity": "sha512-BWriBttYYCnfb4RO9SB91Og8uA9CPcBMl5UlCOCtuYW1UjhN3QypzEcEHky4ZIRZDKjbO2Blh9BjP8E7W/b1SA==", "dev": true, "requires": { "array-includes": "^3.1.5", @@ -6334,6 +6689,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, "fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -7259,6 +7620,22 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "peer": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/front-end/package.json b/package.json similarity index 88% rename from front-end/package.json rename to package.json index 7d6f932..80014d0 100644 --- a/front-end/package.json +++ b/package.json @@ -3,10 +3,10 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" + "dev": "src/node_modules/.bin/next dev", + "build": "src/node_modules/.bin/next build", + "start": "src/node_modules/.bin/next start", + "lint": "src/node_modules/.bin/next lint" }, "dependencies": { "@emotion/react": "^11.10.0", diff --git a/front-end/postcss.config.js b/postcss.config.js similarity index 100% rename from front-end/postcss.config.js rename to postcss.config.js diff --git a/front-end/public/favicon.ico b/public/favicon.ico similarity index 100% rename from front-end/public/favicon.ico rename to public/favicon.ico diff --git a/front-end/public/vercel.svg b/public/vercel.svg similarity index 100% rename from front-end/public/vercel.svg rename to public/vercel.svg diff --git a/front-end/application/chat/ChatService.ts b/src/application/chat/ChatService.ts similarity index 100% rename from front-end/application/chat/ChatService.ts rename to src/application/chat/ChatService.ts diff --git a/front-end/application/navigation/GNB.tsx b/src/application/navigation/GNB.tsx similarity index 100% rename from front-end/application/navigation/GNB.tsx rename to src/application/navigation/GNB.tsx diff --git a/front-end/application/navigation/NavigationProvider.tsx b/src/application/navigation/NavigationProvider.tsx similarity index 100% rename from front-end/application/navigation/NavigationProvider.tsx rename to src/application/navigation/NavigationProvider.tsx diff --git a/front-end/application/navigation/QuickButton.tsx b/src/application/navigation/QuickButton.tsx similarity index 100% rename from front-end/application/navigation/QuickButton.tsx rename to src/application/navigation/QuickButton.tsx diff --git a/front-end/application/navigation/index.tsx b/src/application/navigation/index.tsx similarity index 100% rename from front-end/application/navigation/index.tsx rename to src/application/navigation/index.tsx diff --git a/front-end/components/chat/Message.tsx b/src/components/chat/Message.tsx similarity index 100% rename from front-end/components/chat/Message.tsx rename to src/components/chat/Message.tsx diff --git a/front-end/components/chat/index.tsx b/src/components/chat/index.tsx similarity index 100% rename from front-end/components/chat/index.tsx rename to src/components/chat/index.tsx diff --git a/front-end/components/input/ChatInput.tsx b/src/components/input/ChatInput.tsx similarity index 100% rename from front-end/components/input/ChatInput.tsx rename to src/components/input/ChatInput.tsx diff --git a/front-end/components/layout.tsx b/src/components/layout.tsx similarity index 100% rename from front-end/components/layout.tsx rename to src/components/layout.tsx diff --git a/front-end/pages/_app.tsx b/src/pages/_app.tsx similarity index 90% rename from front-end/pages/_app.tsx rename to src/pages/_app.tsx index b7a0552..63adbf8 100644 --- a/front-end/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,5 +1,5 @@ import type { AppProps } from 'next/app'; -import '../styles/globals.css'; +import '../../styles/globals.css'; import Navigation from '../application/navigation'; import { CssBaseline } from '@mui/material'; diff --git a/front-end/pages/calender/index.tsx b/src/pages/calender/index.tsx similarity index 100% rename from front-end/pages/calender/index.tsx rename to src/pages/calender/index.tsx diff --git a/front-end/pages/chat/index.tsx b/src/pages/chat/index.tsx similarity index 100% rename from front-end/pages/chat/index.tsx rename to src/pages/chat/index.tsx diff --git a/front-end/pages/index.tsx b/src/pages/index.tsx similarity index 100% rename from front-end/pages/index.tsx rename to src/pages/index.tsx diff --git a/front-end/styles/globals.css b/styles/globals.css similarity index 100% rename from front-end/styles/globals.css rename to styles/globals.css diff --git a/front-end/tailwind.config.js b/tailwind.config.js similarity index 100% rename from front-end/tailwind.config.js rename to tailwind.config.js diff --git a/front-end/tsconfig.json b/tsconfig.json similarity index 80% rename from front-end/tsconfig.json rename to tsconfig.json index 99710e8..d3ff3ca 100644 --- a/front-end/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,9 @@ "jsx": "preserve", "incremental": true }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": [ + "src/node_modules" + ] } From ee4622cfa78ea6be496a1115a9d6c1ce44b8f96b Mon Sep 17 00:00:00 2001 From: elbica Date: Fri, 2 Sep 2022 02:32:11 +0900 Subject: [PATCH 016/102] =?UTF-8?q?feat=20:=20=EC=B1=84=ED=8C=85=20?= =?UTF-8?q?=EB=B9=84=EC=A6=88=EB=8B=88=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=84=A4=EA=B3=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - domain, resource, repository, service, apiAdapter 작성 - http, socket client mock 작성 --- front-end/next.config.js => next.config.js | 4 +- src/application/chat/ChatService.ts | 69 ++++++++++------------ src/components/chat/index.tsx | 20 +++---- src/domain/chat/Chat.ts | 52 ++++++++++++++++ src/domain/chat/ChatRepository.ts | 15 +++++ src/infra/chat/ChatApi.ts | 33 +++++++++++ src/infra/chat/ChatResource.ts | 37 ++++++++++++ src/infra/client/HttpClient.ts | 43 ++++++++++++++ src/infra/client/SocketClient.ts | 14 +++++ src/utils/mock.ts | 16 +++++ 10 files changed, 249 insertions(+), 54 deletions(-) rename front-end/next.config.js => next.config.js (76%) create mode 100644 src/domain/chat/Chat.ts create mode 100644 src/domain/chat/ChatRepository.ts create mode 100644 src/infra/chat/ChatApi.ts create mode 100644 src/infra/chat/ChatResource.ts create mode 100644 src/infra/client/HttpClient.ts create mode 100644 src/infra/client/SocketClient.ts create mode 100644 src/utils/mock.ts diff --git a/front-end/next.config.js b/next.config.js similarity index 76% rename from front-end/next.config.js rename to next.config.js index ae88795..3d3bc99 100644 --- a/front-end/next.config.js +++ b/next.config.js @@ -2,6 +2,6 @@ const nextConfig = { reactStrictMode: true, swcMinify: true, -} +}; -module.exports = nextConfig +module.exports = nextConfig; diff --git a/src/application/chat/ChatService.ts b/src/application/chat/ChatService.ts index d98242b..bf3bafa 100644 --- a/src/application/chat/ChatService.ts +++ b/src/application/chat/ChatService.ts @@ -1,16 +1,7 @@ -/** - * User (domain) - * - * MessageRes (domain) - * - message, writeAt, user:User, (추가 가능) - * - * ChatService (application) - * - property : ChatRepository - * - 가공 로직 - * - * ChatResource (infra) - * - property : SocketClient, HttpClient - */ +import { ChatRepository } from '../../domain/chat/ChatRepository'; +import chatResource from '../../infra/chat/ChatResource'; +import { MOCK_MESSAGE } from '../../utils/mock'; + interface User { name: string; photo: string; @@ -22,39 +13,39 @@ export interface MessageRes { user: User; } -const MOCK_MESSAGE: MessageRes = { - text: 'hello this is mock', - user: { - name: 'PUE', - photo: 'mock photo url', - }, -}; -const MOCK_SEND_MESSAGE: MessageRes = { - text: 'hello?', - user: { - name: 'YOU', - photo: 'mock photo url', - }, -}; - -interface ChatRepository { - sendMessage(m: string): Promise; -} - class ChatService { - addListener(cb: Function) {} - - clear() {} + private listeners = []; + + constructor( + private chatRepository: ChatRepository, + private userRepository: Record = {}, + ) {} + + /** + * @todo + * listener 처리 + * user domain, repository, resource 생성 + */ + addListener(cb: (...args: any[]) => any) {} + + clear() { + this.listeners = []; + } - sendMessage() {} + async sendChat(message: string) { + const chat = await this.chatRepository.sendChat(message, 0); + return chat; + } - getMessageLog() { + async getChatLog() { const ret = Array(4) .fill(null) .map(() => MOCK_MESSAGE); - return ret.concat(MOCK_SEND_MESSAGE, MOCK_SEND_MESSAGE); + + const logs = await this.chatRepository.getChatLog(0); + return ret; } } // singleton instance -export const chatService = new ChatService(); +export const chatService = new ChatService(chatResource); diff --git a/src/components/chat/index.tsx b/src/components/chat/index.tsx index df57443..29f40b9 100644 --- a/src/components/chat/index.tsx +++ b/src/components/chat/index.tsx @@ -11,27 +11,21 @@ const ChatContainer = ({}: IChat) => { const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)); - const handleSendMessage = useCallback((message: string) => { + const handleSendMessage = useCallback(async (message: string) => { /** * @todo - * create Message Domain + * select type MessageRes? Chat? */ - const param: MessageRes = { - text: message, - user: { name: 'sohee', photo: '' }, - }; - addMessage(param); + const { + properties: { message: text, date, userId }, + } = await chatService.sendChat(message); - /** - * @todo - * send Message Domain to ChatService - */ - chatService.sendMessage(); + addMessage({ text, user: { name: 'sohee', photo: '' } }); }, []); useEffect(() => { chatService.addListener(addMessage); - setMessages(chatService.getMessageLog()); + (async () => setMessages(await chatService.getChatLog()))(); return () => chatService.clear(); }, []); diff --git a/src/domain/chat/Chat.ts b/src/domain/chat/Chat.ts new file mode 100644 index 0000000..5138673 --- /dev/null +++ b/src/domain/chat/Chat.ts @@ -0,0 +1,52 @@ +/** + * @desc + * 도메인 객체는 외부로부터 변경 불가능 해야 합니다. + * 도메인 객체의 생성, 변경, 접근 방법은 단 한 가지 뿐입니다. + * + * 도메인 메서드로 도메인 객체의 속성을 변경할 수 있습니다. + * 오직 Repository 만 도메인 메서드를 사용할 수 있습니다. + * + */ +export type ChatDirection = 'send' | 'receive'; + +export interface ChatProperties { + id: number; + userId: number; + date: string; + direction: ChatDirection; + message: string; +} + +export class Chat { + /** + * + * @param message 메세지 내용 + * @param direction 송수신 방향 + * @param date 날짜 YYYYMMDDHHMMSS + * @param id 메세지 id + * @param userId 유저 id + * @private + */ + private constructor( + private readonly message: string, + private readonly direction: ChatDirection, + private readonly date: string, + private readonly id: number, + private readonly userId: number, + ) {} + + static fromProperties(properties: ChatProperties) { + const { message, direction, date, id, userId } = properties; + return new Chat(message, direction, date, id, userId); + } + + get properties() { + return { + message: this.message, + direction: this.direction, + date: this.date, + id: this.id, + userId: this.userId, + }; + } +} diff --git a/src/domain/chat/ChatRepository.ts b/src/domain/chat/ChatRepository.ts new file mode 100644 index 0000000..eb3387a --- /dev/null +++ b/src/domain/chat/ChatRepository.ts @@ -0,0 +1,15 @@ +import { Chat } from './Chat'; + +/** + * @desc + * Repository는 interface 이므로 실제 구현은 infra 에서 진행합니다. + * interface만 잘 구현 된다면, domain이 어떤 플랫폼에 있던지 제대로 동작해야 합니다. + * + * 항상 domain 개체(또는 void)를 반환합니다. + */ + +export interface ChatRepository { + sendChat(message: string, userId: number): Promise; + receiveChat(userId: number): Promise; + getChatLog(userId: number): Promise; +} diff --git a/src/infra/chat/ChatApi.ts b/src/infra/chat/ChatApi.ts new file mode 100644 index 0000000..e1ea858 --- /dev/null +++ b/src/infra/chat/ChatApi.ts @@ -0,0 +1,33 @@ +import { Chat, ChatDirection } from '../../domain/chat/Chat'; + +/** + * Socket Message를 Chat Domain 형식으로 변환 합니다. + */ +export class ChatApi { + /** + * + * @param message 메세지 내용 + * @param direction 송수신 방향 + * @param date 날짜 YYYYMMDDHHMMSS + * @param id 메세지 id + * @param userId 유저 id + * @private + */ + constructor( + public readonly message: string, + public readonly direction: ChatDirection, + public readonly date: string, + public readonly id: number, + public readonly userId: number, + ) {} + + toDomain(): Chat { + return Chat.fromProperties({ + message: this.message, + direction: this.direction, + date: this.date, + id: this.id, + userId: this.userId, + }); + } +} diff --git a/src/infra/chat/ChatResource.ts b/src/infra/chat/ChatResource.ts new file mode 100644 index 0000000..8e7ab9c --- /dev/null +++ b/src/infra/chat/ChatResource.ts @@ -0,0 +1,37 @@ +import { ChatRepository } from '../../domain/chat/ChatRepository'; +import { Chat } from '../../domain/chat/Chat'; +import { ChatApi } from './ChatApi'; +import httpClient, { HttpClient } from '../client/HttpClient'; +import socketClient, { SocketClient } from '../client/SocketClient'; + +export class ChatResource implements ChatRepository { + /** + * @todo + * chat 상태 관리 + * http, socket mock 제거 + */ + private store = {}; + + constructor( + private readonly http: HttpClient, + private socket: SocketClient, + ) {} + + async getChatLog(userId: number): Promise { + const chatLogApi = await this.http.get('MOCK'); + const chatLog = chatLogApi.map(api => api.toDomain()); + return chatLog; + } + + async receiveChat(userId: number): Promise { + const socketChat = await this.socket.mock(); + return socketChat.toDomain(); + } + + async sendChat(message: string, userId: number): Promise { + const socketChat = await this.socket.mock(); + return socketChat.toDomain(); + } +} + +export default new ChatResource(httpClient, socketClient); diff --git a/src/infra/client/HttpClient.ts b/src/infra/client/HttpClient.ts new file mode 100644 index 0000000..d91e1fe --- /dev/null +++ b/src/infra/client/HttpClient.ts @@ -0,0 +1,43 @@ +/** + * @todo + * axios로 재작성 + */ +export class HttpClient { + private base = 'MOCK_BASE'; + + async get(url: string): Promise { + const response = await fetch(`${this.base}/${url}`); + const ret = await response.json(); + return ret; + } + + async post( + url: string, + data: DataType, + ): Promise { + const response = await fetch(url, { + method: 'POST', + body: JSON.stringify(data), + }); + const ret = await response.json(); + return ret; + } + + async patch( + url: string, + data: DataType, + ): Promise { + const response = await fetch(url, { + method: 'PATCH', + body: JSON.stringify(data), + }); + const ret = await response.json(); + return ret; + } + + async delete(url: string): Promise { + await fetch(url, { method: 'DELETE' }); + } +} + +export default new HttpClient(); diff --git a/src/infra/client/SocketClient.ts b/src/infra/client/SocketClient.ts new file mode 100644 index 0000000..1bea322 --- /dev/null +++ b/src/infra/client/SocketClient.ts @@ -0,0 +1,14 @@ +/** + * @todo + * socket connection + */ + +export class SocketClient { + async mock(...args: any[]): Promise { + const response = await fetch('MOCK'); + const ret = await response.json(); + return ret; + } +} + +export default new SocketClient(); diff --git a/src/utils/mock.ts b/src/utils/mock.ts new file mode 100644 index 0000000..dc7832a --- /dev/null +++ b/src/utils/mock.ts @@ -0,0 +1,16 @@ +import { MessageRes } from '../application/chat/ChatService'; + +export const MOCK_MESSAGE: MessageRes = { + text: 'hello this is mock', + user: { + name: 'PUE', + photo: 'mock photo url', + }, +}; +export const MOCK_SEND_MESSAGE: MessageRes = { + text: 'hello?', + user: { + name: 'YOU', + photo: 'mock photo url', + }, +}; From 4ac871a57492c61f0a9f57db2a9b66c897773db9 Mon Sep 17 00:00:00 2001 From: elbica Date: Sat, 3 Sep 2022 01:52:30 +0900 Subject: [PATCH 017/102] =?UTF-8?q?feat=20:=20Socket=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=20=ED=86=B5=EC=8B=A0=20=EB=A1=9C=EC=A7=81=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 채팅, 소켓 통신과 관련한 비즈니스 로직 수정 - 연동 후 테스트 필요 - UI, Domain, API 간 변환하는 adaptor 클래스 작성 - GNB height 수정 --- package-lock.json | 133 ++++++++++++++++++ package.json | 9 +- src/application/chat/Adaptor.ts | 62 ++++++++ src/application/chat/ChatService.ts | 40 +++--- src/components/chat/Message.tsx | 4 +- src/components/chat/index.tsx | 26 ++-- .../navigation/GNB.tsx | 9 +- .../navigation/NavigationProvider.tsx | 0 .../navigation/QuickButton.tsx | 3 +- .../navigation/index.tsx | 9 +- src/domain/chat/Chat.ts | 16 +-- src/domain/chat/ChatRepository.ts | 10 +- src/domain/chat/ChatTypes.ts | 18 +++ src/infra/chat/ChatApi.ts | 55 ++++---- src/infra/chat/ChatResource.ts | 28 ++-- src/infra/client/HttpClient.ts | 1 + src/infra/client/SocketClient.ts | 25 ++-- src/pages/_app.tsx | 2 +- src/pages/chat/index.tsx | 4 +- src/utils/mock.ts | 6 +- 20 files changed, 343 insertions(+), 117 deletions(-) create mode 100644 src/application/chat/Adaptor.ts rename src/{application => components}/navigation/GNB.tsx (91%) rename src/{application => components}/navigation/NavigationProvider.tsx (100%) rename src/{application => components}/navigation/QuickButton.tsx (96%) rename src/{application => components}/navigation/index.tsx (56%) create mode 100644 src/domain/chat/ChatTypes.ts diff --git a/package-lock.json b/package-lock.json index 75df649..b1547fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "next": "12.2.5", "react": "18.2.0", "react-dom": "18.2.0", + "socket.io-client": "^4.5.1", "styled-components": "^5.3.5", "styled-reset": "^4.4.2" }, @@ -1104,6 +1105,11 @@ "integrity": "sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==", "dev": true }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, "node_modules/@swc/helpers": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", @@ -2100,6 +2106,26 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, + "node_modules/engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4369,6 +4395,32 @@ "node": ">=8" } }, + "node_modules/socket.io-client": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", + "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -4830,6 +4882,34 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -5538,6 +5618,11 @@ "integrity": "sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==", "dev": true }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, "@swc/helpers": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", @@ -6243,6 +6328,23 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, + "engine.io-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", + "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -7829,6 +7931,26 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "socket.io-client": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", + "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.1", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -8146,6 +8268,17 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 80014d0..9e9737b 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,10 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "src/node_modules/.bin/next dev", - "build": "src/node_modules/.bin/next build", - "start": "src/node_modules/.bin/next start", - "lint": "src/node_modules/.bin/next lint" + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" }, "dependencies": { "@emotion/react": "^11.10.0", @@ -17,6 +17,7 @@ "next": "12.2.5", "react": "18.2.0", "react-dom": "18.2.0", + "socket.io-client": "^4.5.1", "styled-components": "^5.3.5", "styled-reset": "^4.4.2" }, diff --git a/src/application/chat/Adaptor.ts b/src/application/chat/Adaptor.ts new file mode 100644 index 0000000..a5c9ad3 --- /dev/null +++ b/src/application/chat/Adaptor.ts @@ -0,0 +1,62 @@ +import { Chat } from '../../domain/chat/Chat'; + +/** + * @todo + * create User Domain, Repository, Resource, Service + */ +interface User { + name: string; + photo: string; +} + +export interface Message { + text: string; + writeAt?: Date; + user: User; +} + +export class MessageAdaptor { + constructor(private readonly userRepository: Record = {}) {} + + /** + * @todo + * User Resource inject + * MOCK remove + */ + + fromText(text: string): Message { + return { + text, + writeAt: new Date(), + user: { + name: 'MOCK', + photo: 'MOCK', + }, + }; + } + + toMessage(chat: Chat): Message { + const { message, direction, date, id, userId } = chat.properties; + return { + text: message, + writeAt: new Date(date), + user: { + name: 'MOCK', + photo: 'MOCK', + }, + }; + } + + toChat(message: Message): Chat { + return Chat.fromProperties({ + id: 0, + userId: 0, + userName: message.user.name, + date: 'MOCK', + message: message.text, + direction: 'send', + }); + } +} + +export default new MessageAdaptor(); diff --git a/src/application/chat/ChatService.ts b/src/application/chat/ChatService.ts index bf3bafa..b78797d 100644 --- a/src/application/chat/ChatService.ts +++ b/src/application/chat/ChatService.ts @@ -1,23 +1,12 @@ import { ChatRepository } from '../../domain/chat/ChatRepository'; import chatResource from '../../infra/chat/ChatResource'; -import { MOCK_MESSAGE } from '../../utils/mock'; - -interface User { - name: string; - photo: string; -} - -export interface MessageRes { - text: string; - writeAt?: Date; - user: User; -} +import { MOCK_MESSAGE, MOCK_SEND_MESSAGE } from '../../utils/mock'; +import adaptor, { Message, MessageAdaptor } from './Adaptor'; class ChatService { - private listeners = []; - constructor( private chatRepository: ChatRepository, + private messageAdaptor: MessageAdaptor, private userRepository: Record = {}, ) {} @@ -25,27 +14,34 @@ class ChatService { * @todo * listener 처리 * user domain, repository, resource 생성 + * import absolute path 설정 */ - addListener(cb: (...args: any[]) => any) {} + addListener(cb: (message: Message) => any) { + this.chatRepository.connect(); + this.chatRepository.receiveChat(chat => + cb(this.messageAdaptor.toMessage(chat)), + ); + } clear() { - this.listeners = []; + this.chatRepository.disConnect(); } - async sendChat(message: string) { - const chat = await this.chatRepository.sendChat(message, 0); - return chat; + sendChat(message: Message) { + this.chatRepository.sendChat(this.messageAdaptor.toChat(message)); } async getChatLog() { const ret = Array(4) .fill(null) - .map(() => MOCK_MESSAGE); + .map(() => MOCK_MESSAGE) + .concat(MOCK_SEND_MESSAGE); - const logs = await this.chatRepository.getChatLog(0); + // const logs = await this.chatRepository.getChatLog(0); + // const temp = logs.map(chat => this.messageAdaptor.toMessage(chat)); return ret; } } // singleton instance -export const chatService = new ChatService(chatResource); +export const chatService = new ChatService(chatResource, adaptor); diff --git a/src/components/chat/Message.tsx b/src/components/chat/Message.tsx index 44c2ea0..ec56c17 100644 --- a/src/components/chat/Message.tsx +++ b/src/components/chat/Message.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { MessageRes } from '../../application/chat/ChatService'; import { Avatar, Box, Paper, Typography } from '@mui/material'; +import { Message } from '../../application/chat/Adaptor'; -type IMessage = MessageRes; +type IMessage = Message; export const MessageLeft = ({ text }: IMessage) => { return ( diff --git a/src/components/chat/index.tsx b/src/components/chat/index.tsx index 29f40b9..3eb0b51 100644 --- a/src/components/chat/index.tsx +++ b/src/components/chat/index.tsx @@ -1,31 +1,29 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { chatService, MessageRes } from '../../application/chat/ChatService'; +import { chatService } from '../../application/chat/ChatService'; import { MessageLeft, MessageRight } from './Message'; import ChatInput from '../input/ChatInput'; import { Box } from '@mui/material'; +import messageAdaptor, { Message } from '../../application/chat/Adaptor'; -type IChat = {}; -const ChatContainer = ({}: IChat) => { - const [messages, setMessages] = useState([]); +const ChatContainer = () => { + const [messages, setMessages] = useState([]); const scrollRef = useRef(null); - const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)); + const addMessage = (m: Message) => setMessages(prev => prev.concat(m)); - const handleSendMessage = useCallback(async (message: string) => { - /** - * @todo - * select type MessageRes? Chat? - */ - const { - properties: { message: text, date, userId }, - } = await chatService.sendChat(message); + const handleSendMessage = useCallback(async (m: string) => { + const message = messageAdaptor.fromText(m); - addMessage({ text, user: { name: 'sohee', photo: '' } }); + chatService.sendChat(message); + + addMessage(message); }, []); useEffect(() => { chatService.addListener(addMessage); + (async () => setMessages(await chatService.getChatLog()))(); + return () => chatService.clear(); }, []); diff --git a/src/application/navigation/GNB.tsx b/src/components/navigation/GNB.tsx similarity index 91% rename from src/application/navigation/GNB.tsx rename to src/components/navigation/GNB.tsx index 8a6eca5..43d5082 100644 --- a/src/application/navigation/GNB.tsx +++ b/src/components/navigation/GNB.tsx @@ -27,8 +27,13 @@ const Gnb = () => { const [screenName, setScreenName] = useContext(NavigationContext); return ( - - + + {screenName !== SCREEN_NAME.home && ( + )} + + + + + {screenName} + + + + setScreenName(SCREEN_NAME.profile)} + size="large" + color="inherit" + > + + + + + + + + + ); +}; + +export default Gnb; diff --git a/front-end/src/application/navigation/NavigationProvider.tsx b/front-end/src/application/navigation/NavigationProvider.tsx new file mode 100644 index 0000000..3a2811b --- /dev/null +++ b/front-end/src/application/navigation/NavigationProvider.tsx @@ -0,0 +1,39 @@ +import React, { Dispatch, SetStateAction, useState } from 'react'; +import { useRouter } from 'next/router'; + +type IScreenState = [string, Dispatch>]; + +export const SCREEN_NAME: { [key: string]: string } = { + home: 'PUE', + chat: '상담', + profile: '내 프로필', + calender: '감정 캘린더', + calendar: '감정 캘린더', +}; + +/** + * @todo + * Context(Store)은 추후 infra로 이동 + * 상태 관리 논의 필요 + */ +export const NavigationContext = React.createContext( + [] as unknown as IScreenState, +); +NavigationContext.displayName = 'NavigationContext'; + +type INavigationProvider = React.PropsWithChildren; +const NavigationProvider = ({ children }: INavigationProvider) => { + const router = useRouter(); + const screenInit = router.pathname.split('/').pop(); + const screenState = useState( + (screenInit && SCREEN_NAME[screenInit]) || SCREEN_NAME.home, + ); + + return ( + + {children} + + ); +}; + +export default NavigationProvider; diff --git a/front-end/src/application/navigation/QuickButton.tsx b/front-end/src/application/navigation/QuickButton.tsx new file mode 100644 index 0000000..77ab094 --- /dev/null +++ b/front-end/src/application/navigation/QuickButton.tsx @@ -0,0 +1,88 @@ +import React, { useCallback, useContext, useState } from 'react'; +import { Backdrop, Box, Fab } from '@mui/material'; +import { + Add, + HomeOutlined, + MessageOutlined, + TodayOutlined, +} from '@mui/icons-material'; +import Link from 'next/link'; +import { NavigationContext, SCREEN_NAME } from './NavigationProvider'; + +const wrapStyle = { + display: 'flex', + flexWrap: 'wrap', + width: 1, + height: 100, + justifyContent: 'center', + alignItems: 'flex-end', + justifySelf: 'center', + position: 'fixed', + bottom: 20, +}; + +type IQuickButton = {}; +const QuickButton = ({}: IQuickButton) => { + const [isOpen, setIsOpen] = useState(false); + const toggleOpen = () => setIsOpen(prev => !prev); + const [screenName, setScreenName] = useContext(NavigationContext); + + const handleQB = useCallback( + (name: string) => { + setScreenName(name); + setIsOpen(false); + }, + [setScreenName], + ); + + return screenName !== SCREEN_NAME.chat ? ( + + + {isOpen && ( + + + handleQB(SCREEN_NAME.home)} + > + + + + + handleQB(SCREEN_NAME.chat)} + > + + + + + handleQB(SCREEN_NAME.calendar)} + > + + + + + )} + + + + + ) : null; +}; + +export default QuickButton; diff --git a/front-end/src/application/navigation/index.tsx b/front-end/src/application/navigation/index.tsx new file mode 100644 index 0000000..634350d --- /dev/null +++ b/front-end/src/application/navigation/index.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import QuickButton from './QuickButton'; +import Gnb from './GNB'; +import NavigationProvider from './NavigationProvider'; + +/** + * @todo + * navigationProvider 제외, component/navigation 으로 이동 + * + * provider : navigation local context 이므로 application에 위치 + * UI : presentation이므로 component/navigation에 위치 + */ +type INavigation = React.PropsWithChildren<{}>; +const Navigation = ({ children }: INavigation) => { + return ( + + + {children} + + + ); +}; + +export default Navigation; diff --git a/front-end/src/components/character/index.tsx b/front-end/src/components/character/index.tsx new file mode 100644 index 0000000..52adc7b --- /dev/null +++ b/front-end/src/components/character/index.tsx @@ -0,0 +1,27 @@ +import * as React from 'react'; +import { Box } from '@mui/material'; +import CharacterMessage from './message'; + +/** + * + * @returns Container (Character Box, Message Box) + */ +const CharacterContainer = () => { + return ( + + + + + ); +}; + +export default CharacterContainer; diff --git a/front-end/src/components/character/message.tsx b/front-end/src/components/character/message.tsx new file mode 100644 index 0000000..344cc3c --- /dev/null +++ b/front-end/src/components/character/message.tsx @@ -0,0 +1,33 @@ +import { Paper } from '@mui/material'; +import React from 'react'; + +interface CharacterMessage { + isFirst?: boolean; + message: string; + userName: string; +} + +/** + * @todo + * interface 수정 + * 서버에서 message를 사용자의 데이터에 따라 message를 받아오게 + */ +const CharacterMessage = ({ isFirst, message, userName }: CharacterMessage) => { + return ( + + Hello! My name is PUE! + + ); +}; + +export default CharacterMessage; diff --git a/front-end/src/components/chat/Message.tsx b/front-end/src/components/chat/Message.tsx new file mode 100644 index 0000000..44c2ea0 --- /dev/null +++ b/front-end/src/components/chat/Message.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { MessageRes } from '../../application/chat/ChatService'; +import { Avatar, Box, Paper, Typography } from '@mui/material'; + +type IMessage = MessageRes; + +export const MessageLeft = ({ text }: IMessage) => { + return ( + + 퓨이 + + 퓨이 + + {text} + + + + ); +}; +export const MessageRight = ({ text }: IMessage) => { + return ( + + + + {text} + + + + ); +}; diff --git a/front-end/src/components/chat/index.tsx b/front-end/src/components/chat/index.tsx new file mode 100644 index 0000000..df57443 --- /dev/null +++ b/front-end/src/components/chat/index.tsx @@ -0,0 +1,72 @@ +import React, { useCallback, useEffect, useRef, useState } from 'react'; +import { chatService, MessageRes } from '../../application/chat/ChatService'; +import { MessageLeft, MessageRight } from './Message'; +import ChatInput from '../input/ChatInput'; +import { Box } from '@mui/material'; + +type IChat = {}; +const ChatContainer = ({}: IChat) => { + const [messages, setMessages] = useState([]); + const scrollRef = useRef(null); + + const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)); + + const handleSendMessage = useCallback((message: string) => { + /** + * @todo + * create Message Domain + */ + const param: MessageRes = { + text: message, + user: { name: 'sohee', photo: '' }, + }; + addMessage(param); + + /** + * @todo + * send Message Domain to ChatService + */ + chatService.sendMessage(); + }, []); + + useEffect(() => { + chatService.addListener(addMessage); + setMessages(chatService.getMessageLog()); + return () => chatService.clear(); + }, []); + + useEffect(() => { + if (scrollRef.current) { + scrollRef.current.scrollTop = scrollRef.current.scrollHeight; + } + }, [messages]); + + /** + * @desc + * index key 는 권장하지 않지만, + * element 순서가 바뀌진 않으므로 사용한다. + */ + return ( + + + {messages.map((message, idx) => + message.user.name === 'PUE' ? ( + + ) : ( + + ), + )} + + + + ); +}; + +export default ChatContainer; diff --git a/front-end/src/components/diary/Emotion.tsx b/front-end/src/components/diary/Emotion.tsx new file mode 100644 index 0000000..9d372c2 --- /dev/null +++ b/front-end/src/components/diary/Emotion.tsx @@ -0,0 +1,16 @@ +import { Box, Typography } from '@mui/material'; +import { padding } from '@mui/system'; +import { DayEmotion } from '../../application/diary/DayResults'; + +/** + * + * emoji 대신 그림 추가 + * */ +type IEmotion = DayEmotion; +export const Emotion = ({ emotion }: IEmotion) => { + return ( + + {emotion === '기쁨' ? '😀' : '불안' ? '😰' : null} + + ); +}; diff --git a/front-end/src/components/diary/index.tsx b/front-end/src/components/diary/index.tsx new file mode 100644 index 0000000..0483adf --- /dev/null +++ b/front-end/src/components/diary/index.tsx @@ -0,0 +1,59 @@ +import { Box, Typography } from '@mui/material'; +import moment from 'moment'; +import dynamic from 'next/dynamic'; +import { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { DayEmotion, getDayEmotion } from '../../application/diary/DayResults'; +import { Emotion } from './Emotion'; +const Calendar = dynamic(() => import('react-calendar'), { ssr: false }); + +/** + * @todos + * 1. Calendar Css 수정 필요 (img 들어가게) + * 2. 서버로 부터 해당 일에 대한 감정, 채팅 내역을 불러 오게 + */ + +const EmotionContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; +const Diary = () => { + const [value, setDate] = useState(new Date()); + const [emotions, setEmotions] = useState([]); + useEffect(() => { + setEmotions(getDayEmotion()); + }, []); + + return ( + + moment(date).format('D')} + value={value} + onChange={setDate} + minDetail="month" + maxDetail="month" + showNeighboringMonth={false} + locale="ENG" + tileContent={({ date }) => { + return ( + + {emotions.map(x => + x.chatDay === moment(date).format('YYYY-MM-DD') ? ( + <> + + + ) : ( + <> + ), + )} + + ); + }} + /> + {value.toDateString()} + + ); +}; + +export default Diary; diff --git a/front-end/src/components/input/ChatInput.tsx b/front-end/src/components/input/ChatInput.tsx new file mode 100644 index 0000000..78ebd07 --- /dev/null +++ b/front-end/src/components/input/ChatInput.tsx @@ -0,0 +1,50 @@ +import React, { useState } from 'react'; +import { Box, IconButton, InputBase, Paper } from '@mui/material'; +import { Send } from '@mui/icons-material'; + +type IInput = { handler: (m: string) => void }; + +const ChatInput = ({ handler }: IInput) => { + /** + * @desc + * Controlled Component + */ + const [text, setText] = useState(''); + const onSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (text === '') return; + + handler(text); + setText(''); + }; + + return ( + + + setText(e.target.value)} + fullWidth + placeholder={'메세지를 입력해 주세요.'} + /> + + + + + + ); +}; + +export default ChatInput; diff --git a/front-end/src/pages/_app.tsx b/front-end/src/pages/_app.tsx new file mode 100644 index 0000000..c2830e5 --- /dev/null +++ b/front-end/src/pages/_app.tsx @@ -0,0 +1,21 @@ +import type { AppProps } from 'next/app'; +<<<<<<< HEAD:src/pages/_app.tsx +import '../../styles/globals.css'; +import '../../styles/calendar.css'; +======= +import '../styles/globals.css'; +import '../styles/calendar.css'; +>>>>>>> c7a78574735642dea61b1ef5e7cc35aa58a145f1:front-end/src/pages/_app.tsx +import Navigation from '../application/navigation'; +import { CssBaseline } from '@mui/material'; + +function App({ Component, pageProps }: AppProps) { + return ( + + + + + ); +} + +export default App; diff --git a/front-end/src/pages/calendar/index.tsx b/front-end/src/pages/calendar/index.tsx new file mode 100644 index 0000000..a74e190 --- /dev/null +++ b/front-end/src/pages/calendar/index.tsx @@ -0,0 +1,17 @@ +import type { NextPage } from 'next'; +import { Container } from '@mui/material'; +import styled from 'styled-components'; +import CharacterContainer from '../../components/character'; +import Diary from '../../components/diary'; +import MultiSeries from '../../application/chart/MultiSeries'; +const Chart = styled.div``; +const CalendarPage: NextPage = () => { + return ( + + + + + ); +}; + +export default CalendarPage; diff --git a/front-end/src/pages/chat/index.tsx b/front-end/src/pages/chat/index.tsx new file mode 100644 index 0000000..be7f330 --- /dev/null +++ b/front-end/src/pages/chat/index.tsx @@ -0,0 +1,37 @@ +import type { NextPage } from 'next'; +import ChatContainer from '../../components/chat'; +import { Container } from '@mui/material'; +import { useLayoutEffect } from 'react'; + +export interface IChat { + isUser: boolean; + message: string; + date: Date; + option?: string; + emotion?: 'Positive' | 'Negative' | 'Sad' | ''; + hasError: boolean; +} + +/** + * @desc 채팅 서비스 + * 말풍선, 선택지, 입력 UI, layout - application + * 채팅 메세지 전달 - domain + * socket 통신 담당 - infra + */ + +const Chat: NextPage = () => { + useLayoutEffect(() => { + document.body.style.backgroundColor = 'mintcream'; + return () => { + document.body.style.backgroundColor = 'white'; + }; + }, []); + + return ( + + + + ); +}; + +export default Chat; diff --git a/front-end/src/pages/index.tsx b/front-end/src/pages/index.tsx new file mode 100644 index 0000000..5dd54e5 --- /dev/null +++ b/front-end/src/pages/index.tsx @@ -0,0 +1,11 @@ +import type { NextPage } from 'next'; + +const Home: NextPage = () => { + return ( +
+

I'm Home

+
+ ); +}; + +export default Home; diff --git a/front-end/styles/calendar.css b/front-end/styles/calendar.css new file mode 100644 index 0000000..b593630 --- /dev/null +++ b/front-end/styles/calendar.css @@ -0,0 +1,186 @@ +.react-calendar { + width: 350px; + max-width: 100%; + background: white; + font-family: Arial, Helvetica, sans-serif; + line-height: 1.125em; +} +.react-calendar--doubleView { + width: 700px; +} +.react-calendar--doubleView .react-calendar__viewContainer { + display: flex; + margin: -0.5em; +} +.react-calendar--doubleView .react-calendar__viewContainer > * { + width: 50%; + margin: 0.5em; +} +.react-calendar, +.react-calendar *, +.react-calendar *:before, +.react-calendar *:after { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + /*padding: 3px 1.5px 2px 1.5px;*/ +} +.react-calendar button { + margin: 0; + border: 0; + outline: none; +} +.react-calendar button:enabled:hover { + cursor: pointer; +} + +/* navigation */ +.react-calendar__navigation { + display: flex; + height: 42px; + margin-bottom: -1.5em; +} + +/* navigation title box */ +.react-calendar__navigation button:disabled { + background-color: white; +} +.react-calendar__navigation button { + min-width: 44px; + background: none; +} +/* navigation label title */ +.react-calendar__navigation__label__labelText { + color: black; + font-size: 20px; +} +/* navigation 2 arrow */ +.react-calendar__navigation__prev2-button { + display: none; +} +.react-calendar__navigation__next2-button { + display: none; +} +.react-calendar__navigation button:enabled:hover, +.react-calendar__navigation button:enabled:focus { + background-color: none; +} + +/* calendar container*/ +.react-calendar__viewContainer { + max-width: 100%; +} +/* month container */ +.react-calendar__month-view { + border: 1px solid #76baff; + border-radius: 5%; + margin-top: 30px; +} +/* weekdays */ +.react-calendar__month-view__weekdays { + max-width: 100%; + justify-content: space-between; + text-align: center; + text-transform: uppercase; + font-weight: bold; + font-size: 1em; + border-bottom: 1px solid #76baff; + margin-bottom: 10px; +} +.react-calendar__month-view__weekdays__weekday { + padding: 0.5em; +} +.react-calendar__month-view__weekNumbers .react-calendar__tile { + display: flex; + align-items: center; + justify-content: center; + font-size: 0.75em; + font-weight: bold; +} +.react-calendar__month-view__days__day--weekend { + color: #d10000; +} +.react-calendar__month-view__days__day--neighboringMonth { + color: #757575; +} +.react-calendar__year-view .react-calendar__tile, +.react-calendar__decade-view .react-calendar__tile, +.react-calendar__century-view .react-calendar__tile { + padding: 2em 0.5em; +} + +/* days container */ +.react-calendar__month-view__days { + display: flex; +} +/* calendar days */ +.react-calendar__tile { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + max-width: 100%; + padding: 6.66667px 7px 0px; + font-size: 1em; + height: 64px; + background: none; + text-align: start; + /* border: 1px solid rgba(133, 133, 133, 0.25); */ +} + +.react-calendar__tile abbr { + align-self: flex-start; +} +/* calendar date disalbed*/ +.react-calendar__tile:disabled { + background-color: #f0f0f0; +} +.react-calendar__tile:enabled:hover, +.react-calendar__tile:enabled:focus { + box-shadow: 0 0 0 1px rgb(133, 133, 133) inset; + border-radius: 10%; +} + +/* calendar date today */ +.react-calendar__tile--now { + background: #ffff76; + border-radius: 10%; +} +.react-calendar__tile--now:enabled:hover, +.react-calendar__tile--now:enabled:focus { + background: #ffffa9; +} + +/* ~ */ +.react-calendar__tile--hasActive { + background: #76baff; +} +.react-calendar__tile--hasActive:enabled:hover, +.react-calendar__tile--hasActive:enabled:focus { + background: #a9d4ff; +} + +/* calendar date active*/ +.react-calendar__tile--active { + background: #006edc; + border-radius: 10%; + color: white; +} +.react-calendar__tile--active:enabled:hover, +.react-calendar__tile--active:enabled:focus { + background: #1087ff; +} +.react-calendar--selectRange .react-calendar__tile--hover { + background-color: #e6e6e6; +} + +/* dot */ +.dot { + height: 8px; + width: 8px; + background-color: #f87171; + border-radius: 50%; + display: flex; + margin-left: 1px; +} diff --git a/package-lock.json b/package-lock.json index 75df649..0c34c52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,4870 +1,8 @@ { "name": "front-end", "version": "0.1.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "front-end", - "version": "0.1.0", - "dependencies": { - "@emotion/react": "^11.10.0", - "@emotion/styled": "^11.10.0", - "@mui/icons-material": "^5.8.4", - "@mui/material": "^5.10.1", - "@tailwindcss/forms": "^0.5.2", - "next": "12.2.5", - "react": "18.2.0", - "react-dom": "18.2.0", - "styled-components": "^5.3.5", - "styled-reset": "^4.4.2" - }, - "devDependencies": { - "@types/node": "18.7.8", - "@types/react": "18.0.17", - "@types/react-dom": "18.0.6", - "@types/styled-components": "^5.1.26", - "@typescript-eslint/eslint-plugin": "^5.35.1", - "@typescript-eslint/parser": "^5.35.1", - "autoprefixer": "^10.4.8", - "eslint": "8.22.0", - "eslint-config-airbnb-typescript": "^17.0.0", - "eslint-config-next": "12.2.5", - "eslint-config-prettier": "^8.5.0", - "eslint-import-resolver-typescript": "^2.7.1", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.6.1", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.31.0", - "eslint-plugin-react-hooks": "^4.6.0", - "postcss": "^8.4.16", - "tailwindcss": "^3.1.8", - "typescript": "4.7.4" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", - "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", - "dependencies": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", - "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", - "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", - "dev": true, - "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", - "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.11", - "@babel/types": "^7.18.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", - "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@emotion/babel-plugin": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.0.tgz", - "integrity": "sha512-xVnpDAAbtxL1dsuSelU5A7BnY/lftws0wUexNJZTPsvX/1tM4GZJbclgODhvW4E+NH7E5VFcH0bBn30NvniPJA==", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.17.12", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.0", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.0.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@emotion/cache": { - "version": "11.10.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.1.tgz", - "integrity": "sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A==", - "dependencies": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.0.13" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", - "dependencies": { - "@emotion/memoize": "^0.8.0" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" - }, - "node_modules/@emotion/react": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.0.tgz", - "integrity": "sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/cache": "^11.10.0", - "@emotion/serialize": "^1.1.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz", - "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==", - "dependencies": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/serialize/node_modules/@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" - }, - "node_modules/@emotion/sheet": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", - "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" - }, - "node_modules/@emotion/styled": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.0.tgz", - "integrity": "sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA==", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.0", - "@emotion/utils": "^1.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "node_modules/@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "node_modules/@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.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" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true, - "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/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@mui/base": { - "version": "5.0.0-alpha.93", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.93.tgz", - "integrity": "sha512-IVUWO0NNlELDc9FD7mM+fWTS1/6n5sJYdIbXpLQ00NjWdVEYmTyRgUAZDlJJJrz+tbF0eeffx0kOsvJvyTZlsA==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@emotion/is-prop-valid": "^1.1.3", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", - "@popperjs/core": "^2.11.6", - "clsx": "^1.2.1", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/base/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/@mui/core-downloads-tracker": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.1.tgz", - "integrity": "sha512-zyzLkVSqi+WuxG8UZrrOaWbhHkDK+MlHFjLpL+vqUVU6iSUaDYREu1xoLWEQsWOznT4oT2iEiGZLpQLgkn+WiA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - } - }, - "node_modules/@mui/icons-material": { - "version": "5.8.4", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz", - "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==", - "dependencies": { - "@babel/runtime": "^7.17.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@mui/material": "^5.0.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/material": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.1.tgz", - "integrity": "sha512-E9fhskX6TwUdAzpL5+yoAzRxb6wY4oBqmBVlgUuLndSwPRYxXoGu+z74NxbDEkxUoHdb7vrDcRTswpB6ykDITQ==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.93", - "@mui/core-downloads-tracker": "^5.10.1", - "@mui/system": "^5.10.1", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", - "@types/react-transition-group": "^4.4.5", - "clsx": "^1.2.1", - "csstype": "^3.1.0", - "prop-types": "^15.8.1", - "react-is": "^18.2.0", - "react-transition-group": "^4.4.5" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/material/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/@mui/private-theming": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.9.3.tgz", - "integrity": "sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@mui/utils": "^5.9.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/styled-engine": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.1.tgz", - "integrity": "sha512-xiQp6wvSLpMcRCOExbRSvkHf6gIQ/eeK7mx/Re6BtPPYIx6OerPwia+23uVIop/k4Bs5D+w7Rv2yXYJxo5rMSQ==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@emotion/cache": "^11.9.3", - "csstype": "^3.1.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } - } - }, - "node_modules/@mui/system": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.1.tgz", - "integrity": "sha512-Ix8LVAMtVrNtmncK0yc5llHWlZKCm9okbw8QMnWbI5UH+nI9qhtf+Aure4p5ei6dGKdil++lukar/GxCjfzRSg==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@mui/private-theming": "^5.9.3", - "@mui/styled-engine": "^5.10.1", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", - "clsx": "^1.2.1", - "csstype": "^3.1.0", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/types": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.5.tgz", - "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==", - "peerDependencies": { - "@types/react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@mui/utils": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.9.3.tgz", - "integrity": "sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@types/prop-types": "^15.7.5", - "@types/react-is": "^16.7.1 || ^17.0.0", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" - }, - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0" - } - }, - "node_modules/@mui/utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/@next/env": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.5.tgz", - "integrity": "sha512-vLPLV3cpPGjUPT3PjgRj7e3nio9t6USkuew3JE/jMeon/9Mvp1WyR18v3iwnCuX7eUAm1HmAbJHHLAbcu/EJcw==" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.5.tgz", - "integrity": "sha512-VBjVbmqEzGiOTBq4+wpeVXt/KgknnGB6ahvC/AxiIGnN93/RCSyXhFRI4uSfftM2Ba3w7ZO7076bfKasZsA0fw==", - "dev": true, - "dependencies": { - "glob": "7.1.7" - } - }, - "node_modules/@next/eslint-plugin-next/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.5.tgz", - "integrity": "sha512-cPWClKxGhgn2dLWnspW+7psl3MoLQUcNqJqOHk2BhNcou9ARDtC0IjQkKe5qcn9qg7I7U83Gp1yh2aesZfZJMA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.5.tgz", - "integrity": "sha512-vMj0efliXmC5b7p+wfcQCX0AfU8IypjkzT64GiKJD9PgiA3IILNiGJr1fw2lyUDHkjeWx/5HMlMEpLnTsQslwg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.5.tgz", - "integrity": "sha512-VOPWbO5EFr6snla/WcxUKtvzGVShfs302TEMOtzYyWni6f9zuOetijJvVh9CCTzInnXAZMtHyNhefijA4HMYLg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.5.tgz", - "integrity": "sha512-5o8bTCgAmtYOgauO/Xd27vW52G2/m3i5PX7MUYePquxXAnX73AAtqA3WgPXBRitEB60plSKZgOTkcpqrsh546A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-freebsd-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.5.tgz", - "integrity": "sha512-yYUbyup1JnznMtEBRkK4LT56N0lfK5qNTzr6/DEyDw5TbFVwnuy2hhLBzwCBkScFVjpFdfiC6SQAX3FrAZzuuw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.5.tgz", - "integrity": "sha512-2ZE2/G921Acks7UopJZVMgKLdm4vN4U0yuzvAMJ6KBavPzqESA2yHJlm85TV/K9gIjKhSk5BVtauIUntFRP8cg==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.5.tgz", - "integrity": "sha512-/I6+PWVlz2wkTdWqhlSYYJ1pWWgUVva6SgX353oqTh8njNQp1SdFQuWDqk8LnM6ulheVfSsgkDzxrDaAQZnzjQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.5.tgz", - "integrity": "sha512-LPQRelfX6asXyVr59p5sTpx5l+0yh2Vjp/R8Wi4X9pnqcayqT4CUJLiHqCvZuLin3IsFdisJL0rKHMoaZLRfmg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.5.tgz", - "integrity": "sha512-0szyAo8jMCClkjNK0hknjhmAngUppoRekW6OAezbEYwHXN/VNtsXbfzgYOqjKWxEx3OoAzrT3jLwAF0HdX2MEw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.5.tgz", - "integrity": "sha512-zg/Y6oBar1yVnW6Il1I/08/2ukWtOG6s3acdJdEyIdsCzyQi4RLxbbhkD/EGQyhqBvd3QrC6ZXQEXighQUAZ0g==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.5.tgz", - "integrity": "sha512-3/90DRNSqeeSRMMEhj4gHHQlLhhKg5SCCoYfE3kBjGpE63EfnblYUqsszGGZ9ekpKL/R4/SGB40iCQr8tR5Jiw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.5.tgz", - "integrity": "sha512-hGLc0ZRAwnaPL4ulwpp4D2RxmkHQLuI8CFOEEHdzZpS63/hMVzv81g8jzYA0UXbb9pus/iTc3VRbVbAM03SRrw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.5.tgz", - "integrity": "sha512-7h5/ahY7NeaO2xygqVrSG/Y8Vs4cdjxIjowTZ5W6CKoTKn7tmnuxlUc2h74x06FKmbhAd9agOjr/AOKyxYYm9Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "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==", - "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==", - "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==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz", - "integrity": "sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==", - "dev": true - }, - "node_modules/@swc/helpers": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", - "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/forms": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.2.tgz", - "integrity": "sha512-pSrFeJB6Bg1Mrg9CdQW3+hqZXAKsBrSG9MAfFLKy1pVA4Mb4W7C0k7mEhlmS2Dfo/otxrQOET7NJiJ9RrS563w==", - "dependencies": { - "mini-svg-data-uri": "^1.2.3" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" - } - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dev": true, - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.7.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.8.tgz", - "integrity": "sha512-/YP55EMK2341JkODUb8DM9O0x1SIz2aBvyF33Uf1c76St3VpsMXEIW0nxuKkq/5cxnbz0RD9cfwNZHEAZQD3ag==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "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==" - }, - "node_modules/@types/react": { - "version": "18.0.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz", - "integrity": "sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", - "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-is": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "node_modules/@types/styled-components": { - "version": "5.1.26", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz", - "integrity": "sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==", - "dev": true, - "dependencies": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz", - "integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/type-utils": "5.35.1", - "@typescript-eslint/utils": "5.35.1", - "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", - "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/typescript-estree": "5.35.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", - "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/visitor-keys": "5.35.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz", - "integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.35.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", - "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", - "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/visitor-keys": "5.35.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz", - "integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/typescript-estree": "5.35.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", - "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.35.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-node/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "engines": { - "node": ">=0.4.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/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "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/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "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.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", - "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.3", - "caniuse-lite": "^1.0.30001373", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true - }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/babel-plugin-styled-components": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", - "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11", - "picomatch": "^2.3.0" - }, - "peerDependencies": { - "styled-components": ">= 2" - } - }, - "node_modules/babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" - }, - "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/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001379", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001379.tgz", - "integrity": "sha512-zXf+qxuN8OJrK5Bl5HbJg8cc5/Zm01WNW4ooVWUh92YlKqQZW3fwN5lXLB+kI8wkP5vTWkIIN+rutZuJhf4ykw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "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/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } - }, - "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==" - }, - "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/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/core-js-pure": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", - "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "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/css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/css-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", - "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "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==", - "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.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "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/defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "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/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.225", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.225.tgz", - "integrity": "sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz", - "integrity": "sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "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.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "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-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-config-airbnb-typescript": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", - "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", - "dev": true, - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3" - } - }, - "node_modules/eslint-config-next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.2.5.tgz", - "integrity": "sha512-SOowilkqPzW6DxKp3a3SYlrfPi5Ajs9MIzp9gVfUDxxH9QFM5ElkR1hX5m/iICJuvCbWgQqFBiA3mCMozluniw==", - "dev": true, - "dependencies": { - "@next/eslint-plugin-next": "12.2.5", - "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.21.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^2.7.1", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.5.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "glob": "^7.2.0", - "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/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-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", - "minimatch": "^3.1.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.0.tgz", - "integrity": "sha512-BWriBttYYCnfb4RO9SB91Og8uA9CPcBMl5UlCOCtuYW1UjhN3QypzEcEHky4ZIRZDKjbO2Blh9BjP8E7W/b1SA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.5", - "array.prototype.flatmap": "^1.3.0", - "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.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.1", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.7" - }, - "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/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-plugin-react/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/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "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-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "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/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "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/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "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==", - "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==" - }, - "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/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "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.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "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==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "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==", - "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-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/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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==", - "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.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "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-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "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==", - "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==", - "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": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "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-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-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/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/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dev": true, - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "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/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "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": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "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/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", - "bin": { - "mini-svg-data-uri": "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/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "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==" - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "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/next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-12.2.5.tgz", - "integrity": "sha512-tBdjqX5XC/oFs/6gxrZhjmiq90YWizUYU6qOWAfat7zJwrwapJ+BYgX2PmiacunXMaRpeVT4vz5MSPSLgNkrpA==", - "dependencies": { - "@next/env": "12.2.5", - "@swc/helpers": "0.4.3", - "caniuse-lite": "^1.0.30001332", - "postcss": "8.4.14", - "styled-jsx": "5.0.4", - "use-sync-external-store": "1.2.0" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=12.22.0" - }, - "optionalDependencies": { - "@next/swc-android-arm-eabi": "12.2.5", - "@next/swc-android-arm64": "12.2.5", - "@next/swc-darwin-arm64": "12.2.5", - "@next/swc-darwin-x64": "12.2.5", - "@next/swc-freebsd-x64": "12.2.5", - "@next/swc-linux-arm-gnueabihf": "12.2.5", - "@next/swc-linux-arm64-gnu": "12.2.5", - "@next/swc-linux-arm64-musl": "12.2.5", - "@next/swc-linux-x64-gnu": "12.2.5", - "@next/swc-linux-x64-musl": "12.2.5", - "@next/swc-win32-arm64-msvc": "12.2.5", - "@next/swc-win32-ia32-msvc": "12.2.5", - "@next/swc-win32-x64-msvc": "12.2.5" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^17.0.2 || ^18.0.0-0", - "react-dom": "^17.0.2 || ^18.0.0-0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "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.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "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.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "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==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dependencies": { - "postcss-selector-parser": "^6.0.6" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "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/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "peer": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.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==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "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==", - "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/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==" - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "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==", - "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==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "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": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "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/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "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-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/styled-components": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz", - "integrity": "sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==", - "hasInstallScript": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^1.1.0", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/styled-components" - }, - "peerDependencies": { - "react": ">= 16.8.0", - "react-dom": ">= 16.8.0", - "react-is": ">= 16.8.0" - } - }, - "node_modules/styled-components/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/styled-components/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/styled-jsx": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", - "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/styled-reset": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/styled-reset/-/styled-reset-4.4.2.tgz", - "integrity": "sha512-VzVhEZHpO/CD/F5ZllqTAY+GTaKlNDZt5mTrtPf/kXZSe85+wMkhRIiPARgvCP9/HQMk+ZGaEWk1IkdP2SYAUQ==", - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "type": "ko-fi", - "url": "https://ko-fi.com/zacanger" - }, - "peerDependencies": { - "styled-components": ">=4.0.0 || >=5.0.0" - } - }, - "node_modules/stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" - }, - "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==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", - "dependencies": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "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/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "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/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "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/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": 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/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "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": { "@babel/code-frame": { "version": "7.18.6", @@ -5082,9 +220,9 @@ } }, "@emotion/babel-plugin": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.0.tgz", - "integrity": "sha512-xVnpDAAbtxL1dsuSelU5A7BnY/lftws0wUexNJZTPsvX/1tM4GZJbclgODhvW4E+NH7E5VFcH0bBn30NvniPJA==", + "version": "11.10.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz", + "integrity": "sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==", "requires": { "@babel/helper-module-imports": "^7.16.7", "@babel/plugin-syntax-jsx": "^7.17.12", @@ -5101,9 +239,9 @@ } }, "@emotion/cache": { - "version": "11.10.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.1.tgz", - "integrity": "sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A==", + "version": "11.10.3", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz", + "integrity": "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==", "requires": { "@emotion/memoize": "^0.8.0", "@emotion/sheet": "^1.2.0", @@ -5131,14 +269,15 @@ "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" }, "@emotion/react": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.0.tgz", - "integrity": "sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ==", + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", + "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", "requires": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.10.0", "@emotion/cache": "^11.10.0", "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", "@emotion/utils": "^1.2.0", "@emotion/weak-memoize": "^0.3.0", "hoist-non-react-statics": "^3.3.1" @@ -5169,14 +308,15 @@ "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" }, "@emotion/styled": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.0.tgz", - "integrity": "sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA==", + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", + "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", "requires": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.10.0", "@emotion/is-prop-valid": "^1.2.0", "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", "@emotion/utils": "^1.2.0" } }, @@ -5190,6 +330,11 @@ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==" + }, "@emotion/utils": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", @@ -5275,14 +420,14 @@ } }, "@mui/base": { - "version": "5.0.0-alpha.93", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.93.tgz", - "integrity": "sha512-IVUWO0NNlELDc9FD7mM+fWTS1/6n5sJYdIbXpLQ00NjWdVEYmTyRgUAZDlJJJrz+tbF0eeffx0kOsvJvyTZlsA==", - "requires": { - "@babel/runtime": "^7.17.2", - "@emotion/is-prop-valid": "^1.1.3", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", + "version": "5.0.0-alpha.95", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.95.tgz", + "integrity": "sha512-fcxnDeO7rBwzP0buVdI5fn0aA7NQ/AeUV5RzIIH0kOXVVT21HB4JFf41Qhwd0PIq63PXxmc6Fs2mdlzMYuPo9g==", + "requires": { + "@babel/runtime": "^7.18.9", + "@emotion/is-prop-valid": "^1.2.0", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.3", "@popperjs/core": "^2.11.6", "clsx": "^1.2.1", "prop-types": "^15.8.1", @@ -5297,29 +442,29 @@ } }, "@mui/core-downloads-tracker": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.1.tgz", - "integrity": "sha512-zyzLkVSqi+WuxG8UZrrOaWbhHkDK+MlHFjLpL+vqUVU6iSUaDYREu1xoLWEQsWOznT4oT2iEiGZLpQLgkn+WiA==" + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.3.tgz", + "integrity": "sha512-mX2S0d1oboKBbWQqWIgRmyALAEzh37yiknpD3mKx8bcoMKbp1VtqzIt0aeHP16Uhsd0eValDFILxLNHWi0oddQ==" }, "@mui/icons-material": { - "version": "5.8.4", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz", - "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==", + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.3.tgz", + "integrity": "sha512-o0kbUlsWCBtCE0wP33cGKbyryCh7kpm2EECYMPDmWrLhbA+HUODXIdhiTFS26szp2xXo9HY1lEx0ufeJ+tddYw==", "requires": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.18.9" } }, "@mui/material": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.1.tgz", - "integrity": "sha512-E9fhskX6TwUdAzpL5+yoAzRxb6wY4oBqmBVlgUuLndSwPRYxXoGu+z74NxbDEkxUoHdb7vrDcRTswpB6ykDITQ==", - "requires": { - "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.93", - "@mui/core-downloads-tracker": "^5.10.1", - "@mui/system": "^5.10.1", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.3.tgz", + "integrity": "sha512-g0lzHcqWHYeOEAxTzcwpM1I7b+wyiRTeXkEdRsspnOpZtb0H/1xg386tMFRGbxBJ4zfVGT+TWublofw7pyQkqw==", + "requires": { + "@babel/runtime": "^7.18.9", + "@mui/base": "5.0.0-alpha.95", + "@mui/core-downloads-tracker": "^5.10.3", + "@mui/system": "^5.10.3", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.3", "@types/react-transition-group": "^4.4.5", "clsx": "^1.2.1", "csstype": "^3.1.0", @@ -5336,53 +481,52 @@ } }, "@mui/private-theming": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.9.3.tgz", - "integrity": "sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==", + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.3.tgz", + "integrity": "sha512-LCYIKlkGz2BTSng2BFzzwSJBRZbChIUri2x2Nh8ryk2B1Ho7zpvE7ex6y39LlStG2Frf92NFC/V4YQbmMAjD5A==", "requires": { - "@babel/runtime": "^7.17.2", - "@mui/utils": "^5.9.3", + "@babel/runtime": "^7.18.9", + "@mui/utils": "^5.10.3", "prop-types": "^15.8.1" } }, "@mui/styled-engine": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.1.tgz", - "integrity": "sha512-xiQp6wvSLpMcRCOExbRSvkHf6gIQ/eeK7mx/Re6BtPPYIx6OerPwia+23uVIop/k4Bs5D+w7Rv2yXYJxo5rMSQ==", + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.3.tgz", + "integrity": "sha512-9Uz7eB8xXoiDvpJ9qBxZ/2xGO8xKfA2T23dw4AsQ69SQtGatrOLAapzP2lNr0tfB9xvKucclPFhRO5aLhDFOVQ==", "requires": { - "@babel/runtime": "^7.17.2", - "@emotion/cache": "^11.9.3", + "@babel/runtime": "^7.18.9", + "@emotion/cache": "^11.10.3", "csstype": "^3.1.0", "prop-types": "^15.8.1" } }, "@mui/system": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.1.tgz", - "integrity": "sha512-Ix8LVAMtVrNtmncK0yc5llHWlZKCm9okbw8QMnWbI5UH+nI9qhtf+Aure4p5ei6dGKdil++lukar/GxCjfzRSg==", - "requires": { - "@babel/runtime": "^7.17.2", - "@mui/private-theming": "^5.9.3", - "@mui/styled-engine": "^5.10.1", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.3.tgz", + "integrity": "sha512-uLW/CIz3zk1jr5zH0ahOUqJIrpWP02Mv4emfrplh7Mh5JCb/oumhYaC/ALJJEjzUHKg9wwiyuM0pCwK/kSf1jQ==", + "requires": { + "@babel/runtime": "^7.18.9", + "@mui/private-theming": "^5.10.3", + "@mui/styled-engine": "^5.10.3", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.3", "clsx": "^1.2.1", "csstype": "^3.1.0", "prop-types": "^15.8.1" } }, "@mui/types": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.5.tgz", - "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==", - "requires": {} + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz", + "integrity": "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==" }, "@mui/utils": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.9.3.tgz", - "integrity": "sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==", + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.3.tgz", + "integrity": "sha512-4jXMDPfx6bpMVuheLaOpKTjpzw39ogAZLeaLj5+RJec3E37/hAZMYjURfblLfTWMMoGoqkY03mNsZaEwNobBow==", "requires": { - "@babel/runtime": "^7.17.2", + "@babel/runtime": "^7.18.9", "@types/prop-types": "^15.7.5", "@types/react-is": "^16.7.1 || ^17.0.0", "prop-types": "^15.8.1", @@ -5508,6 +652,7 @@ "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" @@ -5516,12 +661,14 @@ "@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==" + "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" @@ -5547,9 +694,9 @@ } }, "@tailwindcss/forms": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.2.tgz", - "integrity": "sha512-pSrFeJB6Bg1Mrg9CdQW3+hqZXAKsBrSG9MAfFLKy1pVA4Mb4W7C0k7mEhlmS2Dfo/otxrQOET7NJiJ9RrS563w==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz", + "integrity": "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==", "requires": { "mini-svg-data-uri": "^1.2.3" } @@ -5602,6 +749,15 @@ "csstype": "^3.0.2" } }, + "@types/react-calendar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@types/react-calendar/-/react-calendar-3.5.2.tgz", + "integrity": "sha512-8gkU9KaE33VVbu3YWvxXjEk4BsalgSYR3c/5XF9XNJiQ/2MKxiGkTg/PfOHUX/BvcADykRBMAEJiCi6jFPEE3A==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/react-dom": { "version": "18.0.6", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", @@ -5644,14 +800,14 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz", - "integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz", + "integrity": "sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/type-utils": "5.35.1", - "@typescript-eslint/utils": "5.35.1", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/type-utils": "5.36.1", + "@typescript-eslint/utils": "5.36.1", "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", @@ -5661,52 +817,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", - "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.1.tgz", + "integrity": "sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/typescript-estree": "5.35.1", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", - "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz", + "integrity": "sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/visitor-keys": "5.35.1" + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1" } }, "@typescript-eslint/type-utils": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz", - "integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz", + "integrity": "sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.35.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/utils": "5.36.1", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", - "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.1.tgz", + "integrity": "sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", - "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz", + "integrity": "sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/visitor-keys": "5.35.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5715,15 +872,15 @@ } }, "@typescript-eslint/utils": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz", - "integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.1.tgz", + "integrity": "sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/typescript-estree": "5.35.1", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -5747,15 +904,20 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", - "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", + "version": "5.36.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz", + "integrity": "sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.35.1", + "@typescript-eslint/types": "5.36.1", "eslint-visitor-keys": "^3.3.0" } }, + "@wojtekmaj/date-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.0.3.tgz", + "integrity": "sha512-1VPkkTBk07gMR1fjpBtse4G+oJqpmE+0gUFB0dg3VIL7qJmUVaBoD/vlzMm/jNeOPfvlmerl1lpnsZyBUFIRuw==" + }, "acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", @@ -5766,13 +928,13 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-node": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, "requires": { "acorn": "^7.0.0", "acorn-walk": "^7.0.0", @@ -5782,14 +944,16 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true } } }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true }, "ajv": { "version": "6.12.6", @@ -5822,6 +986,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5830,7 +995,8 @@ "arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true }, "argparse": { "version": "2.0.1", @@ -5959,7 +1125,8 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, "brace-expansion": { "version": "1.1.11", @@ -5975,6 +1142,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -6009,7 +1177,8 @@ "camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true }, "camelize": { "version": "1.0.0", @@ -6035,6 +1204,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -6050,6 +1220,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -6073,7 +1244,8 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "concat-map": { "version": "0.0.1", @@ -6142,7 +1314,8 @@ "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true }, "csstype": { "version": "3.1.0", @@ -6182,12 +1355,14 @@ "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==" + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", + "dev": true }, "detective": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, "requires": { "acorn-node": "^1.8.2", "defined": "^1.0.0", @@ -6197,7 +1372,8 @@ "didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true }, "dir-glob": { "version": "3.0.1", @@ -6211,7 +1387,8 @@ "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true }, "doctrine": { "version": "3.0.0", @@ -6410,8 +1587,7 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -6553,9 +1729,9 @@ } }, "eslint-plugin-react": { - "version": "7.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.0.tgz", - "integrity": "sha512-BWriBttYYCnfb4RO9SB91Og8uA9CPcBMl5UlCOCtuYW1UjhN3QypzEcEHky4ZIRZDKjbO2Blh9BjP8E7W/b1SA==", + "version": "7.31.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.4.tgz", + "integrity": "sha512-2ry4HTT+c+hSgpnV2DXj3d5oAmH11KH8HHQwtcfRdq6/+R3nEimvMbwAqK79eb4ZW1/hp8yC5elBusZM6li/Gg==", "dev": true, "requires": { "array-includes": "^3.1.5", @@ -6606,8 +1782,7 @@ "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": {} + "dev": true }, "eslint-scope": { "version": "7.1.1", @@ -6699,6 +1874,7 @@ "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -6711,6 +1887,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -6733,6 +1910,7 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, "requires": { "reusify": "^1.0.4" } @@ -6750,6 +1928,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -6801,6 +1980,7 @@ "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": { @@ -6853,6 +2033,14 @@ "get-intrinsic": "^1.1.1" } }, + "get-user-locale": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-1.5.1.tgz", + "integrity": "sha512-WiNpoFRcHn1qxP9VabQljzGwkAQDrcpqUtaP0rNBEkFxJdh4f3tik6MfZsMYZc+UgQJdGCxWEjL9wnCUlRQXag==", + "requires": { + "lodash.memoize": "^4.1.1" + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -6871,6 +2059,7 @@ "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" } @@ -7022,6 +2211,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -7062,12 +2252,14 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "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" } @@ -7081,7 +2273,8 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-number-object": { "version": "1.0.7", @@ -7227,7 +2420,8 @@ "lilconfig": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true }, "lines-and-columns": { "version": "1.2.4", @@ -7248,6 +2442,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -7271,15 +2470,22 @@ "yallist": "^4.0.0" } }, + "merge-class-names": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/merge-class-names/-/merge-class-names-1.4.2.tgz", + "integrity": "sha512-bOl98VzwCGi25Gcn3xKxnR5p/WrhWFQB59MS/aGENcmUc6iSm96yrFDF0XSNurX9qN4LbJm0R9kfvsQ17i8zCw==" + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true }, "micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -7302,7 +2508,13 @@ "minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "ms": { "version": "2.1.2", @@ -7367,7 +2579,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "normalize-range": { "version": "0.1.2", @@ -7383,7 +2596,8 @@ "object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true }, "object-inspect": { "version": "1.12.2", @@ -7553,12 +2767,14 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true }, "postcss": { "version": "8.4.16", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dev": true, "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -7569,6 +2785,7 @@ "version": "14.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, "requires": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -7579,6 +2796,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, "requires": { "camelcase-css": "^2.0.1" } @@ -7587,6 +2805,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, "requires": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" @@ -7596,6 +2815,7 @@ "version": "5.0.6", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, "requires": { "postcss-selector-parser": "^6.0.6" } @@ -7604,6 +2824,7 @@ "version": "6.0.10", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -7620,13 +2841,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "peer": true - }, "prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", @@ -7655,12 +2869,14 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true }, "react": { "version": "18.2.0", @@ -7670,6 +2886,17 @@ "loose-envify": "^1.1.0" } }, + "react-calendar": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-3.7.0.tgz", + "integrity": "sha512-zkK95zWLWLC6w3O7p3SHx/FJXEyyD2UMd4jr3CrKD+G73N+G5vEwrXxYQCNivIPoFNBjqoyYYGlkHA+TBDPLCw==", + "requires": { + "@wojtekmaj/date-utils": "^1.0.2", + "get-user-locale": "^1.2.0", + "merge-class-names": "^1.1.1", + "prop-types": "^15.6.0" + } + }, "react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -7699,6 +2926,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, "requires": { "pify": "^2.3.0" } @@ -7707,6 +2935,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -7751,7 +2980,8 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true }, "rimraf": { "version": "3.0.2", @@ -7766,6 +2996,7 @@ "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" } @@ -7933,14 +3164,12 @@ "styled-jsx": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", - "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==", - "requires": {} + "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==" }, "styled-reset": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/styled-reset/-/styled-reset-4.4.2.tgz", - "integrity": "sha512-VzVhEZHpO/CD/F5ZllqTAY+GTaKlNDZt5mTrtPf/kXZSe85+wMkhRIiPARgvCP9/HQMk+ZGaEWk1IkdP2SYAUQ==", - "requires": {} + "integrity": "sha512-VzVhEZHpO/CD/F5ZllqTAY+GTaKlNDZt5mTrtPf/kXZSe85+wMkhRIiPARgvCP9/HQMk+ZGaEWk1IkdP2SYAUQ==" }, "stylis": { "version": "4.0.13", @@ -7965,6 +3194,7 @@ "version": "3.1.8", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", + "dev": true, "requires": { "arg": "^5.0.2", "chokidar": "^3.5.3", @@ -8005,6 +3235,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -8098,13 +3329,13 @@ "use-sync-external-store": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "v8-compile-cache": { "version": "2.3.0", @@ -8149,7 +3380,8 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, "yallist": { "version": "4.0.0", diff --git a/package.json b/package.json index 80014d0..e893a0b 100644 --- a/package.json +++ b/package.json @@ -3,19 +3,21 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "src/node_modules/.bin/next dev", - "build": "src/node_modules/.bin/next build", - "start": "src/node_modules/.bin/next start", - "lint": "src/node_modules/.bin/next lint" + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" }, "dependencies": { - "@emotion/react": "^11.10.0", - "@emotion/styled": "^11.10.0", - "@mui/icons-material": "^5.8.4", - "@mui/material": "^5.10.1", - "@tailwindcss/forms": "^0.5.2", + "@emotion/react": "^11.10.4", + "@emotion/styled": "^11.10.4", + "@mui/icons-material": "^5.10.3", + "@mui/material": "^5.10.3", + "@tailwindcss/forms": "^0.5.3", + "moment": "^2.29.4", "next": "12.2.5", "react": "18.2.0", + "react-calendar": "^3.7.0", "react-dom": "18.2.0", "styled-components": "^5.3.5", "styled-reset": "^4.4.2" @@ -23,10 +25,11 @@ "devDependencies": { "@types/node": "18.7.8", "@types/react": "18.0.17", + "@types/react-calendar": "^3.5.2", "@types/react-dom": "18.0.6", "@types/styled-components": "^5.1.26", - "@typescript-eslint/eslint-plugin": "^5.35.1", - "@typescript-eslint/parser": "^5.35.1", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", "autoprefixer": "^10.4.8", "eslint": "8.22.0", "eslint-config-airbnb-typescript": "^17.0.0", @@ -36,7 +39,7 @@ "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.6.1", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.31.0", + "eslint-plugin-react": "^7.31.4", "eslint-plugin-react-hooks": "^4.6.0", "postcss": "^8.4.16", "tailwindcss": "^3.1.8", diff --git a/src/application/diary/DayResults.ts b/src/application/diary/DayResults.ts new file mode 100644 index 0000000..b873d58 --- /dev/null +++ b/src/application/diary/DayResults.ts @@ -0,0 +1,48 @@ +import { MessageRes } from '../chat/ChatService'; + +export interface DayEmotion { + chatDay: string; + emotion: '불안' | '기쁨'; +} + +export interface DayLog { + chatLog: MessageRes; + emotionLog: DayEmotion; +} + +const MOCK_EMOTION_FEAR: DayEmotion = { + chatDay: new Date().toISOString().substring(0, 10), + emotion: '불안', +}; + +const MOCK_EMOTION_DELIGHT: DayEmotion = { + chatDay: new Date(new Date().setDate(new Date().getDate() - 1)) + .toISOString() + .substring(0, 10), + emotion: '기쁨', +}; + +const MOCK_EMOTION_DELIGHT2: DayEmotion = { + chatDay: new Date(new Date().setDate(new Date().getDate() + 10)) + .toISOString() + .substring(0, 10), + emotion: '기쁨', +}; + +const MOCK_EMOTION_FEAR2: DayEmotion = { + chatDay: new Date(new Date().setDate(new Date().getDate() + 12)) + .toISOString() + .substring(0, 10), + emotion: '불안', +}; +function setDayEmotion({ chatDay, emotion }: DayEmotion) { + return null; +} +export function getDayEmotion() { + return [ + MOCK_EMOTION_DELIGHT, + MOCK_EMOTION_FEAR, + MOCK_EMOTION_DELIGHT2, + MOCK_EMOTION_FEAR2, + ]; +} diff --git a/src/application/navigation/QuickButton.tsx b/src/application/navigation/QuickButton.tsx index a3f4139..77ab094 100644 --- a/src/application/navigation/QuickButton.tsx +++ b/src/application/navigation/QuickButton.tsx @@ -67,7 +67,7 @@ const QuickButton = ({}: IQuickButton) => {
- + { + return ( + + + + + ); +}; + +export default CharacterContainer; diff --git a/src/components/character/message.tsx b/src/components/character/message.tsx new file mode 100644 index 0000000..344cc3c --- /dev/null +++ b/src/components/character/message.tsx @@ -0,0 +1,33 @@ +import { Paper } from '@mui/material'; +import React from 'react'; + +interface CharacterMessage { + isFirst?: boolean; + message: string; + userName: string; +} + +/** + * @todo + * interface 수정 + * 서버에서 message를 사용자의 데이터에 따라 message를 받아오게 + */ +const CharacterMessage = ({ isFirst, message, userName }: CharacterMessage) => { + return ( + + Hello! My name is PUE! + + ); +}; + +export default CharacterMessage; diff --git a/src/components/diary/Emotion.tsx b/src/components/diary/Emotion.tsx new file mode 100644 index 0000000..9d372c2 --- /dev/null +++ b/src/components/diary/Emotion.tsx @@ -0,0 +1,16 @@ +import { Box, Typography } from '@mui/material'; +import { padding } from '@mui/system'; +import { DayEmotion } from '../../application/diary/DayResults'; + +/** + * + * emoji 대신 그림 추가 + * */ +type IEmotion = DayEmotion; +export const Emotion = ({ emotion }: IEmotion) => { + return ( + + {emotion === '기쁨' ? '😀' : '불안' ? '😰' : null} + + ); +}; diff --git a/src/components/diary/index.tsx b/src/components/diary/index.tsx new file mode 100644 index 0000000..0483adf --- /dev/null +++ b/src/components/diary/index.tsx @@ -0,0 +1,59 @@ +import { Box, Typography } from '@mui/material'; +import moment from 'moment'; +import dynamic from 'next/dynamic'; +import { useEffect, useState } from 'react'; +import styled from 'styled-components'; +import { DayEmotion, getDayEmotion } from '../../application/diary/DayResults'; +import { Emotion } from './Emotion'; +const Calendar = dynamic(() => import('react-calendar'), { ssr: false }); + +/** + * @todos + * 1. Calendar Css 수정 필요 (img 들어가게) + * 2. 서버로 부터 해당 일에 대한 감정, 채팅 내역을 불러 오게 + */ + +const EmotionContainer = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; +const Diary = () => { + const [value, setDate] = useState(new Date()); + const [emotions, setEmotions] = useState([]); + useEffect(() => { + setEmotions(getDayEmotion()); + }, []); + + return ( + + moment(date).format('D')} + value={value} + onChange={setDate} + minDetail="month" + maxDetail="month" + showNeighboringMonth={false} + locale="ENG" + tileContent={({ date }) => { + return ( + + {emotions.map(x => + x.chatDay === moment(date).format('YYYY-MM-DD') ? ( + <> + + + ) : ( + <> + ), + )} + + ); + }} + /> + {value.toDateString()} + + ); +}; + +export default Diary; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 63adbf8..660c36f 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,5 +1,6 @@ import type { AppProps } from 'next/app'; import '../../styles/globals.css'; +import '../../styles/calendar.css'; import Navigation from '../application/navigation'; import { CssBaseline } from '@mui/material'; diff --git a/src/pages/calendar/index.tsx b/src/pages/calendar/index.tsx new file mode 100644 index 0000000..dba6feb --- /dev/null +++ b/src/pages/calendar/index.tsx @@ -0,0 +1,16 @@ +import type { NextPage } from 'next'; +import { Container } from '@mui/material'; +import styled from 'styled-components'; +import CharacterContainer from '../../components/character'; +import Diary from '../../components/diary'; +const Chart = styled.div``; +const CalendarPage: NextPage = () => { + return ( + + + + + ); +}; + +export default CalendarPage; diff --git a/src/pages/calender/index.tsx b/src/pages/calender/index.tsx deleted file mode 100644 index c7559c9..0000000 --- a/src/pages/calender/index.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import type { NextPage } from "next"; -import Layout from "../../components/layout"; -import type { IChat } from "../chat"; -import Button from "@mui/material/Button"; -import styled from "styled-components"; - -interface IUserDate { - name: string; - email: string; - chats: IChat; - AIDisplayMessage: string; -} - -interface ICalender { - date: string; - chatLog: IChat; -} - -const Wrapper = styled.div` - display: flex; - flex-direction: column; - align-items: center; -`; - -const AIDisplay = styled.div` - -`; - -const Character = styled.div``; - -const Bubble = styled.div``; - -const CalenderContainer = styled.div` -`; -const Calender: NextPage = () => { - return ( - - - - - Hello! - -

I'm Calender

- -
- -
- ); -}; - -export default Calender; diff --git a/styles/calendar.css b/styles/calendar.css new file mode 100644 index 0000000..b593630 --- /dev/null +++ b/styles/calendar.css @@ -0,0 +1,186 @@ +.react-calendar { + width: 350px; + max-width: 100%; + background: white; + font-family: Arial, Helvetica, sans-serif; + line-height: 1.125em; +} +.react-calendar--doubleView { + width: 700px; +} +.react-calendar--doubleView .react-calendar__viewContainer { + display: flex; + margin: -0.5em; +} +.react-calendar--doubleView .react-calendar__viewContainer > * { + width: 50%; + margin: 0.5em; +} +.react-calendar, +.react-calendar *, +.react-calendar *:before, +.react-calendar *:after { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + + /*padding: 3px 1.5px 2px 1.5px;*/ +} +.react-calendar button { + margin: 0; + border: 0; + outline: none; +} +.react-calendar button:enabled:hover { + cursor: pointer; +} + +/* navigation */ +.react-calendar__navigation { + display: flex; + height: 42px; + margin-bottom: -1.5em; +} + +/* navigation title box */ +.react-calendar__navigation button:disabled { + background-color: white; +} +.react-calendar__navigation button { + min-width: 44px; + background: none; +} +/* navigation label title */ +.react-calendar__navigation__label__labelText { + color: black; + font-size: 20px; +} +/* navigation 2 arrow */ +.react-calendar__navigation__prev2-button { + display: none; +} +.react-calendar__navigation__next2-button { + display: none; +} +.react-calendar__navigation button:enabled:hover, +.react-calendar__navigation button:enabled:focus { + background-color: none; +} + +/* calendar container*/ +.react-calendar__viewContainer { + max-width: 100%; +} +/* month container */ +.react-calendar__month-view { + border: 1px solid #76baff; + border-radius: 5%; + margin-top: 30px; +} +/* weekdays */ +.react-calendar__month-view__weekdays { + max-width: 100%; + justify-content: space-between; + text-align: center; + text-transform: uppercase; + font-weight: bold; + font-size: 1em; + border-bottom: 1px solid #76baff; + margin-bottom: 10px; +} +.react-calendar__month-view__weekdays__weekday { + padding: 0.5em; +} +.react-calendar__month-view__weekNumbers .react-calendar__tile { + display: flex; + align-items: center; + justify-content: center; + font-size: 0.75em; + font-weight: bold; +} +.react-calendar__month-view__days__day--weekend { + color: #d10000; +} +.react-calendar__month-view__days__day--neighboringMonth { + color: #757575; +} +.react-calendar__year-view .react-calendar__tile, +.react-calendar__decade-view .react-calendar__tile, +.react-calendar__century-view .react-calendar__tile { + padding: 2em 0.5em; +} + +/* days container */ +.react-calendar__month-view__days { + display: flex; +} +/* calendar days */ +.react-calendar__tile { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + max-width: 100%; + padding: 6.66667px 7px 0px; + font-size: 1em; + height: 64px; + background: none; + text-align: start; + /* border: 1px solid rgba(133, 133, 133, 0.25); */ +} + +.react-calendar__tile abbr { + align-self: flex-start; +} +/* calendar date disalbed*/ +.react-calendar__tile:disabled { + background-color: #f0f0f0; +} +.react-calendar__tile:enabled:hover, +.react-calendar__tile:enabled:focus { + box-shadow: 0 0 0 1px rgb(133, 133, 133) inset; + border-radius: 10%; +} + +/* calendar date today */ +.react-calendar__tile--now { + background: #ffff76; + border-radius: 10%; +} +.react-calendar__tile--now:enabled:hover, +.react-calendar__tile--now:enabled:focus { + background: #ffffa9; +} + +/* ~ */ +.react-calendar__tile--hasActive { + background: #76baff; +} +.react-calendar__tile--hasActive:enabled:hover, +.react-calendar__tile--hasActive:enabled:focus { + background: #a9d4ff; +} + +/* calendar date active*/ +.react-calendar__tile--active { + background: #006edc; + border-radius: 10%; + color: white; +} +.react-calendar__tile--active:enabled:hover, +.react-calendar__tile--active:enabled:focus { + background: #1087ff; +} +.react-calendar--selectRange .react-calendar__tile--hover { + background-color: #e6e6e6; +} + +/* dot */ +.dot { + height: 8px; + width: 8px; + background-color: #f87171; + border-radius: 50%; + display: flex; + margin-left: 1px; +} diff --git a/styles/globals.css b/styles/globals.css index a086211..23f48da 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -3,5 +3,5 @@ @tailwind components; @tailwind utilities;*/ ::-webkit-scrollbar { - width: 0; + width: 0; } From 5e6fbc527086119dd54f62fd523e252df6d69319 Mon Sep 17 00:00:00 2001 From: elbica Date: Mon, 5 Sep 2022 01:53:32 +0900 Subject: [PATCH 019/102] =?UTF-8?q?feat=20:=20Socket=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=20=EC=97=B0=EB=8F=99=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B0=8F?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NEXT_PUBLIC 환경 변수 추가 - socket.io 초기 설정 수정 - 채팅 비즈리스 로직 일부 리팩터링 --- src/application/chat/Adaptor.ts | 4 +-- src/application/chat/ChatService.ts | 1 - src/components/chat/index.tsx | 5 ++-- src/domain/chat/ChatTypes.ts | 8 ------ src/infra/chat/ChatApi.ts | 38 ++++++++++++++--------------- src/infra/chat/ChatResource.ts | 16 +++++++++--- src/infra/client/SocketClient.ts | 21 +++++++++++----- 7 files changed, 51 insertions(+), 42 deletions(-) diff --git a/src/application/chat/Adaptor.ts b/src/application/chat/Adaptor.ts index a5c9ad3..0acf82b 100644 --- a/src/application/chat/Adaptor.ts +++ b/src/application/chat/Adaptor.ts @@ -36,12 +36,12 @@ export class MessageAdaptor { } toMessage(chat: Chat): Message { - const { message, direction, date, id, userId } = chat.properties; + const { message, direction, date, id, userId, userName } = chat.properties; return { text: message, writeAt: new Date(date), user: { - name: 'MOCK', + name: userName, photo: 'MOCK', }, }; diff --git a/src/application/chat/ChatService.ts b/src/application/chat/ChatService.ts index b78797d..803e822 100644 --- a/src/application/chat/ChatService.ts +++ b/src/application/chat/ChatService.ts @@ -12,7 +12,6 @@ class ChatService { /** * @todo - * listener 처리 * user domain, repository, resource 생성 * import absolute path 설정 */ diff --git a/src/components/chat/index.tsx b/src/components/chat/index.tsx index 3eb0b51..c83e8ae 100644 --- a/src/components/chat/index.tsx +++ b/src/components/chat/index.tsx @@ -9,7 +9,9 @@ const ChatContainer = () => { const [messages, setMessages] = useState([]); const scrollRef = useRef(null); - const addMessage = (m: Message) => setMessages(prev => prev.concat(m)); + const addMessage = (m: Message) => { + setMessages(prev => prev.concat(m)); + }; const handleSendMessage = useCallback(async (m: string) => { const message = messageAdaptor.fromText(m); @@ -21,7 +23,6 @@ const ChatContainer = () => { useEffect(() => { chatService.addListener(addMessage); - (async () => setMessages(await chatService.getChatLog()))(); return () => chatService.clear(); diff --git a/src/domain/chat/ChatTypes.ts b/src/domain/chat/ChatTypes.ts index b8b0893..3b58608 100644 --- a/src/domain/chat/ChatTypes.ts +++ b/src/domain/chat/ChatTypes.ts @@ -1,11 +1,3 @@ -export enum ChatEvent { - send = 'SEND_MESSAGE', - receive = 'RECEIVE_MESSAGE', - join = 'JOIN', - leave = 'LEAVE', - reset = 'RESET', -} - export type ChatDirection = 'send' | 'receive'; export interface ChatProperties { diff --git a/src/infra/chat/ChatApi.ts b/src/infra/chat/ChatApi.ts index 4578bb2..bde4f09 100644 --- a/src/infra/chat/ChatApi.ts +++ b/src/infra/chat/ChatApi.ts @@ -1,22 +1,14 @@ import { Chat } from '../../domain/chat/Chat'; -import { ChatDirection } from '../../domain/chat/ChatTypes'; /** - * - * @param message 메세지 내용 - * @param direction 송수신 방향 - * @param date 날짜 YYYYMMDDHHMMSS - * @param id 메세지 id - * @param userId 유저 id - * @private + * @property {string} response 응답 메세지 + * @property {string} day YYYYMMDD + * @property {number} time 시분 (@todo 현재는 타임스탬프) */ export interface ChatApiProperty { - message: string; - direction: ChatDirection; - date: string; - id: number; - userId: number; - userName: string; + response: string; + day: string; + time: number; } /** @@ -27,12 +19,18 @@ export interface ChatApiProperty { export class ChatApi { static toDomain(data: ChatApiProperty): Chat { return Chat.fromProperties({ - message: data.message, - direction: data.direction, - date: data.date, - id: data.id, - userId: data.userId, - userName: data.userName, + message: data.response, + direction: 'receive', + date: data.day, + id: 0, + userId: 0, + userName: 'PUE', }); } + + static toApi({ properties }: Chat): { message: string } { + return { + message: properties.message, + }; + } } diff --git a/src/infra/chat/ChatResource.ts b/src/infra/chat/ChatResource.ts index f69afb5..55264c8 100644 --- a/src/infra/chat/ChatResource.ts +++ b/src/infra/chat/ChatResource.ts @@ -1,10 +1,14 @@ import { ChatRepository } from '../../domain/chat/ChatRepository'; import { Chat } from '../../domain/chat/Chat'; import { ChatApi, ChatApiProperty } from './ChatApi'; -import { ChatEvent } from '../../domain/chat/ChatTypes'; import httpClient, { HttpClient } from '../client/HttpClient'; import socketClient, { SocketClient } from '../client/SocketClient'; +export enum ChatEvent { + send = 'SEND_MESSAGE', + receive = 'RECEIVE_MESSAGE', +} + export class ChatResource implements ChatRepository { /** * @todo @@ -17,6 +21,10 @@ export class ChatResource implements ChatRepository { private socket: SocketClient, ) {} + /** + * @todo + * chat log 적용 + */ async getChatLog(userId: number): Promise { const chatLogApi = await this.http.get(`MOCK/${userId}`); const chatLog = chatLogApi.map(api => ChatApi.toDomain(api)); @@ -24,11 +32,13 @@ export class ChatResource implements ChatRepository { } receiveChat(callback: (data: Chat) => void) { - this.socket.onReceive(ChatEvent.receive, callback); + this.socket.onReceive(ChatEvent.receive, res => + callback(ChatApi.toDomain(res)), + ); } sendChat(chat: Chat): void { - this.socket.emitData(ChatEvent.send, chat.properties); + this.socket.emitData(ChatEvent.send, ChatApi.toApi(chat)); } connect(): void { diff --git a/src/infra/client/SocketClient.ts b/src/infra/client/SocketClient.ts index e620a94..625c6dd 100644 --- a/src/infra/client/SocketClient.ts +++ b/src/infra/client/SocketClient.ts @@ -1,22 +1,31 @@ -import io from 'socket.io-client'; +import io, { Socket } from 'socket.io-client'; export class SocketClient { - constructor(private socket = io('SOCKET_BACK_URL')) {} + constructor(private socket: Socket | null = null) {} emitData(event: string, data: any) { - this.socket.emit(event, data); + this.socket?.emit(event, data); } onReceive(event: string, callback: (data: T) => void) { - this.socket.on(event, callback); + this.socket?.on(event, callback); } connect() { - this.socket.connect(); + /** + * @todo + * 인증 토큰 추가 + */ + this.socket = io(`${process.env.NEXT_PUBLIC_BASE_URL}/realchat`, { + transports: ['websocket'], + upgrade: false, + forceNew: true, + }); } disconnect() { - this.socket.disconnect(); + this.socket?.disconnect(); + this.socket = null; } } From b10ed7bab23d1308cfdb6204c5bbb12708dcc722 Mon Sep 17 00:00:00 2001 From: elbica Date: Mon, 5 Sep 2022 02:08:23 +0900 Subject: [PATCH 020/102] =?UTF-8?q?refactor=20:=20=EC=A0=88=EB=8C=80=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - tsconfig.json > baseUrl, path 수정 --- src/application/chat/Adaptor.ts | 2 +- src/application/chat/ChatService.ts | 6 +++--- src/components/chat/Message.tsx | 2 +- src/components/chat/index.tsx | 6 +++--- src/infra/chat/ChatApi.ts | 2 +- src/infra/chat/ChatResource.ts | 8 ++++---- src/pages/_app.tsx | 2 +- src/pages/chat/index.tsx | 2 +- src/utils/mock.ts | 2 +- tsconfig.json | 13 +++++++++++-- 10 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/application/chat/Adaptor.ts b/src/application/chat/Adaptor.ts index 0acf82b..c77f6de 100644 --- a/src/application/chat/Adaptor.ts +++ b/src/application/chat/Adaptor.ts @@ -1,4 +1,4 @@ -import { Chat } from '../../domain/chat/Chat'; +import { Chat } from '@domain/chat/Chat'; /** * @todo diff --git a/src/application/chat/ChatService.ts b/src/application/chat/ChatService.ts index 803e822..cddbcfc 100644 --- a/src/application/chat/ChatService.ts +++ b/src/application/chat/ChatService.ts @@ -1,6 +1,6 @@ -import { ChatRepository } from '../../domain/chat/ChatRepository'; -import chatResource from '../../infra/chat/ChatResource'; -import { MOCK_MESSAGE, MOCK_SEND_MESSAGE } from '../../utils/mock'; +import { ChatRepository } from '@domain/chat/ChatRepository'; +import chatResource from '@infra/chat/ChatResource'; +import { MOCK_MESSAGE, MOCK_SEND_MESSAGE } from '@utils/mock'; import adaptor, { Message, MessageAdaptor } from './Adaptor'; class ChatService { diff --git a/src/components/chat/Message.tsx b/src/components/chat/Message.tsx index ec56c17..db17054 100644 --- a/src/components/chat/Message.tsx +++ b/src/components/chat/Message.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Avatar, Box, Paper, Typography } from '@mui/material'; -import { Message } from '../../application/chat/Adaptor'; +import { Message } from '@application/chat/Adaptor'; type IMessage = Message; diff --git a/src/components/chat/index.tsx b/src/components/chat/index.tsx index c83e8ae..ca51334 100644 --- a/src/components/chat/index.tsx +++ b/src/components/chat/index.tsx @@ -1,9 +1,9 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { chatService } from '../../application/chat/ChatService'; +import { chatService } from '@application/chat/ChatService'; import { MessageLeft, MessageRight } from './Message'; -import ChatInput from '../input/ChatInput'; +import ChatInput from '@components/input/ChatInput'; import { Box } from '@mui/material'; -import messageAdaptor, { Message } from '../../application/chat/Adaptor'; +import messageAdaptor, { Message } from '@application/chat/Adaptor'; const ChatContainer = () => { const [messages, setMessages] = useState([]); diff --git a/src/infra/chat/ChatApi.ts b/src/infra/chat/ChatApi.ts index bde4f09..6dceb1a 100644 --- a/src/infra/chat/ChatApi.ts +++ b/src/infra/chat/ChatApi.ts @@ -1,4 +1,4 @@ -import { Chat } from '../../domain/chat/Chat'; +import { Chat } from '@domain/chat/Chat'; /** * @property {string} response 응답 메세지 diff --git a/src/infra/chat/ChatResource.ts b/src/infra/chat/ChatResource.ts index 55264c8..c2474c3 100644 --- a/src/infra/chat/ChatResource.ts +++ b/src/infra/chat/ChatResource.ts @@ -1,8 +1,8 @@ -import { ChatRepository } from '../../domain/chat/ChatRepository'; -import { Chat } from '../../domain/chat/Chat'; +import { ChatRepository } from '@domain/chat/ChatRepository'; +import { Chat } from '@domain/chat/Chat'; import { ChatApi, ChatApiProperty } from './ChatApi'; -import httpClient, { HttpClient } from '../client/HttpClient'; -import socketClient, { SocketClient } from '../client/SocketClient'; +import httpClient, { HttpClient } from '@infra/client/HttpClient'; +import socketClient, { SocketClient } from '@infra/client/SocketClient'; export enum ChatEvent { send = 'SEND_MESSAGE', diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3cfea45..5b2a245 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,6 +1,6 @@ import type { AppProps } from 'next/app'; import '../../styles/globals.css'; -import Navigation from '../components/navigation'; +import Navigation from '@components/navigation'; import { CssBaseline } from '@mui/material'; function App({ Component, pageProps }: AppProps) { diff --git a/src/pages/chat/index.tsx b/src/pages/chat/index.tsx index 7214ce6..a65af55 100644 --- a/src/pages/chat/index.tsx +++ b/src/pages/chat/index.tsx @@ -1,5 +1,5 @@ import type { NextPage } from 'next'; -import ChatContainer from '../../components/chat'; +import ChatContainer from '@components/chat'; import { Container } from '@mui/material'; import { useEffect } from 'react'; diff --git a/src/utils/mock.ts b/src/utils/mock.ts index 393b1c0..c753cdd 100644 --- a/src/utils/mock.ts +++ b/src/utils/mock.ts @@ -1,4 +1,4 @@ -import { Message } from '../application/chat/Adaptor'; +import { Message } from '@application/chat/Adaptor'; export const MOCK_MESSAGE: Message = { text: 'hello this is mock', diff --git a/tsconfig.json b/tsconfig.json index d3ff3ca..9eb0545 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,11 +13,20 @@ "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", - "incremental": true + "incremental": true, + "baseUrl": "./src", + "paths": { + "@application/*": ["application/*"], + "@components/*": ["components/*"], + "@domain/*": ["domain/*"], + "@infra/*": ["infra/*"], + "@page/*": ["page/*"], + "@utils/*": ["utils/*"], + } }, "include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": [ - "src/node_modules" + "node_modules" ] } From d8b54c392e910912ab0eee27698a6bab498cd175 Mon Sep 17 00:00:00 2001 From: elbica Date: Mon, 5 Sep 2022 15:08:30 +0900 Subject: [PATCH 021/102] =?UTF-8?q?feat=20:=20=EC=B1=84=ED=8C=85=20?= =?UTF-8?q?=EB=A9=94=EC=84=B8=EC=A7=80=20=EC=8B=9C=EA=B0=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 메세지 보낸 시간 추가 - moment 라이브러리 사용 - 현재 서버 응답 시간 형식이 안 맞는 문제 있음 --- .eslintrc.json | 3 ++- package-lock.json | 14 ++++++++++++++ package.json | 1 + src/application/chat/Adaptor.ts | 9 +++++---- src/components/chat/Message.tsx | 21 ++++++++++++++++----- src/domain/chat/Chat.ts | 4 +++- src/domain/chat/ChatTypes.ts | 4 +++- src/infra/chat/ChatApi.ts | 5 +++-- src/infra/client/SocketClient.ts | 5 ++++- src/utils/mock.ts | 3 +++ 10 files changed, 54 insertions(+), 15 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index bbdd7a1..1ac9c01 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -24,7 +24,8 @@ ], "rules": { "react/no-unescaped-entities": "off", - "react/react-in-jsx-scope": "off" + "react/react-in-jsx-scope": "off", + "react/display-name": "off" }, "settings": { "import/resolver": { diff --git a/package-lock.json b/package-lock.json index b1547fd..f8a354e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@mui/icons-material": "^5.8.4", "@mui/material": "^5.10.1", "@tailwindcss/forms": "^0.5.2", + "moment": "^2.29.4", "next": "12.2.5", "react": "18.2.0", "react-dom": "18.2.0", @@ -3565,6 +3566,14 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -7406,6 +7415,11 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", diff --git a/package.json b/package.json index 9e9737b..33c6a13 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@mui/icons-material": "^5.8.4", "@mui/material": "^5.10.1", "@tailwindcss/forms": "^0.5.2", + "moment": "^2.29.4", "next": "12.2.5", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/src/application/chat/Adaptor.ts b/src/application/chat/Adaptor.ts index c77f6de..3ec905a 100644 --- a/src/application/chat/Adaptor.ts +++ b/src/application/chat/Adaptor.ts @@ -1,4 +1,5 @@ import { Chat } from '@domain/chat/Chat'; +import moment, { Moment } from 'moment'; /** * @todo @@ -11,7 +12,7 @@ interface User { export interface Message { text: string; - writeAt?: Date; + writeAt: Moment; user: User; } @@ -27,7 +28,7 @@ export class MessageAdaptor { fromText(text: string): Message { return { text, - writeAt: new Date(), + writeAt: moment(), user: { name: 'MOCK', photo: 'MOCK', @@ -39,7 +40,7 @@ export class MessageAdaptor { const { message, direction, date, id, userId, userName } = chat.properties; return { text: message, - writeAt: new Date(date), + writeAt: date, user: { name: userName, photo: 'MOCK', @@ -52,7 +53,7 @@ export class MessageAdaptor { id: 0, userId: 0, userName: message.user.name, - date: 'MOCK', + date: message.writeAt, message: message.text, direction: 'send', }); diff --git a/src/components/chat/Message.tsx b/src/components/chat/Message.tsx index db17054..9d449e4 100644 --- a/src/components/chat/Message.tsx +++ b/src/components/chat/Message.tsx @@ -1,10 +1,10 @@ -import React from 'react'; +import React, { memo } from 'react'; import { Avatar, Box, Paper, Typography } from '@mui/material'; import { Message } from '@application/chat/Adaptor'; type IMessage = Message; -export const MessageLeft = ({ text }: IMessage) => { +export const MessageLeft = memo(({ text, writeAt }: IMessage) => { return ( 퓨이 @@ -22,12 +22,23 @@ export const MessageLeft = ({ text }: IMessage) => { {text} + + {writeAt.isValid() && writeAt.format('HH:mm')} +
); -}; -export const MessageRight = ({ text }: IMessage) => { +}); +export const MessageRight = memo(({ text, writeAt }: IMessage) => { return ( + + {writeAt?.format('HH:mm')} + { ); -}; +}); diff --git a/src/domain/chat/Chat.ts b/src/domain/chat/Chat.ts index 8a1307e..8d8f5af 100644 --- a/src/domain/chat/Chat.ts +++ b/src/domain/chat/Chat.ts @@ -8,6 +8,7 @@ * */ import { ChatDirection, ChatProperties } from './ChatTypes'; +import { Moment } from 'moment'; export class Chat { /** @@ -17,12 +18,13 @@ export class Chat { * @param date 날짜 YYYYMMDDHHMMSS * @param id 메세지 id * @param userId 유저 id + * @param userName 유저 이름 * @private */ private constructor( private readonly message: string, private readonly direction: ChatDirection, - private readonly date: string, + private readonly date: Moment, private readonly id: number, private readonly userId: number, private readonly userName: string, diff --git a/src/domain/chat/ChatTypes.ts b/src/domain/chat/ChatTypes.ts index 3b58608..dc4d733 100644 --- a/src/domain/chat/ChatTypes.ts +++ b/src/domain/chat/ChatTypes.ts @@ -1,10 +1,12 @@ +import { Moment } from 'moment'; + export type ChatDirection = 'send' | 'receive'; export interface ChatProperties { id: number; userId: number; userName: string; - date: string; + date: Moment; direction: ChatDirection; message: string; } diff --git a/src/infra/chat/ChatApi.ts b/src/infra/chat/ChatApi.ts index 6dceb1a..02fd46a 100644 --- a/src/infra/chat/ChatApi.ts +++ b/src/infra/chat/ChatApi.ts @@ -1,9 +1,10 @@ import { Chat } from '@domain/chat/Chat'; +import moment from 'moment'; /** * @property {string} response 응답 메세지 * @property {string} day YYYYMMDD - * @property {number} time 시분 (@todo 현재는 타임스탬프) + * @property {string} time HHMMSS */ export interface ChatApiProperty { response: string; @@ -21,7 +22,7 @@ export class ChatApi { return Chat.fromProperties({ message: data.response, direction: 'receive', - date: data.day, + date: moment(data.day + 'T' + data.time), id: 0, userId: 0, userName: 'PUE', diff --git a/src/infra/client/SocketClient.ts b/src/infra/client/SocketClient.ts index 625c6dd..7b8efa6 100644 --- a/src/infra/client/SocketClient.ts +++ b/src/infra/client/SocketClient.ts @@ -17,10 +17,13 @@ export class SocketClient { * 인증 토큰 추가 */ this.socket = io(`${process.env.NEXT_PUBLIC_BASE_URL}/realchat`, { - transports: ['websocket'], + transports: ['websocket', 'polling'], upgrade: false, forceNew: true, }); + this.socket.on('disconnect', res => + console.warn('Socket 연결이 끊겼습니다 :::', res), + ); } disconnect() { diff --git a/src/utils/mock.ts b/src/utils/mock.ts index c753cdd..c875cab 100644 --- a/src/utils/mock.ts +++ b/src/utils/mock.ts @@ -1,6 +1,8 @@ import { Message } from '@application/chat/Adaptor'; +import moment from 'moment'; export const MOCK_MESSAGE: Message = { + writeAt: moment(), text: 'hello this is mock', user: { name: 'PUE', @@ -8,6 +10,7 @@ export const MOCK_MESSAGE: Message = { }, }; export const MOCK_SEND_MESSAGE: Message = { + writeAt: moment(), text: 'hello?', user: { name: 'YOU', From b0bb5df5c1d2d88ea9f77ab372f7da2f3fee6bbc Mon Sep 17 00:00:00 2001 From: elbica Date: Thu, 8 Sep 2022 17:54:57 +0900 Subject: [PATCH 022/102] =?UTF-8?q?feat=20:=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - createTheme 추가 - 다크 모드 고려 - style 폴더 src/helper 로 이동 --- src/application/chat/ChatService.ts | 2 +- src/components/navigation/GNB.tsx | 1 + src/components/navigation/index.tsx | 12 ++++- src/components/profile/History.tsx | 8 +++ src/components/profile/Info.tsx | 8 +++ src/components/profile/Setting.tsx | 8 +++ src/{utils => helper}/mock.ts | 0 src/helper/styles/defaultStyle.ts | 60 +++++++++++++++++++++++ {styles => src/helper/styles}/globals.css | 0 src/pages/_app.tsx | 30 +++++++++--- src/pages/chat/index.tsx | 15 +----- src/pages/profile/index.tsx | 29 +++++++++++ tsconfig.json | 2 +- 13 files changed, 152 insertions(+), 23 deletions(-) create mode 100644 src/components/profile/History.tsx create mode 100644 src/components/profile/Info.tsx create mode 100644 src/components/profile/Setting.tsx rename src/{utils => helper}/mock.ts (100%) create mode 100644 src/helper/styles/defaultStyle.ts rename {styles => src/helper/styles}/globals.css (100%) create mode 100644 src/pages/profile/index.tsx diff --git a/src/application/chat/ChatService.ts b/src/application/chat/ChatService.ts index cddbcfc..347c474 100644 --- a/src/application/chat/ChatService.ts +++ b/src/application/chat/ChatService.ts @@ -1,6 +1,6 @@ import { ChatRepository } from '@domain/chat/ChatRepository'; import chatResource from '@infra/chat/ChatResource'; -import { MOCK_MESSAGE, MOCK_SEND_MESSAGE } from '@utils/mock'; +import { MOCK_MESSAGE, MOCK_SEND_MESSAGE } from '@helper/mock'; import adaptor, { Message, MessageAdaptor } from './Adaptor'; class ChatService { diff --git a/src/components/navigation/GNB.tsx b/src/components/navigation/GNB.tsx index 43d5082..e585db5 100644 --- a/src/components/navigation/GNB.tsx +++ b/src/components/navigation/GNB.tsx @@ -31,6 +31,7 @@ const Gnb = () => { position={'sticky'} sx={{ height: '4.5rem', + bgcolor: 'primary.main', }} > diff --git a/src/components/navigation/index.tsx b/src/components/navigation/index.tsx index 449da7e..17cd15b 100644 --- a/src/components/navigation/index.tsx +++ b/src/components/navigation/index.tsx @@ -2,13 +2,23 @@ import React from 'react'; import QuickButton from './QuickButton'; import Gnb from './GNB'; import NavigationProvider from './NavigationProvider'; +import { Container } from '@mui/material'; type INavigation = React.PropsWithChildren; const Navigation = ({ children }: INavigation) => { return ( - {children} + + {children} + ); diff --git a/src/components/profile/History.tsx b/src/components/profile/History.tsx new file mode 100644 index 0000000..9339f42 --- /dev/null +++ b/src/components/profile/History.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +type IHistory = {}; +const History = ({}: IHistory) => { + return
asdf
; +}; + +export default History; diff --git a/src/components/profile/Info.tsx b/src/components/profile/Info.tsx new file mode 100644 index 0000000..b0b022a --- /dev/null +++ b/src/components/profile/Info.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +type IInfo = {}; +const Info = ({}: IInfo) => { + return
asdf
; +}; + +export default Info; diff --git a/src/components/profile/Setting.tsx b/src/components/profile/Setting.tsx new file mode 100644 index 0000000..10ade37 --- /dev/null +++ b/src/components/profile/Setting.tsx @@ -0,0 +1,8 @@ +import React from 'react'; + +type ISetting = {}; +const Setting = ({}: ISetting) => { + return
asdf
; +}; + +export default Setting; diff --git a/src/utils/mock.ts b/src/helper/mock.ts similarity index 100% rename from src/utils/mock.ts rename to src/helper/mock.ts diff --git a/src/helper/styles/defaultStyle.ts b/src/helper/styles/defaultStyle.ts new file mode 100644 index 0000000..d8fd461 --- /dev/null +++ b/src/helper/styles/defaultStyle.ts @@ -0,0 +1,60 @@ +/* eslint-disable @typescript-eslint/indent */ +/** + * 고려 사항 + * 1. 다크모드 + * 2. 반응형 (폰트 사이즈) + * 3. 커스텀 테마 + * - https://bareynol.github.io/mui-theme-creator/ + * + * .palette + * .typography + * .spacing + * .breakpoints + * .zIndex + * .transitions + * .components + */ +import { createTheme, PaletteMode } from '@mui/material'; + +export default function (mode: PaletteMode) { + return createTheme({ + palette: { + mode, + primary: { + main: '#7986cb', + }, + secondary: { + main: '#ff9e80', + }, + ...(mode == 'light' + ? { + background: { + default: '#fafafa', + paper: '#fff', + }, + } + : { + background: { + default: '#282828', + paper: '#464646', + }, + }), + }, + }); +} + +/** + * 반응형 + * options: breakpoints, disableAlign, factor, variants + */ +/*theme.typography.h3 = { + fontSize: '1.2rem', + '@media (min-width:600px)': { + fontSize: '1.5rem', + }, + [theme.breakpoints.up('md')]: { + fontSize: '2.4rem', + }, +}; + +theme = responsiveFontSizes(theme, {});*/ diff --git a/styles/globals.css b/src/helper/styles/globals.css similarity index 100% rename from styles/globals.css rename to src/helper/styles/globals.css diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 5b2a245..50b9758 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,14 +1,32 @@ import type { AppProps } from 'next/app'; -import '../../styles/globals.css'; +import '@helper/styles/globals.css'; import Navigation from '@components/navigation'; -import { CssBaseline } from '@mui/material'; +import { CssBaseline, PaletteMode, ThemeProvider } from '@mui/material'; +import createTheme from '@helper/styles/defaultStyle'; +import React, { createContext, useMemo, useState } from 'react'; + +type IToggleTheme = { toggle: () => void }; +const ToggleTheme = createContext( + null as unknown as IToggleTheme, +); function App({ Component, pageProps }: AppProps) { + const [mode, setMode] = useState('light'); + const theme = useMemo(() => createTheme(mode), [mode]); return ( - - - - + setMode(mode == 'light' ? 'dark' : 'light'), + }} + > + + + + + + + ); } diff --git a/src/pages/chat/index.tsx b/src/pages/chat/index.tsx index a65af55..1e344d6 100644 --- a/src/pages/chat/index.tsx +++ b/src/pages/chat/index.tsx @@ -1,7 +1,5 @@ import type { NextPage } from 'next'; import ChatContainer from '@components/chat'; -import { Container } from '@mui/material'; -import { useEffect } from 'react'; export interface IChat { isUser: boolean; @@ -20,18 +18,7 @@ export interface IChat { */ const Chat: NextPage = () => { - useEffect(() => { - document.body.style.backgroundColor = 'mintcream'; - return () => { - document.body.style.backgroundColor = 'white'; - }; - }, []); - - return ( - - - - ); + return ; }; export default Chat; diff --git a/src/pages/profile/index.tsx b/src/pages/profile/index.tsx new file mode 100644 index 0000000..deb3244 --- /dev/null +++ b/src/pages/profile/index.tsx @@ -0,0 +1,29 @@ +/** + * 기능 + * 1. 프로필 사진, 내 이름, 닉네임 + * 2. 내 총 채팅 횟수, 상담 횟수 (누르면 로그 팝업) + * 3. 푸시 알람 스위치 + * 4. 다크 모드 스위치 + * 5. 로그아웃 버튼 + * 6?. 서비스 policy + * 7?. 2차 비밀번호 설정 + */ + +import React from 'react'; +import { Container } from '@mui/material'; +import Info from '@components/profile/Info'; +import History from '@components/profile/History'; +import Setting from '@components/profile/Setting'; + +type IProfile = {}; +const Profile = ({}: IProfile) => { + return ( + + + + + + ); +}; + +export default Profile; diff --git a/tsconfig.json b/tsconfig.json index 9eb0545..e302525 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,7 +21,7 @@ "@domain/*": ["domain/*"], "@infra/*": ["infra/*"], "@page/*": ["page/*"], - "@utils/*": ["utils/*"], + "@helper/*": ["helper/*"], } }, "include": [ From c2e3b76eda121f8ebf02cff77be44c84c8885efd Mon Sep 17 00:00:00 2001 From: onejuice98 Date: Fri, 9 Sep 2022 00:18:03 +0900 Subject: [PATCH 023/102] =?UTF-8?q?#feature/=EC=BA=98=EB=A6=B0=EB=8D=94-UI?= =?UTF-8?q?=20=EC=B0=A8=ED=8A=B8=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20merge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 8196 bytes front-end/next.config.js | 7 - front-end/package-lock.json | 3481 ----------------- .../src/application/chart/MultiSeries.tsx | 82 - front-end/src/application/chat/ChatService.ts | 60 - front-end/src/application/diary/DayResults.ts | 48 - front-end/src/application/navigation/GNB.tsx | 67 - .../navigation/NavigationProvider.tsx | 39 - .../application/navigation/QuickButton.tsx | 88 - .../src/application/navigation/index.tsx | 24 - front-end/src/components/character/index.tsx | 27 - .../src/components/character/message.tsx | 33 - front-end/src/components/chat/Message.tsx | 47 - front-end/src/components/chat/index.tsx | 72 - front-end/src/components/diary/Emotion.tsx | 16 - front-end/src/components/diary/index.tsx | 59 - front-end/src/components/input/ChatInput.tsx | 50 - front-end/src/pages/_app.tsx | 21 - front-end/src/pages/calendar/index.tsx | 17 - front-end/src/pages/chat/index.tsx | 37 - front-end/src/pages/index.tsx | 11 - front-end/styles/calendar.css | 186 - package-lock.json | 85 + package.json | 1 + src/application/diary/DayResults.ts | 24 +- src/components/charts/Charts.tsx | 67 + src/components/diary/Emotion.tsx | 20 +- src/components/diary/index.tsx | 20 +- src/pages/calendar/index.tsx | 7 +- 29 files changed, 200 insertions(+), 4496 deletions(-) delete mode 100644 front-end/next.config.js delete mode 100644 front-end/package-lock.json delete mode 100644 front-end/src/application/chart/MultiSeries.tsx delete mode 100644 front-end/src/application/chat/ChatService.ts delete mode 100644 front-end/src/application/diary/DayResults.ts delete mode 100644 front-end/src/application/navigation/GNB.tsx delete mode 100644 front-end/src/application/navigation/NavigationProvider.tsx delete mode 100644 front-end/src/application/navigation/QuickButton.tsx delete mode 100644 front-end/src/application/navigation/index.tsx delete mode 100644 front-end/src/components/character/index.tsx delete mode 100644 front-end/src/components/character/message.tsx delete mode 100644 front-end/src/components/chat/Message.tsx delete mode 100644 front-end/src/components/chat/index.tsx delete mode 100644 front-end/src/components/diary/Emotion.tsx delete mode 100644 front-end/src/components/diary/index.tsx delete mode 100644 front-end/src/components/input/ChatInput.tsx delete mode 100644 front-end/src/pages/_app.tsx delete mode 100644 front-end/src/pages/calendar/index.tsx delete mode 100644 front-end/src/pages/chat/index.tsx delete mode 100644 front-end/src/pages/index.tsx delete mode 100644 front-end/styles/calendar.css create mode 100644 src/components/charts/Charts.tsx diff --git a/.DS_Store b/.DS_Store index ed2d85a598e86b6e6f021339f2fdd656f3f9041a..e1b0ea8ece168070b519356bd2b1c845961c79ef 100644 GIT binary patch literal 8196 zcmeHML2eT<6n$<&DFvZ!kjl;npordJsKN%ZKqGAy6XOaM)hMa#5h{1Iz=WS>vC6CSN>p}oGp+SouXP1KR@~eTPImHR-Pd0> zqI(@vxxc7&j8Uu=7{AWrnZ9cu{5_V;k=F8m`>zgU4?@>XBWVs)F^tsQX zu@lImNj`I*lk&W0ypvwEuMyYi8+km-{rjAvIXcff;v_oUB3_6VF58VqzkuudFK%d2 z2hPudo=?3k`~N%L@BhzFpk`JF)PX*LZY8*a$`X f-FBRK_J<*lZHN^C8;^{z=nnyBgEs2GUv=Oo9Qgi@ delta 170 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGjdE!6q~50D9QrjfW_h&avAa&QW#1ZawaA& zXJnb2AS5$6K!}%FVHP`(t<5ZVD{*q4kPZt2h_O#do5{amW1<&m3j|-0B-z diff --git a/front-end/next.config.js b/front-end/next.config.js deleted file mode 100644 index ae88795..0000000 --- a/front-end/next.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - reactStrictMode: true, - swcMinify: true, -} - -module.exports = nextConfig diff --git a/front-end/package-lock.json b/front-end/package-lock.json deleted file mode 100644 index 88880f2..0000000 --- a/front-end/package-lock.json +++ /dev/null @@ -1,3481 +0,0 @@ -{ - "name": "front-end", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/generator": { - "version": "7.18.12", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", - "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", - "requires": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz", - "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==" - }, - "@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", - "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", - "dev": true, - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.11.tgz", - "integrity": "sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.11", - "@babel/types": "^7.18.10", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - } - } - }, - "@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", - "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@emotion/babel-plugin": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.0.tgz", - "integrity": "sha512-xVnpDAAbtxL1dsuSelU5A7BnY/lftws0wUexNJZTPsvX/1tM4GZJbclgODhvW4E+NH7E5VFcH0bBn30NvniPJA==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.17.12", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/serialize": "^1.1.0", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.0.13" - } - }, - "@emotion/cache": { - "version": "11.10.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.1.tgz", - "integrity": "sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A==", - "requires": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.0.13" - } - }, - "@emotion/hash": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", - "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" - }, - "@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", - "requires": { - "@emotion/memoize": "^0.8.0" - } - }, - "@emotion/memoize": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", - "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" - }, - "@emotion/react": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.0.tgz", - "integrity": "sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ==", - "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/cache": "^11.10.0", - "@emotion/serialize": "^1.1.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "hoist-non-react-statics": "^3.3.1" - } - }, - "@emotion/serialize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz", - "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==", - "requires": { - "@emotion/hash": "^0.9.0", - "@emotion/memoize": "^0.8.0", - "@emotion/unitless": "^0.8.0", - "@emotion/utils": "^1.2.0", - "csstype": "^3.0.2" - }, - "dependencies": { - "@emotion/unitless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", - "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" - } - } - }, - "@emotion/sheet": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", - "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" - }, - "@emotion/styled": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.0.tgz", - "integrity": "sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA==", - "requires": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.0", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.0", - "@emotion/utils": "^1.2.0" - } - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@emotion/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" - }, - "@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" - }, - "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.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" - } - }, - "@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "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 - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@mui/base": { - "version": "5.0.0-alpha.93", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.93.tgz", - "integrity": "sha512-IVUWO0NNlELDc9FD7mM+fWTS1/6n5sJYdIbXpLQ00NjWdVEYmTyRgUAZDlJJJrz+tbF0eeffx0kOsvJvyTZlsA==", - "requires": { - "@babel/runtime": "^7.17.2", - "@emotion/is-prop-valid": "^1.1.3", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", - "@popperjs/core": "^2.11.6", - "clsx": "^1.2.1", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" - }, - "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - } - } - }, - "@mui/core-downloads-tracker": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.1.tgz", - "integrity": "sha512-zyzLkVSqi+WuxG8UZrrOaWbhHkDK+MlHFjLpL+vqUVU6iSUaDYREu1xoLWEQsWOznT4oT2iEiGZLpQLgkn+WiA==" - }, - "@mui/icons-material": { - "version": "5.8.4", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz", - "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==", - "requires": { - "@babel/runtime": "^7.17.2" - } - }, - "@mui/material": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.1.tgz", - "integrity": "sha512-E9fhskX6TwUdAzpL5+yoAzRxb6wY4oBqmBVlgUuLndSwPRYxXoGu+z74NxbDEkxUoHdb7vrDcRTswpB6ykDITQ==", - "requires": { - "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.93", - "@mui/core-downloads-tracker": "^5.10.1", - "@mui/system": "^5.10.1", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", - "@types/react-transition-group": "^4.4.5", - "clsx": "^1.2.1", - "csstype": "^3.1.0", - "prop-types": "^15.8.1", - "react-is": "^18.2.0", - "react-transition-group": "^4.4.5" - }, - "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - } - } - }, - "@mui/private-theming": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.9.3.tgz", - "integrity": "sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==", - "requires": { - "@babel/runtime": "^7.17.2", - "@mui/utils": "^5.9.3", - "prop-types": "^15.8.1" - } - }, - "@mui/styled-engine": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.1.tgz", - "integrity": "sha512-xiQp6wvSLpMcRCOExbRSvkHf6gIQ/eeK7mx/Re6BtPPYIx6OerPwia+23uVIop/k4Bs5D+w7Rv2yXYJxo5rMSQ==", - "requires": { - "@babel/runtime": "^7.17.2", - "@emotion/cache": "^11.9.3", - "csstype": "^3.1.0", - "prop-types": "^15.8.1" - } - }, - "@mui/system": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.1.tgz", - "integrity": "sha512-Ix8LVAMtVrNtmncK0yc5llHWlZKCm9okbw8QMnWbI5UH+nI9qhtf+Aure4p5ei6dGKdil++lukar/GxCjfzRSg==", - "requires": { - "@babel/runtime": "^7.17.2", - "@mui/private-theming": "^5.9.3", - "@mui/styled-engine": "^5.10.1", - "@mui/types": "^7.1.5", - "@mui/utils": "^5.9.3", - "clsx": "^1.2.1", - "csstype": "^3.1.0", - "prop-types": "^15.8.1" - } - }, - "@mui/types": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.5.tgz", - "integrity": "sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA==" - }, - "@mui/utils": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.9.3.tgz", - "integrity": "sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==", - "requires": { - "@babel/runtime": "^7.17.2", - "@types/prop-types": "^15.7.5", - "@types/react-is": "^16.7.1 || ^17.0.0", - "prop-types": "^15.8.1", - "react-is": "^18.2.0" - }, - "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - } - } - }, - "@next/env": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.5.tgz", - "integrity": "sha512-vLPLV3cpPGjUPT3PjgRj7e3nio9t6USkuew3JE/jMeon/9Mvp1WyR18v3iwnCuX7eUAm1HmAbJHHLAbcu/EJcw==" - }, - "@next/eslint-plugin-next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.5.tgz", - "integrity": "sha512-VBjVbmqEzGiOTBq4+wpeVXt/KgknnGB6ahvC/AxiIGnN93/RCSyXhFRI4uSfftM2Ba3w7ZO7076bfKasZsA0fw==", - "dev": true, - "requires": { - "glob": "7.1.7" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "@next/swc-android-arm-eabi": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.5.tgz", - "integrity": "sha512-cPWClKxGhgn2dLWnspW+7psl3MoLQUcNqJqOHk2BhNcou9ARDtC0IjQkKe5qcn9qg7I7U83Gp1yh2aesZfZJMA==", - "optional": true - }, - "@next/swc-android-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.2.5.tgz", - "integrity": "sha512-vMj0efliXmC5b7p+wfcQCX0AfU8IypjkzT64GiKJD9PgiA3IILNiGJr1fw2lyUDHkjeWx/5HMlMEpLnTsQslwg==", - "optional": true - }, - "@next/swc-darwin-arm64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.5.tgz", - "integrity": "sha512-VOPWbO5EFr6snla/WcxUKtvzGVShfs302TEMOtzYyWni6f9zuOetijJvVh9CCTzInnXAZMtHyNhefijA4HMYLg==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.5.tgz", - "integrity": "sha512-5o8bTCgAmtYOgauO/Xd27vW52G2/m3i5PX7MUYePquxXAnX73AAtqA3WgPXBRitEB60plSKZgOTkcpqrsh546A==", - "optional": true - }, - "@next/swc-freebsd-x64": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.5.tgz", - "integrity": "sha512-yYUbyup1JnznMtEBRkK4LT56N0lfK5qNTzr6/DEyDw5TbFVwnuy2hhLBzwCBkScFVjpFdfiC6SQAX3FrAZzuuw==", - "optional": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.5.tgz", - "integrity": "sha512-2ZE2/G921Acks7UopJZVMgKLdm4vN4U0yuzvAMJ6KBavPzqESA2yHJlm85TV/K9gIjKhSk5BVtauIUntFRP8cg==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.5.tgz", - "integrity": "sha512-/I6+PWVlz2wkTdWqhlSYYJ1pWWgUVva6SgX353oqTh8njNQp1SdFQuWDqk8LnM6ulheVfSsgkDzxrDaAQZnzjQ==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.5.tgz", - "integrity": "sha512-LPQRelfX6asXyVr59p5sTpx5l+0yh2Vjp/R8Wi4X9pnqcayqT4CUJLiHqCvZuLin3IsFdisJL0rKHMoaZLRfmg==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.5.tgz", - "integrity": "sha512-0szyAo8jMCClkjNK0hknjhmAngUppoRekW6OAezbEYwHXN/VNtsXbfzgYOqjKWxEx3OoAzrT3jLwAF0HdX2MEw==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.5.tgz", - "integrity": "sha512-zg/Y6oBar1yVnW6Il1I/08/2ukWtOG6s3acdJdEyIdsCzyQi4RLxbbhkD/EGQyhqBvd3QrC6ZXQEXighQUAZ0g==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.5.tgz", - "integrity": "sha512-3/90DRNSqeeSRMMEhj4gHHQlLhhKg5SCCoYfE3kBjGpE63EfnblYUqsszGGZ9ekpKL/R4/SGB40iCQr8tR5Jiw==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.5.tgz", - "integrity": "sha512-hGLc0ZRAwnaPL4ulwpp4D2RxmkHQLuI8CFOEEHdzZpS63/hMVzv81g8jzYA0UXbb9pus/iTc3VRbVbAM03SRrw==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.5.tgz", - "integrity": "sha512-7h5/ahY7NeaO2xygqVrSG/Y8Vs4cdjxIjowTZ5W6CKoTKn7tmnuxlUc2h74x06FKmbhAd9agOjr/AOKyxYYm9Q==", - "optional": 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" - } - }, - "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" - }, - "@rushstack/eslint-patch": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz", - "integrity": "sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==", - "dev": true - }, - "@swc/helpers": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.3.tgz", - "integrity": "sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==", - "requires": { - "tslib": "^2.4.0" - } - }, - "@tailwindcss/forms": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.2.tgz", - "integrity": "sha512-pSrFeJB6Bg1Mrg9CdQW3+hqZXAKsBrSG9MAfFLKy1pVA4Mb4W7C0k7mEhlmS2Dfo/otxrQOET7NJiJ9RrS563w==", - "requires": { - "mini-svg-data-uri": "^1.2.3" - } - }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "dev": true, - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "@types/node": { - "version": "18.7.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.8.tgz", - "integrity": "sha512-/YP55EMK2341JkODUb8DM9O0x1SIz2aBvyF33Uf1c76St3VpsMXEIW0nxuKkq/5cxnbz0RD9cfwNZHEAZQD3ag==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@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==" - }, - "@types/react": { - "version": "18.0.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz", - "integrity": "sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-calendar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@types/react-calendar/-/react-calendar-3.5.2.tgz", - "integrity": "sha512-8gkU9KaE33VVbu3YWvxXjEk4BsalgSYR3c/5XF9XNJiQ/2MKxiGkTg/PfOHUX/BvcADykRBMAEJiCi6jFPEE3A==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-dom": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", - "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/react-is": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", - "requires": { - "@types/react": "*" - } - }, - "@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", - "requires": { - "@types/react": "*" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/styled-components": { - "version": "5.1.26", - "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.26.tgz", - "integrity": "sha512-KuKJ9Z6xb93uJiIyxo/+ksS7yLjS1KzG6iv5i78dhVg/X3u5t1H7juRWqVmodIdz6wGVaIApo1u01kmFRdJHVw==", - "dev": true, - "requires": { - "@types/hoist-non-react-statics": "*", - "@types/react": "*", - "csstype": "^3.0.2" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz", - "integrity": "sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/type-utils": "5.35.1", - "@typescript-eslint/utils": "5.35.1", - "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/parser": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.35.1.tgz", - "integrity": "sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/typescript-estree": "5.35.1", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz", - "integrity": "sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/visitor-keys": "5.35.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz", - "integrity": "sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.35.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.35.1.tgz", - "integrity": "sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz", - "integrity": "sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/visitor-keys": "5.35.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.35.1.tgz", - "integrity": "sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.35.1", - "@typescript-eslint/types": "5.35.1", - "@typescript-eslint/typescript-estree": "5.35.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.35.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz", - "integrity": "sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.35.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@wojtekmaj/date-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.0.3.tgz", - "integrity": "sha512-1VPkkTBk07gMR1fjpBtse4G+oJqpmE+0gUFB0dg3VIL7qJmUVaBoD/vlzMm/jNeOPfvlmerl1lpnsZyBUFIRuw==" - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "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 - }, - "acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "requires": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "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" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "apexcharts": { - "version": "3.35.5", - "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.35.5.tgz", - "integrity": "sha512-Bi3aq35xWntI71JlywXTBBAOhuKTbB4wijKw4ClkIAFV904YDkHPIJ8N9LcZq9fvVb0VX1AEmyOFBOB2Vwsuew==", - "requires": { - "svg.draggable.js": "^2.2.2", - "svg.easing.js": "^2.0.0", - "svg.filter.js": "^2.0.2", - "svg.pathmorphing.js": "^0.1.3", - "svg.resize.js": "^1.4.3", - "svg.select.js": "^3.0.1" - } - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "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 - }, - "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } - }, - "array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - } - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", - "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", - "dev": true, - "requires": { - "browserslist": "^4.21.3", - "caniuse-lite": "^1.0.30001373", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axe-core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", - "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", - "dev": true - }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true - }, - "babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "requires": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - } - }, - "babel-plugin-styled-components": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz", - "integrity": "sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.0", - "@babel/helper-module-imports": "^7.16.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11", - "picomatch": "^2.3.0" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" - }, - "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 - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "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" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "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==" - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" - }, - "caniuse-lite": { - "version": "1.0.30001379", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001379.tgz", - "integrity": "sha512-zXf+qxuN8OJrK5Bl5HbJg8cc5/Zm01WNW4ooVWUh92YlKqQZW3fwN5lXLB+kI8wkP5vTWkIIN+rutZuJhf4ykw==" - }, - "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" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" - }, - "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 - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "core-js-pure": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz", - "integrity": "sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==", - "dev": true - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "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" - } - }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==" - }, - "css-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "csstype": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", - "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" - }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "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.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", - "dev": true - }, - "detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "requires": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - } - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "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" - } - }, - "dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "electron-to-chromium": { - "version": "1.4.225", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.225.tgz", - "integrity": "sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", - "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.4.3", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - } - }, - "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" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "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==" - }, - "eslint": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz", - "integrity": "sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "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.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.3", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "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.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - } - }, - "eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-config-airbnb-typescript": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", - "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", - "dev": true, - "requires": { - "eslint-config-airbnb-base": "^15.0.0" - } - }, - "eslint-config-next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.2.5.tgz", - "integrity": "sha512-SOowilkqPzW6DxKp3a3SYlrfPi5Ajs9MIzp9gVfUDxxH9QFM5ElkR1hX5m/iICJuvCbWgQqFBiA3mCMozluniw==", - "dev": true, - "requires": { - "@next/eslint-plugin-next": "12.2.5", - "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.21.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^2.7.1", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.5.0" - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true - }, - "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "glob": "^7.2.0", - "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - } - }, - "eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", - "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", - "dev": true, - "requires": { - "@babel/runtime": "^7.18.9", - "aria-query": "^4.2.2", - "array-includes": "^3.1.5", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.4.3", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.2", - "language-tags": "^1.0.5", - "minimatch": "^3.1.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-react": { - "version": "7.31.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz", - "integrity": "sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg==", - "dev": true, - "requires": { - "array-includes": "^3.1.5", - "array.prototype.flatmap": "^1.3.0", - "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.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.1", - "object.values": "^1.1.5", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.7" - }, - "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" - } - }, - "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" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "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 - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "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-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "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.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "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 - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "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==" - }, - "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" - } - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "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.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "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" - } - }, - "get-user-locale": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/get-user-locale/-/get-user-locale-1.5.1.tgz", - "integrity": "sha512-WiNpoFRcHn1qxP9VabQljzGwkAQDrcpqUtaP0rNBEkFxJdh4f3tik6MfZsMYZc+UgQJdGCxWEjL9wnCUlRQXag==", - "requires": { - "lodash.memoize": "^4.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.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "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-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" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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==", - "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.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "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-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "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": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "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-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-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" - } - }, - "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" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "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 - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "requires": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - } - }, - "language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dev": true, - "requires": { - "language-subtag-registry": "~0.3.2" - } - }, - "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" - } - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "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": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - }, - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "merge-class-names": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/merge-class-names/-/merge-class-names-1.4.2.tgz", - "integrity": "sha512-bOl98VzwCGi25Gcn3xKxnR5p/WrhWFQB59MS/aGENcmUc6iSm96yrFDF0XSNurX9qN4LbJm0R9kfvsQ17i8zCw==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==" - }, - "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" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "next": { - "version": "12.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-12.2.5.tgz", - "integrity": "sha512-tBdjqX5XC/oFs/6gxrZhjmiq90YWizUYU6qOWAfat7zJwrwapJ+BYgX2PmiacunXMaRpeVT4vz5MSPSLgNkrpA==", - "requires": { - "@next/env": "12.2.5", - "@next/swc-android-arm-eabi": "12.2.5", - "@next/swc-android-arm64": "12.2.5", - "@next/swc-darwin-arm64": "12.2.5", - "@next/swc-darwin-x64": "12.2.5", - "@next/swc-freebsd-x64": "12.2.5", - "@next/swc-linux-arm-gnueabihf": "12.2.5", - "@next/swc-linux-arm64-gnu": "12.2.5", - "@next/swc-linux-arm64-musl": "12.2.5", - "@next/swc-linux-x64-gnu": "12.2.5", - "@next/swc-linux-x64-musl": "12.2.5", - "@next/swc-win32-arm64-msvc": "12.2.5", - "@next/swc-win32-ia32-msvc": "12.2.5", - "@next/swc-win32-x64-msvc": "12.2.5", - "@swc/helpers": "0.4.3", - "caniuse-lite": "^1.0.30001332", - "postcss": "8.4.14", - "styled-jsx": "5.0.4", - "use-sync-external-store": "1.2.0" - }, - "dependencies": { - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - } - } - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "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==" - }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "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.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.hasown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", - "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", - "dev": true, - "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "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==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "postcss": { - "version": "8.4.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", - "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", - "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", - "dev": true, - "requires": { - "camelcase-css": "^2.0.1" - } - }, - "postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - } - }, - "postcss-nested": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", - "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.6" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "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 - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "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 - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "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-apexcharts": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.4.0.tgz", - "integrity": "sha512-DrcMV4aAMrUG+n6412yzyATWEyCDWlpPBBhVbpzBC4PDeuYU6iF84SmExbck+jx5MUm4U5PM3/T307Mc3kzc9Q==", - "requires": { - "prop-types": "^15.5.7" - } - }, - "react-calendar": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-3.7.0.tgz", - "integrity": "sha512-zkK95zWLWLC6w3O7p3SHx/FJXEyyD2UMd4jr3CrKD+G73N+G5vEwrXxYQCNivIPoFNBjqoyYYGlkHA+TBDPLCw==", - "requires": { - "@wojtekmaj/date-utils": "^1.0.2", - "get-user-locale": "^1.2.0", - "merge-class-names": "^1.1.1", - "prop-types": "^15.6.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==" - }, - "react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "requires": { - "pify": "^2.3.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "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==" - }, - "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" - } - }, - "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-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "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": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "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" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - }, - "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==" - }, - "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" - } - }, - "string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - } - }, - "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-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true - }, - "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 - }, - "styled-components": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.5.tgz", - "integrity": "sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^1.1.0", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1.12.0", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "styled-jsx": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.4.tgz", - "integrity": "sha512-sDFWLbg4zR+UkNzfk5lPilyIgtpddfxXEULxhujorr5jtePTUqiPDc5BC0v1NRqTr/WaFBGQQUoYToGlF4B2KQ==" - }, - "styled-reset": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/styled-reset/-/styled-reset-4.4.2.tgz", - "integrity": "sha512-VzVhEZHpO/CD/F5ZllqTAY+GTaKlNDZt5mTrtPf/kXZSe85+wMkhRIiPARgvCP9/HQMk+ZGaEWk1IkdP2SYAUQ==" - }, - "stylis": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" - }, - "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==" - }, - "svg.draggable.js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", - "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", - "requires": { - "svg.js": "^2.0.1" - } - }, - "svg.easing.js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", - "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", - "requires": { - "svg.js": ">=2.3.x" - } - }, - "svg.filter.js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", - "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", - "requires": { - "svg.js": "^2.2.5" - } - }, - "svg.js": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", - "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" - }, - "svg.pathmorphing.js": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", - "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", - "requires": { - "svg.js": "^2.4.0" - } - }, - "svg.resize.js": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", - "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", - "requires": { - "svg.js": "^2.6.5", - "svg.select.js": "^2.1.2" - }, - "dependencies": { - "svg.select.js": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", - "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", - "requires": { - "svg.js": "^2.2.5" - } - } - } - }, - "svg.select.js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", - "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", - "requires": { - "svg.js": "^2.6.5" - } - }, - "tailwindcss": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", - "integrity": "sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==", - "dev": true, - "requires": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "detective": "^5.2.1", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "lilconfig": "^2.0.6", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.14", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "5.0.6", - "postcss-selector-parser": "^6.0.10", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1" - } - }, - "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 - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "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 - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "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" - } - }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "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" - } - }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "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" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "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 - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "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/front-end/src/application/chart/MultiSeries.tsx b/front-end/src/application/chart/MultiSeries.tsx deleted file mode 100644 index 259cbe3..0000000 --- a/front-end/src/application/chart/MultiSeries.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import dynamic from 'next/dynamic'; -const ApexChart = dynamic(() => import('react-apexcharts'), { ssr: false }); - -export default function ChartSample() { - const [dataSample, setDataSample] = useState({ - series: [ - { - name: '불안', - data: [80], - }, - { - name: '분노', - data: [70], - }, - - { - name: '슬픔', - data: [40], - }, - - { - name: '당혹', - data: [30], - }, - { - name: '기쁨', - data: [30], - }, - ], - options: { - chart: { - type: 'bar', - stacked: true, - stackType: '100%', - toolbar: { - show: false, - }, - }, - plotOptions: { - bar: { - horizontal: true, - dataLabels: { - position: 'bottom', - }, - }, - }, - yaxis: { - show: false, - }, - grid: { - show: false, - }, - legend: { - show: false, - }, - xaxis: { - axisTicks: { show: false }, - labels: { show: false }, - axisBorder: { show: false }, - }, - dataLabels: { - enabled: true, - textAnchor: 'start', - dropShadow: { - enabled: true, - }, - }, - }, - }); - - return ( -
- -
- ); -} diff --git a/front-end/src/application/chat/ChatService.ts b/front-end/src/application/chat/ChatService.ts deleted file mode 100644 index d98242b..0000000 --- a/front-end/src/application/chat/ChatService.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * User (domain) - * - * MessageRes (domain) - * - message, writeAt, user:User, (추가 가능) - * - * ChatService (application) - * - property : ChatRepository - * - 가공 로직 - * - * ChatResource (infra) - * - property : SocketClient, HttpClient - */ -interface User { - name: string; - photo: string; -} - -export interface MessageRes { - text: string; - writeAt?: Date; - user: User; -} - -const MOCK_MESSAGE: MessageRes = { - text: 'hello this is mock', - user: { - name: 'PUE', - photo: 'mock photo url', - }, -}; -const MOCK_SEND_MESSAGE: MessageRes = { - text: 'hello?', - user: { - name: 'YOU', - photo: 'mock photo url', - }, -}; - -interface ChatRepository { - sendMessage(m: string): Promise; -} - -class ChatService { - addListener(cb: Function) {} - - clear() {} - - sendMessage() {} - - getMessageLog() { - const ret = Array(4) - .fill(null) - .map(() => MOCK_MESSAGE); - return ret.concat(MOCK_SEND_MESSAGE, MOCK_SEND_MESSAGE); - } -} - -// singleton instance -export const chatService = new ChatService(); diff --git a/front-end/src/application/diary/DayResults.ts b/front-end/src/application/diary/DayResults.ts deleted file mode 100644 index b873d58..0000000 --- a/front-end/src/application/diary/DayResults.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { MessageRes } from '../chat/ChatService'; - -export interface DayEmotion { - chatDay: string; - emotion: '불안' | '기쁨'; -} - -export interface DayLog { - chatLog: MessageRes; - emotionLog: DayEmotion; -} - -const MOCK_EMOTION_FEAR: DayEmotion = { - chatDay: new Date().toISOString().substring(0, 10), - emotion: '불안', -}; - -const MOCK_EMOTION_DELIGHT: DayEmotion = { - chatDay: new Date(new Date().setDate(new Date().getDate() - 1)) - .toISOString() - .substring(0, 10), - emotion: '기쁨', -}; - -const MOCK_EMOTION_DELIGHT2: DayEmotion = { - chatDay: new Date(new Date().setDate(new Date().getDate() + 10)) - .toISOString() - .substring(0, 10), - emotion: '기쁨', -}; - -const MOCK_EMOTION_FEAR2: DayEmotion = { - chatDay: new Date(new Date().setDate(new Date().getDate() + 12)) - .toISOString() - .substring(0, 10), - emotion: '불안', -}; -function setDayEmotion({ chatDay, emotion }: DayEmotion) { - return null; -} -export function getDayEmotion() { - return [ - MOCK_EMOTION_DELIGHT, - MOCK_EMOTION_FEAR, - MOCK_EMOTION_DELIGHT2, - MOCK_EMOTION_FEAR2, - ]; -} diff --git a/front-end/src/application/navigation/GNB.tsx b/front-end/src/application/navigation/GNB.tsx deleted file mode 100644 index 8a6eca5..0000000 --- a/front-end/src/application/navigation/GNB.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React, { useContext } from 'react'; -import { ArrowBackOutlined, PersonOutlineOutlined } from '@mui/icons-material'; -import { - AppBar, - Box, - Button, - IconButton, - Toolbar, - Typography, - useScrollTrigger, -} from '@mui/material'; -import Link from 'next/link'; -import { NavigationContext, SCREEN_NAME } from './NavigationProvider'; - -function ElevationScroll({ children }: { children: React.ReactElement }) { - const trigger = useScrollTrigger({ - disableHysteresis: true, - threshold: 0, - }); - - return React.cloneElement(children, { - elevation: trigger ? 4 : 0, - }); -} - -const Gnb = () => { - const [screenName, setScreenName] = useContext(NavigationContext); - return ( - - - - - {screenName !== SCREEN_NAME.home && ( - - )} - - - - - {screenName} - - - - setScreenName(SCREEN_NAME.profile)} - size="large" - color="inherit" - > - - - - - - - - - ); -}; - -export default Gnb; diff --git a/front-end/src/application/navigation/NavigationProvider.tsx b/front-end/src/application/navigation/NavigationProvider.tsx deleted file mode 100644 index 3a2811b..0000000 --- a/front-end/src/application/navigation/NavigationProvider.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React, { Dispatch, SetStateAction, useState } from 'react'; -import { useRouter } from 'next/router'; - -type IScreenState = [string, Dispatch>]; - -export const SCREEN_NAME: { [key: string]: string } = { - home: 'PUE', - chat: '상담', - profile: '내 프로필', - calender: '감정 캘린더', - calendar: '감정 캘린더', -}; - -/** - * @todo - * Context(Store)은 추후 infra로 이동 - * 상태 관리 논의 필요 - */ -export const NavigationContext = React.createContext( - [] as unknown as IScreenState, -); -NavigationContext.displayName = 'NavigationContext'; - -type INavigationProvider = React.PropsWithChildren; -const NavigationProvider = ({ children }: INavigationProvider) => { - const router = useRouter(); - const screenInit = router.pathname.split('/').pop(); - const screenState = useState( - (screenInit && SCREEN_NAME[screenInit]) || SCREEN_NAME.home, - ); - - return ( - - {children} - - ); -}; - -export default NavigationProvider; diff --git a/front-end/src/application/navigation/QuickButton.tsx b/front-end/src/application/navigation/QuickButton.tsx deleted file mode 100644 index 77ab094..0000000 --- a/front-end/src/application/navigation/QuickButton.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, { useCallback, useContext, useState } from 'react'; -import { Backdrop, Box, Fab } from '@mui/material'; -import { - Add, - HomeOutlined, - MessageOutlined, - TodayOutlined, -} from '@mui/icons-material'; -import Link from 'next/link'; -import { NavigationContext, SCREEN_NAME } from './NavigationProvider'; - -const wrapStyle = { - display: 'flex', - flexWrap: 'wrap', - width: 1, - height: 100, - justifyContent: 'center', - alignItems: 'flex-end', - justifySelf: 'center', - position: 'fixed', - bottom: 20, -}; - -type IQuickButton = {}; -const QuickButton = ({}: IQuickButton) => { - const [isOpen, setIsOpen] = useState(false); - const toggleOpen = () => setIsOpen(prev => !prev); - const [screenName, setScreenName] = useContext(NavigationContext); - - const handleQB = useCallback( - (name: string) => { - setScreenName(name); - setIsOpen(false); - }, - [setScreenName], - ); - - return screenName !== SCREEN_NAME.chat ? ( - - - {isOpen && ( - - - handleQB(SCREEN_NAME.home)} - > - - - - - handleQB(SCREEN_NAME.chat)} - > - - - - - handleQB(SCREEN_NAME.calendar)} - > - - - - - )} - - - - - ) : null; -}; - -export default QuickButton; diff --git a/front-end/src/application/navigation/index.tsx b/front-end/src/application/navigation/index.tsx deleted file mode 100644 index 634350d..0000000 --- a/front-end/src/application/navigation/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import QuickButton from './QuickButton'; -import Gnb from './GNB'; -import NavigationProvider from './NavigationProvider'; - -/** - * @todo - * navigationProvider 제외, component/navigation 으로 이동 - * - * provider : navigation local context 이므로 application에 위치 - * UI : presentation이므로 component/navigation에 위치 - */ -type INavigation = React.PropsWithChildren<{}>; -const Navigation = ({ children }: INavigation) => { - return ( - - - {children} - - - ); -}; - -export default Navigation; diff --git a/front-end/src/components/character/index.tsx b/front-end/src/components/character/index.tsx deleted file mode 100644 index 52adc7b..0000000 --- a/front-end/src/components/character/index.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as React from 'react'; -import { Box } from '@mui/material'; -import CharacterMessage from './message'; - -/** - * - * @returns Container (Character Box, Message Box) - */ -const CharacterContainer = () => { - return ( - - - - - ); -}; - -export default CharacterContainer; diff --git a/front-end/src/components/character/message.tsx b/front-end/src/components/character/message.tsx deleted file mode 100644 index 344cc3c..0000000 --- a/front-end/src/components/character/message.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { Paper } from '@mui/material'; -import React from 'react'; - -interface CharacterMessage { - isFirst?: boolean; - message: string; - userName: string; -} - -/** - * @todo - * interface 수정 - * 서버에서 message를 사용자의 데이터에 따라 message를 받아오게 - */ -const CharacterMessage = ({ isFirst, message, userName }: CharacterMessage) => { - return ( - - Hello! My name is PUE! - - ); -}; - -export default CharacterMessage; diff --git a/front-end/src/components/chat/Message.tsx b/front-end/src/components/chat/Message.tsx deleted file mode 100644 index 44c2ea0..0000000 --- a/front-end/src/components/chat/Message.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React from 'react'; -import { MessageRes } from '../../application/chat/ChatService'; -import { Avatar, Box, Paper, Typography } from '@mui/material'; - -type IMessage = MessageRes; - -export const MessageLeft = ({ text }: IMessage) => { - return ( - - 퓨이 - - 퓨이 - - {text} - - - - ); -}; -export const MessageRight = ({ text }: IMessage) => { - return ( - - - - {text} - - - - ); -}; diff --git a/front-end/src/components/chat/index.tsx b/front-end/src/components/chat/index.tsx deleted file mode 100644 index df57443..0000000 --- a/front-end/src/components/chat/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import React, { useCallback, useEffect, useRef, useState } from 'react'; -import { chatService, MessageRes } from '../../application/chat/ChatService'; -import { MessageLeft, MessageRight } from './Message'; -import ChatInput from '../input/ChatInput'; -import { Box } from '@mui/material'; - -type IChat = {}; -const ChatContainer = ({}: IChat) => { - const [messages, setMessages] = useState([]); - const scrollRef = useRef(null); - - const addMessage = (m: MessageRes) => setMessages(prev => prev.concat(m)); - - const handleSendMessage = useCallback((message: string) => { - /** - * @todo - * create Message Domain - */ - const param: MessageRes = { - text: message, - user: { name: 'sohee', photo: '' }, - }; - addMessage(param); - - /** - * @todo - * send Message Domain to ChatService - */ - chatService.sendMessage(); - }, []); - - useEffect(() => { - chatService.addListener(addMessage); - setMessages(chatService.getMessageLog()); - return () => chatService.clear(); - }, []); - - useEffect(() => { - if (scrollRef.current) { - scrollRef.current.scrollTop = scrollRef.current.scrollHeight; - } - }, [messages]); - - /** - * @desc - * index key 는 권장하지 않지만, - * element 순서가 바뀌진 않으므로 사용한다. - */ - return ( - - - {messages.map((message, idx) => - message.user.name === 'PUE' ? ( - - ) : ( - - ), - )} - - - - ); -}; - -export default ChatContainer; diff --git a/front-end/src/components/diary/Emotion.tsx b/front-end/src/components/diary/Emotion.tsx deleted file mode 100644 index 9d372c2..0000000 --- a/front-end/src/components/diary/Emotion.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Box, Typography } from '@mui/material'; -import { padding } from '@mui/system'; -import { DayEmotion } from '../../application/diary/DayResults'; - -/** - * - * emoji 대신 그림 추가 - * */ -type IEmotion = DayEmotion; -export const Emotion = ({ emotion }: IEmotion) => { - return ( - - {emotion === '기쁨' ? '😀' : '불안' ? '😰' : null} - - ); -}; diff --git a/front-end/src/components/diary/index.tsx b/front-end/src/components/diary/index.tsx deleted file mode 100644 index 0483adf..0000000 --- a/front-end/src/components/diary/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { Box, Typography } from '@mui/material'; -import moment from 'moment'; -import dynamic from 'next/dynamic'; -import { useEffect, useState } from 'react'; -import styled from 'styled-components'; -import { DayEmotion, getDayEmotion } from '../../application/diary/DayResults'; -import { Emotion } from './Emotion'; -const Calendar = dynamic(() => import('react-calendar'), { ssr: false }); - -/** - * @todos - * 1. Calendar Css 수정 필요 (img 들어가게) - * 2. 서버로 부터 해당 일에 대한 감정, 채팅 내역을 불러 오게 - */ - -const EmotionContainer = styled.div` - display: flex; - justify-content: center; - align-items: center; -`; -const Diary = () => { - const [value, setDate] = useState(new Date()); - const [emotions, setEmotions] = useState([]); - useEffect(() => { - setEmotions(getDayEmotion()); - }, []); - - return ( - - moment(date).format('D')} - value={value} - onChange={setDate} - minDetail="month" - maxDetail="month" - showNeighboringMonth={false} - locale="ENG" - tileContent={({ date }) => { - return ( - - {emotions.map(x => - x.chatDay === moment(date).format('YYYY-MM-DD') ? ( - <> - - - ) : ( - <> - ), - )} - - ); - }} - /> - {value.toDateString()} - - ); -}; - -export default Diary; diff --git a/front-end/src/components/input/ChatInput.tsx b/front-end/src/components/input/ChatInput.tsx deleted file mode 100644 index 78ebd07..0000000 --- a/front-end/src/components/input/ChatInput.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React, { useState } from 'react'; -import { Box, IconButton, InputBase, Paper } from '@mui/material'; -import { Send } from '@mui/icons-material'; - -type IInput = { handler: (m: string) => void }; - -const ChatInput = ({ handler }: IInput) => { - /** - * @desc - * Controlled Component - */ - const [text, setText] = useState(''); - const onSubmit = (e: React.FormEvent) => { - e.preventDefault(); - if (text === '') return; - - handler(text); - setText(''); - }; - - return ( - - - setText(e.target.value)} - fullWidth - placeholder={'메세지를 입력해 주세요.'} - /> - - - - - - ); -}; - -export default ChatInput; diff --git a/front-end/src/pages/_app.tsx b/front-end/src/pages/_app.tsx deleted file mode 100644 index c2830e5..0000000 --- a/front-end/src/pages/_app.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { AppProps } from 'next/app'; -<<<<<<< HEAD:src/pages/_app.tsx -import '../../styles/globals.css'; -import '../../styles/calendar.css'; -======= -import '../styles/globals.css'; -import '../styles/calendar.css'; ->>>>>>> c7a78574735642dea61b1ef5e7cc35aa58a145f1:front-end/src/pages/_app.tsx -import Navigation from '../application/navigation'; -import { CssBaseline } from '@mui/material'; - -function App({ Component, pageProps }: AppProps) { - return ( - - - - - ); -} - -export default App; diff --git a/front-end/src/pages/calendar/index.tsx b/front-end/src/pages/calendar/index.tsx deleted file mode 100644 index a74e190..0000000 --- a/front-end/src/pages/calendar/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import type { NextPage } from 'next'; -import { Container } from '@mui/material'; -import styled from 'styled-components'; -import CharacterContainer from '../../components/character'; -import Diary from '../../components/diary'; -import MultiSeries from '../../application/chart/MultiSeries'; -const Chart = styled.div``; -const CalendarPage: NextPage = () => { - return ( - - - - - ); -}; - -export default CalendarPage; diff --git a/front-end/src/pages/chat/index.tsx b/front-end/src/pages/chat/index.tsx deleted file mode 100644 index be7f330..0000000 --- a/front-end/src/pages/chat/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import type { NextPage } from 'next'; -import ChatContainer from '../../components/chat'; -import { Container } from '@mui/material'; -import { useLayoutEffect } from 'react'; - -export interface IChat { - isUser: boolean; - message: string; - date: Date; - option?: string; - emotion?: 'Positive' | 'Negative' | 'Sad' | ''; - hasError: boolean; -} - -/** - * @desc 채팅 서비스 - * 말풍선, 선택지, 입력 UI, layout - application - * 채팅 메세지 전달 - domain - * socket 통신 담당 - infra - */ - -const Chat: NextPage = () => { - useLayoutEffect(() => { - document.body.style.backgroundColor = 'mintcream'; - return () => { - document.body.style.backgroundColor = 'white'; - }; - }, []); - - return ( - - - - ); -}; - -export default Chat; diff --git a/front-end/src/pages/index.tsx b/front-end/src/pages/index.tsx deleted file mode 100644 index 5dd54e5..0000000 --- a/front-end/src/pages/index.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { NextPage } from 'next'; - -const Home: NextPage = () => { - return ( -
-

I'm Home

-
- ); -}; - -export default Home; diff --git a/front-end/styles/calendar.css b/front-end/styles/calendar.css deleted file mode 100644 index b593630..0000000 --- a/front-end/styles/calendar.css +++ /dev/null @@ -1,186 +0,0 @@ -.react-calendar { - width: 350px; - max-width: 100%; - background: white; - font-family: Arial, Helvetica, sans-serif; - line-height: 1.125em; -} -.react-calendar--doubleView { - width: 700px; -} -.react-calendar--doubleView .react-calendar__viewContainer { - display: flex; - margin: -0.5em; -} -.react-calendar--doubleView .react-calendar__viewContainer > * { - width: 50%; - margin: 0.5em; -} -.react-calendar, -.react-calendar *, -.react-calendar *:before, -.react-calendar *:after { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - /*padding: 3px 1.5px 2px 1.5px;*/ -} -.react-calendar button { - margin: 0; - border: 0; - outline: none; -} -.react-calendar button:enabled:hover { - cursor: pointer; -} - -/* navigation */ -.react-calendar__navigation { - display: flex; - height: 42px; - margin-bottom: -1.5em; -} - -/* navigation title box */ -.react-calendar__navigation button:disabled { - background-color: white; -} -.react-calendar__navigation button { - min-width: 44px; - background: none; -} -/* navigation label title */ -.react-calendar__navigation__label__labelText { - color: black; - font-size: 20px; -} -/* navigation 2 arrow */ -.react-calendar__navigation__prev2-button { - display: none; -} -.react-calendar__navigation__next2-button { - display: none; -} -.react-calendar__navigation button:enabled:hover, -.react-calendar__navigation button:enabled:focus { - background-color: none; -} - -/* calendar container*/ -.react-calendar__viewContainer { - max-width: 100%; -} -/* month container */ -.react-calendar__month-view { - border: 1px solid #76baff; - border-radius: 5%; - margin-top: 30px; -} -/* weekdays */ -.react-calendar__month-view__weekdays { - max-width: 100%; - justify-content: space-between; - text-align: center; - text-transform: uppercase; - font-weight: bold; - font-size: 1em; - border-bottom: 1px solid #76baff; - margin-bottom: 10px; -} -.react-calendar__month-view__weekdays__weekday { - padding: 0.5em; -} -.react-calendar__month-view__weekNumbers .react-calendar__tile { - display: flex; - align-items: center; - justify-content: center; - font-size: 0.75em; - font-weight: bold; -} -.react-calendar__month-view__days__day--weekend { - color: #d10000; -} -.react-calendar__month-view__days__day--neighboringMonth { - color: #757575; -} -.react-calendar__year-view .react-calendar__tile, -.react-calendar__decade-view .react-calendar__tile, -.react-calendar__century-view .react-calendar__tile { - padding: 2em 0.5em; -} - -/* days container */ -.react-calendar__month-view__days { - display: flex; -} -/* calendar days */ -.react-calendar__tile { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - max-width: 100%; - padding: 6.66667px 7px 0px; - font-size: 1em; - height: 64px; - background: none; - text-align: start; - /* border: 1px solid rgba(133, 133, 133, 0.25); */ -} - -.react-calendar__tile abbr { - align-self: flex-start; -} -/* calendar date disalbed*/ -.react-calendar__tile:disabled { - background-color: #f0f0f0; -} -.react-calendar__tile:enabled:hover, -.react-calendar__tile:enabled:focus { - box-shadow: 0 0 0 1px rgb(133, 133, 133) inset; - border-radius: 10%; -} - -/* calendar date today */ -.react-calendar__tile--now { - background: #ffff76; - border-radius: 10%; -} -.react-calendar__tile--now:enabled:hover, -.react-calendar__tile--now:enabled:focus { - background: #ffffa9; -} - -/* ~ */ -.react-calendar__tile--hasActive { - background: #76baff; -} -.react-calendar__tile--hasActive:enabled:hover, -.react-calendar__tile--hasActive:enabled:focus { - background: #a9d4ff; -} - -/* calendar date active*/ -.react-calendar__tile--active { - background: #006edc; - border-radius: 10%; - color: white; -} -.react-calendar__tile--active:enabled:hover, -.react-calendar__tile--active:enabled:focus { - background: #1087ff; -} -.react-calendar--selectRange .react-calendar__tile--hover { - background-color: #e6e6e6; -} - -/* dot */ -.dot { - height: 8px; - width: 8px; - background-color: #f87171; - border-radius: 50%; - display: flex; - margin-left: 1px; -} diff --git a/package-lock.json b/package-lock.json index 0c34c52..58e0519 100644 --- a/package-lock.json +++ b/package-lock.json @@ -992,6 +992,19 @@ "picomatch": "^2.0.4" } }, + "apexcharts": { + "version": "3.35.5", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.35.5.tgz", + "integrity": "sha512-Bi3aq35xWntI71JlywXTBBAOhuKTbB4wijKw4ClkIAFV904YDkHPIJ8N9LcZq9fvVb0VX1AEmyOFBOB2Vwsuew==", + "requires": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, "arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -2886,6 +2899,14 @@ "loose-envify": "^1.1.0" } }, + "react-apexcharts": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.4.0.tgz", + "integrity": "sha512-DrcMV4aAMrUG+n6412yzyATWEyCDWlpPBBhVbpzBC4PDeuYU6iF84SmExbck+jx5MUm4U5PM3/T307Mc3kzc9Q==", + "requires": { + "prop-types": "^15.5.7" + } + }, "react-calendar": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/react-calendar/-/react-calendar-3.7.0.tgz", @@ -3190,6 +3211,70 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "requires": { + "svg.js": "^2.0.1" + } + }, + "svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "requires": { + "svg.js": ">=2.3.x" + } + }, + "svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "requires": { + "svg.js": "^2.2.5" + } + }, + "svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "requires": { + "svg.js": "^2.4.0" + } + }, + "svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "requires": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "dependencies": { + "svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "requires": { + "svg.js": "^2.2.5" + } + } + } + }, + "svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "requires": { + "svg.js": "^2.6.5" + } + }, "tailwindcss": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.8.tgz", diff --git a/package.json b/package.json index e893a0b..0552e65 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@mui/icons-material": "^5.10.3", "@mui/material": "^5.10.3", "@tailwindcss/forms": "^0.5.3", + "apexcharts": "^3.35.5", "moment": "^2.29.4", "next": "12.2.5", "react": "18.2.0", diff --git a/src/application/diary/DayResults.ts b/src/application/diary/DayResults.ts index b873d58..6ebe76d 100644 --- a/src/application/diary/DayResults.ts +++ b/src/application/diary/DayResults.ts @@ -2,7 +2,7 @@ import { MessageRes } from '../chat/ChatService'; export interface DayEmotion { chatDay: string; - emotion: '불안' | '기쁨'; + emotion: '불안' | '기쁨' | '분노' | '슬픔'; } export interface DayLog { @@ -35,6 +35,25 @@ const MOCK_EMOTION_FEAR2: DayEmotion = { .substring(0, 10), emotion: '불안', }; +const MOCK_EMOTION_FEAR3: DayEmotion = { + chatDay: new Date(new Date().setDate(new Date().getDate() + 13)) + .toISOString() + .substring(0, 10), + emotion: '불안', +}; +const MOCK_EMOTION_ANGRY: DayEmotion = { + chatDay: new Date(new Date().setDate(new Date().getDate() + 6)) + .toISOString() + .substring(0, 10), + emotion: '분노', +}; + +const MOCK_EMOTION_SAD: DayEmotion = { + chatDay: new Date(new Date().setDate(new Date().getDate() + 4)) + .toISOString() + .substring(0, 10), + emotion: '슬픔', +}; function setDayEmotion({ chatDay, emotion }: DayEmotion) { return null; } @@ -44,5 +63,8 @@ export function getDayEmotion() { MOCK_EMOTION_FEAR, MOCK_EMOTION_DELIGHT2, MOCK_EMOTION_FEAR2, + MOCK_EMOTION_SAD, + MOCK_EMOTION_ANGRY, + MOCK_EMOTION_FEAR3, ]; } diff --git a/src/components/charts/Charts.tsx b/src/components/charts/Charts.tsx new file mode 100644 index 0000000..2993823 --- /dev/null +++ b/src/components/charts/Charts.tsx @@ -0,0 +1,67 @@ +import { Box, Typography } from '@mui/material'; +import { ApexOptions } from 'apexcharts'; +import dynamic from 'next/dynamic'; +import { useEffect, useState } from 'react'; +import { DayEmotion, getDayEmotion } from '../../application/diary/DayResults'; +const ApexChart = dynamic(() => import('react-apexcharts'), { ssr: false }); +/** + * + * + * */ + +export const Charts = () => { + const [emotions, setEmotions] = useState([]); + useEffect(() => { + setEmotions(getDayEmotion()); + }, []); + const [setting, setSetting] = useState({ + series: [ + { + data: [(3 / 7) * 100, (2 / 7) * 100, (1 / 7) * 100, (1 / 7) * 100], + }, + ], + }); + const options: ApexOptions = { + chart: { + type: 'bar', + toolbar: { + show: false, + }, + dropShadow: { + enabled: true, + top: 0, + left: 0, + blur: 3, + opacity: 0.5, + }, + }, + plotOptions: { + bar: { + horizontal: true, + borderRadius: 10, + distributed: true, + }, + }, + grid: { + show: false, + }, + xaxis: { + labels: { show: false }, + axisBorder: { show: false }, + categories: ['불안', '기쁨', '분노', '슬픔'], + }, + colors: ['#33b2df', '#d4526e', '#f48024', '#546E7A'], + + dataLabels: { + enabled: false, + }, + tooltip: { + enabled: false, + }, + legend: { + show: false, + }, + }; + console.log(emotions.map(x => x.emotion)); + return ; +}; diff --git a/src/components/diary/Emotion.tsx b/src/components/diary/Emotion.tsx index 9d372c2..34ee2c1 100644 --- a/src/components/diary/Emotion.tsx +++ b/src/components/diary/Emotion.tsx @@ -1,5 +1,5 @@ -import { Box, Typography } from '@mui/material'; -import { padding } from '@mui/system'; +import { Typography } from '@mui/material'; +import { useEffect, useState } from 'react'; import { DayEmotion } from '../../application/diary/DayResults'; /** @@ -8,9 +8,19 @@ import { DayEmotion } from '../../application/diary/DayResults'; * */ type IEmotion = DayEmotion; export const Emotion = ({ emotion }: IEmotion) => { + const [emotionEmoji, setEmotionEmoji] = useState(''); + useEffect(() => { + if (emotion === '기쁨') { + setEmotionEmoji('😀'); + } else if (emotion === '불안') { + setEmotionEmoji('😰'); + } else if (emotion === '분노') { + setEmotionEmoji('😡'); + } else if (emotion === '슬픔') { + setEmotionEmoji('😭'); + } + }, []); return ( - - {emotion === '기쁨' ? '😀' : '불안' ? '😰' : null} - + {emotionEmoji} ); }; diff --git a/src/components/diary/index.tsx b/src/components/diary/index.tsx index 0483adf..53cb047 100644 --- a/src/components/diary/index.tsx +++ b/src/components/diary/index.tsx @@ -1,8 +1,7 @@ -import { Box, Typography } from '@mui/material'; +import { Box, Typography, styled } from '@mui/material'; import moment from 'moment'; import dynamic from 'next/dynamic'; import { useEffect, useState } from 'react'; -import styled from 'styled-components'; import { DayEmotion, getDayEmotion } from '../../application/diary/DayResults'; import { Emotion } from './Emotion'; const Calendar = dynamic(() => import('react-calendar'), { ssr: false }); @@ -13,11 +12,6 @@ const Calendar = dynamic(() => import('react-calendar'), { ssr: false }); * 2. 서버로 부터 해당 일에 대한 감정, 채팅 내역을 불러 오게 */ -const EmotionContainer = styled.div` - display: flex; - justify-content: center; - align-items: center; -`; const Diary = () => { const [value, setDate] = useState(new Date()); const [emotions, setEmotions] = useState([]); @@ -37,17 +31,13 @@ const Diary = () => { locale="ENG" tileContent={({ date }) => { return ( - + <> {emotions.map(x => x.chatDay === moment(date).format('YYYY-MM-DD') ? ( - <> - - - ) : ( - <> - ), + + ) : null, )} - + ); }} /> diff --git a/src/pages/calendar/index.tsx b/src/pages/calendar/index.tsx index dba6feb..ae57f98 100644 --- a/src/pages/calendar/index.tsx +++ b/src/pages/calendar/index.tsx @@ -1,14 +1,15 @@ import type { NextPage } from 'next'; import { Container } from '@mui/material'; -import styled from 'styled-components'; import CharacterContainer from '../../components/character'; import Diary from '../../components/diary'; -const Chart = styled.div``; +import { Charts } from '../../components/charts/Charts'; + const CalendarPage: NextPage = () => { return ( - + + ); }; From 0a999a3cfc2c6e76056fc3f6e6e33ee6ae119bd8 Mon Sep 17 00:00:00 2001 From: elbica Date: Fri, 9 Sep 2022 05:08:37 +0900 Subject: [PATCH 024/102] =?UTF-8?q?feat=20:=20=ED=94=84=EB=A1=9C=ED=95=84?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B0=9C=EB=B0=9C=20(1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 닉네임, 프로필 등 meta UI 개발 - mock 데이터 기반 --- public/profile.jpg | Bin 0 -> 275793 bytes src/components/Avatar/ProfileAvatar.tsx | 14 ++++++++ src/components/chat/index.tsx | 3 +- src/components/navigation/index.tsx | 25 +++++++------ src/components/profile/Info.tsx | 8 ----- src/components/profile/info/index.tsx | 31 ++++++++++++++++ src/components/profile/info/meta.tsx | 45 ++++++++++++++++++++++++ src/pages/profile/index.tsx | 7 ++-- 8 files changed, 109 insertions(+), 24 deletions(-) create mode 100644 public/profile.jpg create mode 100644 src/components/Avatar/ProfileAvatar.tsx delete mode 100644 src/components/profile/Info.tsx create mode 100644 src/components/profile/info/index.tsx create mode 100644 src/components/profile/info/meta.tsx diff --git a/public/profile.jpg b/public/profile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc6ebead1141e828dc3dcb3d8ca2107bc5f2e510 GIT binary patch literal 275793 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 z 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 c1F{ { + return ( + + ); +}; + +export default ProfileAvatar; diff --git a/src/components/chat/index.tsx b/src/components/chat/index.tsx index ca51334..f2847f4 100644 --- a/src/components/chat/index.tsx +++ b/src/components/chat/index.tsx @@ -43,8 +43,9 @@ const ChatContainer = () => { diff --git a/src/components/navigation/index.tsx b/src/components/navigation/index.tsx index 17cd15b..ec0e11f 100644 --- a/src/components/navigation/index.tsx +++ b/src/components/navigation/index.tsx @@ -2,23 +2,26 @@ import React from 'react'; import QuickButton from './QuickButton'; import Gnb from './GNB'; import NavigationProvider from './NavigationProvider'; -import { Container } from '@mui/material'; +import { Box, Container } from '@mui/material'; type INavigation = React.PropsWithChildren; const Navigation = ({ children }: INavigation) => { return ( - - {children} - + + + {children} + + ); diff --git a/src/components/profile/Info.tsx b/src/components/profile/Info.tsx deleted file mode 100644 index b0b022a..0000000 --- a/src/components/profile/Info.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; - -type IInfo = {}; -const Info = ({}: IInfo) => { - return
asdf
; -}; - -export default Info; diff --git a/src/components/profile/info/index.tsx b/src/components/profile/info/index.tsx new file mode 100644 index 0000000..accfac6 --- /dev/null +++ b/src/components/profile/info/index.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +import { Box } from '@mui/material'; +import Meta from '@components/profile/info/meta'; + +const Info = () => { + /** + * @todo + * User domain 상태 관리 + */ + return ( +
+ + +
+ ); +}; + +export default Info; diff --git a/src/components/profile/info/meta.tsx b/src/components/profile/info/meta.tsx new file mode 100644 index 0000000..de02fc4 --- /dev/null +++ b/src/components/profile/info/meta.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { Box, Stack, Typography } from '@mui/material'; +import ProfileAvatar from '@components/Avatar/ProfileAvatar'; + +type IMeta = { nickName: string; userName: string; register: string }; + +const Meta = ({ nickName, userName, register }: IMeta) => { + return ( + + + + + + + {nickName} + + + {userName} + + + {register} 가입 + + + + ); +}; + +export default Meta; diff --git a/src/pages/profile/index.tsx b/src/pages/profile/index.tsx index deb3244..2c3db02 100644 --- a/src/pages/profile/index.tsx +++ b/src/pages/profile/index.tsx @@ -10,19 +10,18 @@ */ import React from 'react'; -import { Container } from '@mui/material'; -import Info from '@components/profile/Info'; +import Info from '@components/profile/info'; import History from '@components/profile/History'; import Setting from '@components/profile/Setting'; type IProfile = {}; const Profile = ({}: IProfile) => { return ( - + <> - + ); }; From 6a8ce517cb2bebfa622fc64817c528c8295df8c7 Mon Sep 17 00:00:00 2001 From: elbica Date: Sat, 10 Sep 2022 01:46:20 +0900 Subject: [PATCH 025/102] =?UTF-8?q?feat=20:=20=ED=94=84=EB=A1=9C=ED=95=84?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B0=9C=EB=B0=9C=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 프로필 페이지 UI 개발 완료 - 다크 모드 toggle 설정 구현 - mock 데이터 기반 --- .../{Avatar => avatar}/ProfileAvatar.tsx | 0 src/components/profile/History.tsx | 8 --- src/components/profile/Setting.tsx | 8 --- src/components/profile/footer/index.tsx | 37 ++++++++++ src/components/profile/history/Count.tsx | 68 +++++++++++++++++++ src/components/profile/history/index.tsx | 19 ++++++ src/components/profile/info/index.tsx | 16 +---- src/components/profile/info/meta.tsx | 23 ++++--- .../profile/setting/SettingItem.tsx | 35 ++++++++++ src/components/profile/setting/index.tsx | 47 +++++++++++++ src/helper/styles/defaultStyle.ts | 6 ++ src/pages/_app.tsx | 10 +-- src/pages/profile/index.tsx | 18 +++-- 13 files changed, 245 insertions(+), 50 deletions(-) rename src/components/{Avatar => avatar}/ProfileAvatar.tsx (100%) delete mode 100644 src/components/profile/History.tsx delete mode 100644 src/components/profile/Setting.tsx create mode 100644 src/components/profile/footer/index.tsx create mode 100644 src/components/profile/history/Count.tsx create mode 100644 src/components/profile/history/index.tsx create mode 100644 src/components/profile/setting/SettingItem.tsx create mode 100644 src/components/profile/setting/index.tsx diff --git a/src/components/Avatar/ProfileAvatar.tsx b/src/components/avatar/ProfileAvatar.tsx similarity index 100% rename from src/components/Avatar/ProfileAvatar.tsx rename to src/components/avatar/ProfileAvatar.tsx diff --git a/src/components/profile/History.tsx b/src/components/profile/History.tsx deleted file mode 100644 index 9339f42..0000000 --- a/src/components/profile/History.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; - -type IHistory = {}; -const History = ({}: IHistory) => { - return
asdf
; -}; - -export default History; diff --git a/src/components/profile/Setting.tsx b/src/components/profile/Setting.tsx deleted file mode 100644 index 10ade37..0000000 --- a/src/components/profile/Setting.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; - -type ISetting = {}; -const Setting = ({}: ISetting) => { - return
asdf
; -}; - -export default Setting; diff --git a/src/components/profile/footer/index.tsx b/src/components/profile/footer/index.tsx new file mode 100644 index 0000000..37b3f09 --- /dev/null +++ b/src/components/profile/footer/index.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import { ButtonBase, Stack, Typography } from '@mui/material'; + +type IFooter = {}; +const Footer = ({}: IFooter) => { + const onPolicy = () => {}; + const onLogout = () => {}; + return ( + + + + + 서비스 약관 + + + + + 로그아웃 + + + + + Copyright 2022. Team PUE. All rights reserved. + + + ); +}; + +export default Footer; diff --git a/src/components/profile/history/Count.tsx b/src/components/profile/history/Count.tsx new file mode 100644 index 0000000..eae1b53 --- /dev/null +++ b/src/components/profile/history/Count.tsx @@ -0,0 +1,68 @@ +import React, { useState } from 'react'; +import { + Box, + ButtonBase, + Card, + CardActions, + CardContent, + Typography, +} from '@mui/material'; + +type ICount = { title: string; count: number }; + +/** + * @todo + * add callback function parameter + * + * @param title Card header + * @param count + * @constructor + */ +const Count = ({ title, count }: ICount) => { + const [raised, setRaised] = useState(false); + return ( + setRaised(true)} + onMouseOut={() => setRaised(false)} + sx={{ + width: '12rem', + p: '1.5rem', + borderRadius: '1rem', + }} + > + + + {title} + + + + {count} + + + + + + + + 자세히 보기 + + + + + ); +}; + +export default Count; diff --git a/src/components/profile/history/index.tsx b/src/components/profile/history/index.tsx new file mode 100644 index 0000000..deb4950 --- /dev/null +++ b/src/components/profile/history/index.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { Stack } from '@mui/material'; +import Count from '@components/profile/history/Count'; + +type IHistory = {}; +const History = ({}: IHistory) => { + /** + * @todo + * user domain connect + */ + return ( + + + + + ); +}; + +export default History; diff --git a/src/components/profile/info/index.tsx b/src/components/profile/info/index.tsx index accfac6..f920ffc 100644 --- a/src/components/profile/info/index.tsx +++ b/src/components/profile/info/index.tsx @@ -8,23 +8,13 @@ const Info = () => { * User domain 상태 관리 */ return ( -
- + -
+
); }; diff --git a/src/components/profile/info/meta.tsx b/src/components/profile/info/meta.tsx index de02fc4..151a324 100644 --- a/src/components/profile/info/meta.tsx +++ b/src/components/profile/info/meta.tsx @@ -1,27 +1,30 @@ import React from 'react'; import { Box, Stack, Typography } from '@mui/material'; -import ProfileAvatar from '@components/Avatar/ProfileAvatar'; +import ProfileAvatar from '@components/avatar/ProfileAvatar'; type IMeta = { nickName: string; userName: string; register: string }; const Meta = ({ nickName, userName, register }: IMeta) => { return ( - + + - + - + {nickName} diff --git a/src/components/profile/setting/SettingItem.tsx b/src/components/profile/setting/SettingItem.tsx new file mode 100644 index 0000000..27c758c --- /dev/null +++ b/src/components/profile/setting/SettingItem.tsx @@ -0,0 +1,35 @@ +import React, { useState } from 'react'; +import { Box, Card, Stack, Typography } from '@mui/material'; + +type IItem = { + leftIcon: React.ReactNode; + handlerBtn: React.ReactNode; + title: string; +}; +const SettingItem = ({ leftIcon, handlerBtn, title }: IItem) => { + const [raised, setRaised] = useState(false); + + return ( + setRaised(true)} + onMouseOut={() => setRaised(false)} + sx={{ borderRadius: '1.5rem', p: '1.2rem' }} + > + + + {leftIcon} + {title} + + {handlerBtn} + + + ); +}; + +export default SettingItem; diff --git a/src/components/profile/setting/index.tsx b/src/components/profile/setting/index.tsx new file mode 100644 index 0000000..2654b10 --- /dev/null +++ b/src/components/profile/setting/index.tsx @@ -0,0 +1,47 @@ +import React, { useContext } from 'react'; +import { ButtonBase, Stack, Switch } from '@mui/material'; +import SettingItem from '@components/profile/setting/SettingItem'; +import { + HeadsetMic, + KeyboardArrowRight, + NightsStayOutlined, + NotificationsActiveOutlined, +} from '@mui/icons-material'; +import { ToggleTheme } from '@helper/styles/defaultStyle'; + +type ISetting = {}; +const Setting = ({}: ISetting) => { + /** + * @todo + * 야간 모드 여부 localstorage 에 저장 + */ + const { toggle, mode } = useContext(ToggleTheme); + + return ( + + } + handlerBtn={ + + + + } + title={'상담사 연결'} + /> + } + handlerBtn={ + + } + title={'야간 모드'} + /> + } + handlerBtn={} + title={'알람 설정'} + /> + + ); +}; + +export default Setting; diff --git a/src/helper/styles/defaultStyle.ts b/src/helper/styles/defaultStyle.ts index d8fd461..6abc85e 100644 --- a/src/helper/styles/defaultStyle.ts +++ b/src/helper/styles/defaultStyle.ts @@ -15,6 +15,7 @@ * .components */ import { createTheme, PaletteMode } from '@mui/material'; +import { createContext } from 'react'; export default function (mode: PaletteMode) { return createTheme({ @@ -43,6 +44,11 @@ export default function (mode: PaletteMode) { }); } +type IToggleTheme = { toggle: () => void; mode: PaletteMode }; +export const ToggleTheme = createContext( + null as unknown as IToggleTheme, +); + /** * 반응형 * options: breakpoints, disableAlign, factor, variants diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 50b9758..b07432e 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -2,13 +2,8 @@ import type { AppProps } from 'next/app'; import '@helper/styles/globals.css'; import Navigation from '@components/navigation'; import { CssBaseline, PaletteMode, ThemeProvider } from '@mui/material'; -import createTheme from '@helper/styles/defaultStyle'; -import React, { createContext, useMemo, useState } from 'react'; - -type IToggleTheme = { toggle: () => void }; -const ToggleTheme = createContext( - null as unknown as IToggleTheme, -); +import createTheme, { ToggleTheme } from '@helper/styles/defaultStyle'; +import React, { useMemo, useState } from 'react'; function App({ Component, pageProps }: AppProps) { const [mode, setMode] = useState('light'); @@ -18,6 +13,7 @@ function App({ Component, pageProps }: AppProps) { /* 리렌더링 확인 필요 */ value={{ toggle: () => setMode(mode == 'light' ? 'dark' : 'light'), + mode, }} > diff --git a/src/pages/profile/index.tsx b/src/pages/profile/index.tsx index 2c3db02..f111d39 100644 --- a/src/pages/profile/index.tsx +++ b/src/pages/profile/index.tsx @@ -11,17 +11,27 @@ import React from 'react'; import Info from '@components/profile/info'; -import History from '@components/profile/History'; -import Setting from '@components/profile/Setting'; +import History from '@components/profile/history'; +import Setting from '@components/profile/setting'; +import Footer from '@components/profile/footer'; +import { Stack } from '@mui/material'; type IProfile = {}; const Profile = ({}: IProfile) => { return ( - <> + - +