diff --git a/package.json b/package.json index 077fb9b..5fe312a 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,7 @@ "react": "^17.0.2", "react-dom": "^17.0.2", "react-reveal": "^1.2.2", - "react-router": "^6.0.2", - "react-router-dom": "^5.3.0", + "react-router-dom": "^6.2.1", "react-scripts": "4.0.3", "react-spinners": "^0.11.0", "recoil": "^0.5.2", diff --git a/src/Components/Common/Card.jsx b/src/Components/Common/Card.jsx index 90d8d04..ede189a 100644 --- a/src/Components/Common/Card.jsx +++ b/src/Components/Common/Card.jsx @@ -64,11 +64,12 @@ Card.propTypes = { address: PropTypes.string.isRequired, step: PropTypes.number, resId: PropTypes.number.isRequired, - pic: PropTypes.string.isRequired, + pic: PropTypes.string, }; Card.defaultProps = { step: 0, + pic: '사진이 없어여', }; export default Card; diff --git a/src/Components/Common/Header2.jsx b/src/Components/Common/Header2.jsx index e691915..e157ff9 100644 --- a/src/Components/Common/Header2.jsx +++ b/src/Components/Common/Header2.jsx @@ -7,9 +7,8 @@ import { NavLink } from 'react-router-dom'; const Container = styled.div` box-sizing: border-box; height: 100px; - .selected span { - display: inline-block; - box-sizing: border-box; + + .active span { font-weight: 700; } `; @@ -33,6 +32,12 @@ const StyledNavLink = styled(NavLink)` color: black; text-decoration: none; } + + &.active { + display: inline-block; + box-sizing: border-box; + font-weight: 700; + } `; const Header2 = () => { @@ -67,10 +72,10 @@ const Header2 = () => { return ( - + 서북구 - + 동남구 diff --git a/src/Components/Common/Sidebar2.jsx b/src/Components/Common/Sidebar2.jsx index ae7c948..b2469f9 100644 --- a/src/Components/Common/Sidebar2.jsx +++ b/src/Components/Common/Sidebar2.jsx @@ -31,7 +31,7 @@ const Container = styled.div` div svg { padding: 20px; } - .selected svg { + .active svg { stroke: ${Colors.main}; } // 전체 svg @@ -58,14 +58,14 @@ const Sidebar2 = () => {
- + - +
- +
diff --git a/src/Components/Detail/Content.jsx b/src/Components/Detail/Content.jsx index a1c52fa..47a0d8e 100644 --- a/src/Components/Detail/Content.jsx +++ b/src/Components/Detail/Content.jsx @@ -26,7 +26,7 @@ const BtnDiv = styled.div` const Container = styled.div``; -const Content = ({ restaurantName, waiting, address, step, match }) => { +const Content = ({ restaurantName, waiting, address, step, resId }) => { const [visible, setVisible] = useState(false); const [ResId, setResId] = useRecoilState(restaurantState); const [FriendsList, setFriendsList] = useRecoilState(friendsState); @@ -36,7 +36,7 @@ const Content = ({ restaurantName, waiting, address, step, match }) => { // 모달 열기 const toggleModal = () => { setVisible(true); - setResId(match.params.resId); + setResId(resId); }; // 모달 닫기 @@ -106,7 +106,7 @@ Content.propTypes = { address: PropTypes.string, waiting: PropTypes.number, step: PropTypes.number, - match: PropTypes.any.isRequired, + resId: PropTypes.any.isRequired, }; Content.defaultProps = { diff --git a/src/Components/Detail/Reservation/Step2.jsx b/src/Components/Detail/Reservation/Step2.jsx index 79dc1db..00b77ef 100644 --- a/src/Components/Detail/Reservation/Step2.jsx +++ b/src/Components/Detail/Reservation/Step2.jsx @@ -5,7 +5,7 @@ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import styled from 'styled-components'; import { useRecoilState, useRecoilValue } from 'recoil'; -import { useHistory } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; import Button from '../../Common/Button'; import Colors from '../../../Assets/Colors/Colors'; import { @@ -83,7 +83,7 @@ const Person = styled.span` `; const Step2 = ({ restaurantName, increasePageFunc, decreasePageFunc }) => { - const history = useHistory(); + const navigate = useNavigate(); const [Today, setToday] = useState(''); // 현재 날짜 가져오는 함수 const createDate = () => { @@ -121,7 +121,7 @@ const Step2 = ({ restaurantName, increasePageFunc, decreasePageFunc }) => { if (res.data.success === false) { alert('식당에서 요구하는 백신 접종 차수에 미달합니다.'); alert('예약을 종료하고 홈 화면으로 돌아갑니다.'); - history.push('/district1'); + navigate('/district1'); } } catch (error) { return error; diff --git a/src/Components/Join/Contents.jsx b/src/Components/Join/Contents.jsx index e4863ea..0bc8d40 100644 --- a/src/Components/Join/Contents.jsx +++ b/src/Components/Join/Contents.jsx @@ -1,7 +1,7 @@ /* eslint-disable consistent-return */ /* eslint-disable no-alert */ import React, { useState } from 'react'; -import { useHistory } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; import styled from 'styled-components'; import { userJoin } from '../../api/User'; import Button from '../Common/Button'; @@ -36,7 +36,7 @@ const Title = styled.p` const Contents = () => { // useHistory 사용 - const history = useHistory(); + const navigate = useNavigate(); // input 관련 로직 const [inputs, setinputs] = useState({}); @@ -71,7 +71,7 @@ const Contents = () => { // 비밀번호가 동일한 경우에만 회원가입 if (inputs.password === inputs.password2) { fetch(); - history.push('/'); + navigate('/'); } else { alert('비밀번호가 동일하지 않습니다. 비밀번호를 동일하게 맞춰주세요.'); } diff --git a/src/Components/Login/Contents.jsx b/src/Components/Login/Contents.jsx index 38ddb15..c0cf957 100644 --- a/src/Components/Login/Contents.jsx +++ b/src/Components/Login/Contents.jsx @@ -3,7 +3,7 @@ /* eslint-disable no-unused-vars */ /* eslint-disable consistent-return */ import React, { useState } from 'react'; -import { useHistory } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; import styled from 'styled-components'; import { useRecoilState } from 'recoil'; import { ReactComponent as Logo } from '../../Assets/Icons/Logo.svg'; @@ -57,7 +57,7 @@ const JoinInfo = styled.p` `; const Contents = () => { - const history = useHistory(); + const navigate = useNavigate(); // 로그인 정보 저장 const [User, setUser] = useRecoilState(UserData); // 유저 정보 저장 @@ -87,7 +87,7 @@ const Contents = () => { setUser(userData.data); const info = await userInfoAPI(userData.data.username); setUserProfile(info.data); - history.push('/select'); + navigate('/select'); // false 인 경우 로그인 실패하고 알림 출력 } else { alert('로그인에 실패했습니다. 다시 로그인해주세요.'); diff --git a/src/Components/MyPage/PageContent.jsx b/src/Components/MyPage/PageContent.jsx index 41a8fea..a643101 100644 --- a/src/Components/MyPage/PageContent.jsx +++ b/src/Components/MyPage/PageContent.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { useHistory } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; import styled from 'styled-components'; import PropTypes from 'prop-types'; import Tag from '../Common/Tag'; @@ -47,9 +47,9 @@ const Container = styled.div` // 각각 하양송이, 아이디값, 핸드폰번호값, 날짜 받아오기 => 태그는... // eslint-disable-next-line react/prop-types const Contents = ({ userName, userID, userNumber, userStep, userDate }) => { - const history = useHistory(); + const navigate = useNavigate(); const routeChange = () => { - history.push('./modifypage'); + navigate('./modifypage'); }; return (
diff --git a/src/Components/MyPage/PageModify.jsx b/src/Components/MyPage/PageModify.jsx index 15b6da9..d4c3c53 100644 --- a/src/Components/MyPage/PageModify.jsx +++ b/src/Components/MyPage/PageModify.jsx @@ -1,6 +1,6 @@ /* eslint-disable no-alert */ import React, { useState } from 'react'; -import { useHistory } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; import styled from 'styled-components'; import PropTypes from 'prop-types'; import Button from '../Common/Button'; @@ -53,7 +53,7 @@ const Container = styled.div` // eslint-disable-next-line react/prop-types const Contents = ({ userName, userID, userNumber, userStep, userDate }) => { - const history = useHistory(); + const navigate = useNavigate(); const [inputs, setinputs] = useState({}); const handleInputs = e => { @@ -75,7 +75,7 @@ const Contents = ({ userName, userID, userNumber, userStep, userDate }) => { // api 통신 const modifyData = await userModify(values); if (modifyData) { - history.push('/mypage'); + navigate('/mypage'); } else { alert('수정 실패'); } diff --git a/src/Components/MyReservation/Contents.jsx b/src/Components/MyReservation/Contents.jsx index 0af4cdb..1e7307d 100644 --- a/src/Components/MyReservation/Contents.jsx +++ b/src/Components/MyReservation/Contents.jsx @@ -2,7 +2,7 @@ import React from 'react'; import styled from 'styled-components'; import PropTypes from 'prop-types'; -import { useHistory } from 'react-router-dom'; +import { useNavigate } from 'react-router-dom'; import Colors from '../../Assets/Colors/Colors'; const Wrapper = styled.div` @@ -66,7 +66,7 @@ const CancelBtn = styled.button` `; const Contents = ({ remainTime, order, resName, peopleNum }) => { - const history = useHistory(); + const history = useNavigate(); // 줄서기 취소이벤트 const cancel = () => { if (window.confirm('정말 줄서기를 취소하시나요?')) { diff --git a/src/Components/Search/SearchContent.jsx b/src/Components/Search/SearchContent.jsx index 5d5a2f1..d83bf2e 100644 --- a/src/Components/Search/SearchContent.jsx +++ b/src/Components/Search/SearchContent.jsx @@ -76,6 +76,7 @@ const SearchContent = ({ listData, handleInput }) => { {listData.map(item => ( { - const history = useHistory(); + const navigate = useNavigate(); const chooseDistrict = () => { - history.push(`${Url}`); + navigate(`${Url}`); }; return ( diff --git a/src/Layouts/Detail/Detail.jsx b/src/Layouts/Detail/Detail.jsx index b017065..d2e0114 100644 --- a/src/Layouts/Detail/Detail.jsx +++ b/src/Layouts/Detail/Detail.jsx @@ -15,15 +15,14 @@ const Container = styled.div` overflow-y: auto; `; -const Detail = ({ match }) => { +const Detail = ({ resId }) => { const [Restaurant, setRestaurant] = useState([]); const [ResId, setResId] = useRecoilState(restaurantState); - const { resId } = match.params; const fetch = async () => { try { const restaurant = await restaurantDetail(resId); setRestaurant(restaurant.data); - setResId(match.params.resId); + setResId(resId); } catch (error) { return error; } @@ -44,7 +43,7 @@ const Detail = ({ match }) => { @@ -52,7 +51,7 @@ const Detail = ({ match }) => { }; Detail.propTypes = { - match: PropTypes.any.isRequired, + resId: PropTypes.any.isRequired, }; export default Detail; diff --git a/src/Pages/DetailPage.jsx b/src/Pages/DetailPage.jsx index 350d0cf..742540e 100644 --- a/src/Pages/DetailPage.jsx +++ b/src/Pages/DetailPage.jsx @@ -1,22 +1,20 @@ /* eslint-disable react/forbid-prop-types */ import React from 'react'; -import PropTypes from 'prop-types'; +// import PropTypes from 'prop-types'; +import { useParams } from 'react-router-dom'; import Detail from '../Layouts/Detail/Detail'; import Header2 from '../Components/Common/Header2'; import Sidebar2 from '../Components/Common/Sidebar2'; -const DetailPage = ({ match }) => { +const DetailPage = () => { + const { resId } = useParams(); return ( <> - + ); }; -DetailPage.propTypes = { - match: PropTypes.any.isRequired, -}; - export default DetailPage; diff --git a/src/Router/PublicRouter.jsx b/src/Router/PublicRouter.jsx new file mode 100644 index 0000000..a5e7eab --- /dev/null +++ b/src/Router/PublicRouter.jsx @@ -0,0 +1,9 @@ +/* eslint-disable react/react-in-jsx-scope */ +import { Navigate, Outlet } from 'react-router-dom'; + +const PublicRouter = () => { + const user = JSON.parse(sessionStorage.getItem('user')); + return !user ? : ; +}; + +export default PublicRouter; diff --git a/src/Router/Router.jsx b/src/Router/Router.jsx index a25cf87..5dd269d 100644 --- a/src/Router/Router.jsx +++ b/src/Router/Router.jsx @@ -1,6 +1,6 @@ /* eslint-disable import/no-unresolved */ import React from 'react'; -import { BrowserRouter, Route, Switch } from 'react-router-dom'; +import { BrowserRouter, Route, Routes } from 'react-router-dom'; // url config import { JoinPage, @@ -14,22 +14,32 @@ import { District1Page, District2Page, } from '@pages'; +import PublicRouter from './PublicRouter'; const Routers = () => { return ( - - - - - - - - - - - - + + {/* 토큰이 존재할 경우 login, join 빼고 접근 가능 */} + }> + + } /> + } /> + + + } /> + } /> + + } /> + } /> + } /> + } /> + } /> + + {/* 토큰이 존재하지 않을 경우 login, join 만 접근 가능 */} + } /> + } /> + ); }; diff --git a/yarn.lock b/yarn.lock index 736b2fe..f8f48f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1158,21 +1158,21 @@ core-js-pure "^3.19.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.12.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@7.12.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.12.1" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz" integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3": version "7.16.3" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz" integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.13.10": +"@babel/runtime@^7.13.10", "@babel/runtime@^7.7.6": version "7.16.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.5.tgz#7f3e34bf8bdbbadf03fbb7b1ea0d929569c9487a" integrity sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA== @@ -5763,22 +5763,10 @@ hex-color-regex@^1.1.0: resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -history@^4.9.0: - version "4.10.1" - resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -history@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/history/-/history-5.1.0.tgz" - integrity sha512-zPuQgPacm2vH2xdORvGGz1wQMuHSIB56yNAy5FnLuwOwgSYyPKptJtcMm6Ev+hRGeS+GzhbmRacHzvlESbFwDg== +history@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.2.0.tgz#7cdd31cf9bac3c5d31f09c231c9928fad0007b7c" + integrity sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig== dependencies: "@babel/runtime" "^7.7.6" @@ -5791,7 +5779,7 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.1: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.1: 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== @@ -6506,11 +6494,6 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" @@ -7363,9 +7346,9 @@ loglevel@^1.6.8: resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" @@ -7574,14 +7557,6 @@ min-indent@^1.0.0: resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-create-react-context@^0.4.0: - version "0.4.1" - resolved "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz" - integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== - dependencies: - "@babel/runtime" "^7.12.1" - tiny-warning "^1.0.3" - mini-css-extract-plugin@0.11.3: version "0.11.3" resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz" @@ -7941,7 +7916,7 @@ nwsapi@^2.2.0: object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-copy@^0.1.0: @@ -8341,13 +8316,6 @@ path-to-regexp@0.1.7: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -9232,7 +9200,7 @@ prop-types@^15.5.10: object-assign "^4.1.1" react-is "^16.13.1" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -9447,9 +9415,9 @@ react-error-overlay@^6.0.9: resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz" integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^17.0.1: @@ -9469,41 +9437,20 @@ react-reveal@^1.2.2: dependencies: prop-types "^15.5.10" -react-router-dom@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.2.1" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.2.1: - version "5.2.1" - resolved "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== - dependencies: - "@babel/runtime" "^7.12.13" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - mini-create-react-context "^0.4.0" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.0.2.tgz" - integrity sha512-8/Wm3Ed8t7TuedXjAvV39+c8j0vwrI5qVsYqjFr5WkJjsJpEvNSoLRUbtqSEYzqaTUj1IV+sbPJxvO+accvU0Q== +react-router-dom@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.1.tgz#32ec81829152fbb8a7b045bf593a22eadf019bec" + integrity sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA== + dependencies: + history "^5.2.0" + react-router "6.2.1" + +react-router@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.1.tgz#be2a97a6006ce1d9123c28934e604faef51448a3" + integrity sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg== dependencies: - history "^5.1.0" + history "^5.2.0" react-scripts@4.0.3: version "4.0.3" @@ -9689,7 +9636,7 @@ regenerator-runtime@^0.11.0: regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: version "0.13.9" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regenerator-transform@^0.14.2: @@ -9829,11 +9776,6 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - resolve-url-loader@^3.1.2: version "3.1.4" resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz" @@ -10957,16 +10899,6 @@ timsort@^0.3.0: resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= -tiny-invariant@^1.0.2: - version "1.2.0" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== - -tiny-warning@^1.0.0, tiny-warning@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - tmpl@1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" @@ -11387,11 +11319,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - vary@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"