├── src
├── services
│ ├── index.ts
│ └── auth.service.ts
├── vite-env.d.ts
├── pages
│ ├── Login
│ │ ├── index.ts
│ │ └── Login.tsx
│ └── Private
│ │ ├── Home
│ │ ├── index.ts
│ │ └── Home.tsx
│ │ ├── Dashboard
│ │ ├── index.ts
│ │ └── Dashboard.tsx
│ │ ├── index.ts
│ │ └── Private.tsx
├── components
│ └── Logout
│ │ ├── index.ts
│ │ └── Logout.tsx
├── models
│ ├── roles.ts
│ ├── index.ts
│ ├── user.model.ts
│ └── routes.ts
├── guards
│ ├── index.ts
│ ├── rol.guard.tsx
│ └── auth.guard.tsx
├── utilities
│ ├── index.ts
│ ├── localStorage.utility.tsx
│ └── RoutesWithNotFound.utility.tsx
├── main.tsx
├── redux
│ ├── store.ts
│ └── states
│ │ └── user.ts
├── App.css
├── index.css
├── App.tsx
└── assets
│ └── react.svg
├── vite.config.ts
├── tsconfig.node.json
├── .gitignore
├── index.html
├── tsconfig.json
├── package.json
├── LICENSE
├── public
└── vite.svg
└── pnpm-lock.yaml
/src/services/index.ts:
--------------------------------------------------------------------------------
1 | export * from './auth.service';
2 |
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/src/pages/Login/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Login } from './Login';
2 |
--------------------------------------------------------------------------------
/src/pages/Private/Home/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Home } from './Home';
2 |
--------------------------------------------------------------------------------
/src/components/Logout/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Logout } from './Logout';
2 |
--------------------------------------------------------------------------------
/src/models/roles.ts:
--------------------------------------------------------------------------------
1 | export enum Roles {
2 | ADMIN = 'admin',
3 | USER = 'user'
4 | }
5 |
--------------------------------------------------------------------------------
/src/pages/Private/Dashboard/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Dashboard } from './Dashboard';
2 |
--------------------------------------------------------------------------------
/src/models/index.ts:
--------------------------------------------------------------------------------
1 | export * from './roles';
2 | export * from './routes';
3 | export * from './user.model';
4 |
--------------------------------------------------------------------------------
/src/pages/Private/Home/Home.tsx:
--------------------------------------------------------------------------------
1 | function Home() {
2 | return
Home
;
3 | }
4 | export default Home;
5 |
--------------------------------------------------------------------------------
/src/guards/index.ts:
--------------------------------------------------------------------------------
1 | export { default as AuthGuard } from './auth.guard';
2 | export { default as RoleGuard } from './rol.guard';
3 |
--------------------------------------------------------------------------------
/src/pages/Private/Dashboard/Dashboard.tsx:
--------------------------------------------------------------------------------
1 | function Dashboard() {
2 | return Dashboard
;
3 | }
4 | export default Dashboard;
5 |
--------------------------------------------------------------------------------
/src/pages/Private/index.ts:
--------------------------------------------------------------------------------
1 | export * from './Dashboard';
2 | export * from './Home';
3 | export { default as Private } from './Private';
4 |
--------------------------------------------------------------------------------
/src/utilities/index.ts:
--------------------------------------------------------------------------------
1 | export { default as RoutesWithNotFound } from './RoutesWithNotFound.utility';
2 | export * from './localStorage.utility';
3 |
--------------------------------------------------------------------------------
/src/models/user.model.ts:
--------------------------------------------------------------------------------
1 | import { Roles } from './roles';
2 |
3 | export interface UserInfo {
4 | id: number;
5 | name: string;
6 | email: string;
7 | rol: Roles;
8 | }
9 |
--------------------------------------------------------------------------------
/src/main.tsx:
--------------------------------------------------------------------------------
1 | import ReactDOM from 'react-dom/client';
2 | import App from './App';
3 | import './index.css';
4 |
5 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render();
6 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()]
7 | })
8 |
--------------------------------------------------------------------------------
/src/models/routes.ts:
--------------------------------------------------------------------------------
1 | export const PublicRoutes = {
2 | LOGIN: 'login'
3 | };
4 |
5 | export const PrivateRoutes = {
6 | PRIVATE: 'private',
7 | DASHBOARD: 'Dashboard',
8 | HOME: 'Home'
9 | };
10 |
--------------------------------------------------------------------------------
/src/services/auth.service.ts:
--------------------------------------------------------------------------------
1 | const baseUrl = 'https://rickandmortyapi.com/api/';
2 | const characterUrl = baseUrl + 'character/';
3 |
4 | export const getMorty = () => {
5 | return fetch(characterUrl + '2').then(res => res.json());
6 | };
7 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "module": "ESNext",
5 | "moduleResolution": "Node",
6 | "allowSyntheticDefaultImports": true
7 | },
8 | "include": ["vite.config.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/src/utilities/localStorage.utility.tsx:
--------------------------------------------------------------------------------
1 | export const persistLocalStorage = (key: string, value: T) => {
2 | localStorage.setItem(key, JSON.stringify({ ...value }));
3 | };
4 |
5 | export const clearLocalStorage = (key: string) => {
6 | localStorage.removeItem(key);
7 | };
8 |
--------------------------------------------------------------------------------
/src/redux/store.ts:
--------------------------------------------------------------------------------
1 | import { configureStore } from '@reduxjs/toolkit';
2 | import { UserInfo } from '../models';
3 | import userSliceReducer from './states/user';
4 |
5 | export interface AppStore {
6 | user: UserInfo;
7 | }
8 |
9 | export default configureStore({
10 | reducer: {
11 | user: userSliceReducer
12 | }
13 | });
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/src/utilities/RoutesWithNotFound.utility.tsx:
--------------------------------------------------------------------------------
1 | import { Route, Routes } from 'react-router-dom';
2 |
3 | interface Props {
4 | children: JSX.Element[] | JSX.Element;
5 | }
6 | function RoutesWithNotFound({ children }: Props) {
7 | return (
8 |
9 | {children}
10 | Not Found} />
11 |
12 | );
13 | }
14 | export default RoutesWithNotFound;
15 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + React + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/guards/rol.guard.tsx:
--------------------------------------------------------------------------------
1 | import { useSelector } from 'react-redux';
2 | import { Navigate, Outlet } from 'react-router-dom';
3 | import { PrivateRoutes, PublicRoutes, Roles } from '../models';
4 | import { AppStore } from '../redux/store';
5 |
6 | interface Props {
7 | rol: Roles;
8 | }
9 |
10 | function RoleGuard({ rol }: Props) {
11 | const userState = useSelector((store: AppStore) => store.user);
12 | return userState.rol === rol ? : ;
13 | }
14 | export default RoleGuard;
15 |
--------------------------------------------------------------------------------
/src/components/Logout/Logout.tsx:
--------------------------------------------------------------------------------
1 | import { useDispatch } from 'react-redux';
2 | import { useNavigate } from 'react-router-dom';
3 | import { PublicRoutes } from '../../models';
4 | import { resetUser, UserKey } from '../../redux/states/user';
5 | import { clearLocalStorage } from '../../utilities';
6 |
7 | function Logout() {
8 | const navigate = useNavigate();
9 | const dispatch = useDispatch();
10 | const logOut = () => {
11 | clearLocalStorage(UserKey);
12 | dispatch(resetUser());
13 | navigate(PublicRoutes.LOGIN, { replace: true });
14 | };
15 | return ;
16 | }
17 | export default Logout;
18 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": true,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "react-jsx"
18 | },
19 | "include": ["src"],
20 | "references": [{ "path": "./tsconfig.node.json" }]
21 | }
22 |
--------------------------------------------------------------------------------
/src/pages/Private/Private.tsx:
--------------------------------------------------------------------------------
1 | import { lazy } from 'react';
2 | import { Navigate, Route } from 'react-router-dom';
3 | import { PrivateRoutes } from '../../models';
4 | import { RoutesWithNotFound } from '../../utilities';
5 |
6 | const Dashboard = lazy(() => import('./Dashboard/Dashboard'));
7 | const Home = lazy(() => import('./Home/Home'));
8 |
9 | function Private() {
10 | return (
11 |
12 | } />
13 | } />
14 | } />
15 |
16 | );
17 | }
18 | export default Private;
19 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gentleman-router",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "@reduxjs/toolkit": "^1.8.4",
13 | "@types/react-redux": "^7.1.24",
14 | "@types/react-router-dom": "^5.3.3",
15 | "react": "^18.2.0",
16 | "react-dom": "^18.2.0",
17 | "react-redux": "^8.0.2",
18 | "react-router-dom": "^6.3.0"
19 | },
20 | "devDependencies": {
21 | "@types/react": "^18.0.17",
22 | "@types/react-dom": "^18.0.6",
23 | "@vitejs/plugin-react": "^2.0.1",
24 | "typescript": "^4.6.4",
25 | "vite": "^3.0.7"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | #root {
2 | max-width: 1280px;
3 | margin: 0 auto;
4 | padding: 2rem;
5 | text-align: center;
6 | }
7 |
8 | .logo {
9 | height: 6em;
10 | padding: 1.5em;
11 | will-change: filter;
12 | }
13 | .logo:hover {
14 | filter: drop-shadow(0 0 2em #646cffaa);
15 | }
16 | .logo.react:hover {
17 | filter: drop-shadow(0 0 2em #61dafbaa);
18 | }
19 |
20 | @keyframes logo-spin {
21 | from {
22 | transform: rotate(0deg);
23 | }
24 | to {
25 | transform: rotate(360deg);
26 | }
27 | }
28 |
29 | @media (prefers-reduced-motion: no-preference) {
30 | a:nth-of-type(2) .logo {
31 | animation: logo-spin infinite 20s linear;
32 | }
33 | }
34 |
35 | .card {
36 | padding: 2em;
37 | }
38 |
39 | .read-the-docs {
40 | color: #888;
41 | }
42 |
--------------------------------------------------------------------------------
/src/guards/auth.guard.tsx:
--------------------------------------------------------------------------------
1 | import { useSelector } from 'react-redux';
2 | import { Navigate, Outlet } from 'react-router-dom';
3 | import { PrivateRoutes, PublicRoutes } from '../models';
4 | import { Private } from '../pages/Private';
5 | import { AppStore } from '../redux/store';
6 |
7 | interface Props {
8 | privateValidation: boolean;
9 | }
10 |
11 | const PrivateValidationFragment = ;
12 | const PublicValidationFragment = ;
13 |
14 | export const AuthGuard = ({ privateValidation }: Props) => {
15 | const userState = useSelector((store: AppStore) => store.user);
16 | return userState.name ? (
17 | privateValidation ? (
18 | PrivateValidationFragment
19 | ) : (
20 | PublicValidationFragment
21 | )
22 | ) : (
23 |
24 | );
25 | };
26 |
27 | export default AuthGuard;
28 |
--------------------------------------------------------------------------------
/src/pages/Login/Login.tsx:
--------------------------------------------------------------------------------
1 | import { useEffect } from 'react';
2 | import { useDispatch } from 'react-redux';
3 | import { useNavigate } from 'react-router-dom';
4 | import { PrivateRoutes, PublicRoutes, Roles } from '../../models';
5 | import { createUser, resetUser, UserKey } from '../../redux/states/user';
6 | import { getMorty } from '../../services';
7 | import { clearLocalStorage } from '../../utilities';
8 |
9 | function Login() {
10 | const dispatch = useDispatch();
11 | const navigate = useNavigate();
12 |
13 | useEffect(() => {
14 | clearLocalStorage(UserKey);
15 | dispatch(resetUser());
16 | navigate(`/${PublicRoutes.LOGIN}`, { replace: true });
17 | }, []);
18 |
19 | const login = async () => {
20 | try {
21 | const result = await getMorty();
22 | dispatch(createUser({ ...result, rol: Roles.USER }));
23 | navigate(`/${PrivateRoutes.PRIVATE}`, { replace: true });
24 | } catch (error) {}
25 | };
26 | return (
27 |
28 |
HOLA ESTE ES EL LOGIN
29 |
30 |
31 | );
32 | }
33 | export default Login;
34 |
--------------------------------------------------------------------------------
/src/redux/states/user.ts:
--------------------------------------------------------------------------------
1 | import { createSlice } from '@reduxjs/toolkit';
2 | import { UserInfo } from '../../models';
3 | import { clearLocalStorage, persistLocalStorage } from '../../utilities';
4 |
5 | export const EmptyUserState: UserInfo = {
6 | id: 0,
7 | name: '',
8 | email: ''
9 | };
10 |
11 | export const UserKey = 'user';
12 |
13 | export const userSlice = createSlice({
14 | name: 'user',
15 | initialState: localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user') as string) : EmptyUserState,
16 | reducers: {
17 | createUser: (state, action) => {
18 | persistLocalStorage(UserKey, action.payload);
19 | return action.payload;
20 | },
21 | updateUser: (state, action) => {
22 | const result = { ...state, ...action.payload };
23 | persistLocalStorage(UserKey, result);
24 | return result;
25 | },
26 | resetUser: () => {
27 | clearLocalStorage(UserKey);
28 | return EmptyUserState;
29 | }
30 | }
31 | });
32 |
33 | export const { createUser, updateUser, resetUser } = userSlice.actions;
34 |
35 | export default userSlice.reducer;
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Gentleman-Programming
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
3 | font-size: 16px;
4 | line-height: 24px;
5 | font-weight: 400;
6 |
7 | color-scheme: light dark;
8 | color: rgba(255, 255, 255, 0.87);
9 | background-color: #242424;
10 |
11 | font-synthesis: none;
12 | text-rendering: optimizeLegibility;
13 | -webkit-font-smoothing: antialiased;
14 | -moz-osx-font-smoothing: grayscale;
15 | -webkit-text-size-adjust: 100%;
16 | }
17 |
18 | a {
19 | font-weight: 500;
20 | color: #646cff;
21 | text-decoration: inherit;
22 | }
23 | a:hover {
24 | color: #535bf2;
25 | }
26 |
27 | body {
28 | margin: 0;
29 | display: flex;
30 | place-items: center;
31 | min-width: 320px;
32 | min-height: 100vh;
33 | }
34 |
35 | h1 {
36 | font-size: 3.2em;
37 | line-height: 1.1;
38 | }
39 |
40 | button {
41 | border-radius: 8px;
42 | border: 1px solid transparent;
43 | padding: 0.6em 1.2em;
44 | font-size: 1em;
45 | font-weight: 500;
46 | font-family: inherit;
47 | background-color: #1a1a1a;
48 | cursor: pointer;
49 | transition: border-color 0.25s;
50 | }
51 | button:hover {
52 | border-color: #646cff;
53 | }
54 | button:focus,
55 | button:focus-visible {
56 | outline: 4px auto -webkit-focus-ring-color;
57 | }
58 |
59 | @media (prefers-color-scheme: light) {
60 | :root {
61 | color: #213547;
62 | background-color: #ffffff;
63 | }
64 | a:hover {
65 | color: #747bff;
66 | }
67 | button {
68 | background-color: #f9f9f9;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/App.tsx:
--------------------------------------------------------------------------------
1 | import { lazy, Suspense } from 'react';
2 | import { Provider } from 'react-redux';
3 | import { BrowserRouter, Navigate, Route } from 'react-router-dom';
4 | import './App.css';
5 | import { Logout } from './components/Logout';
6 | import { AuthGuard, RoleGuard } from './guards';
7 | import { PrivateRoutes, PublicRoutes, Roles } from './models';
8 | import { Dashboard } from './pages/Private';
9 | import store from './redux/store';
10 | import { RoutesWithNotFound } from './utilities';
11 |
12 | const Login = lazy(() => import('./pages/Login/Login'));
13 | const Private = lazy(() => import('./pages/Private/Private'));
14 |
15 | function App() {
16 | return (
17 |
18 |
Cargando>}>
19 |
20 |
21 |
22 |
23 | } />
24 | } />
25 | }>
26 | } />
27 |
28 | }>
29 | } />
30 |
31 |
32 |
33 |
34 |
35 |
36 | );
37 | }
38 |
39 | export default App;
40 |
--------------------------------------------------------------------------------
/src/assets/react.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | specifiers:
4 | '@reduxjs/toolkit': ^1.8.4
5 | '@types/react': ^18.0.17
6 | '@types/react-dom': ^18.0.6
7 | '@types/react-redux': ^7.1.24
8 | '@types/react-router-dom': ^5.3.3
9 | '@vitejs/plugin-react': ^2.0.1
10 | react: ^18.2.0
11 | react-dom: ^18.2.0
12 | react-redux: ^8.0.2
13 | react-router-dom: ^6.3.0
14 | typescript: ^4.6.4
15 | vite: ^3.0.7
16 |
17 | dependencies:
18 | '@reduxjs/toolkit': 1.8.4_react-redux@8.0.2+react@18.2.0
19 | '@types/react-redux': 7.1.24
20 | '@types/react-router-dom': 5.3.3
21 | react: 18.2.0
22 | react-dom: 18.2.0_react@18.2.0
23 | react-redux: 8.0.2_ff80cd9dfb626a6c6c4251864122e347
24 | react-router-dom: 6.3.0_react-dom@18.2.0+react@18.2.0
25 |
26 | devDependencies:
27 | '@types/react': 18.0.17
28 | '@types/react-dom': 18.0.6
29 | '@vitejs/plugin-react': 2.0.1_vite@3.0.7
30 | typescript: 4.7.4
31 | vite: 3.0.7
32 |
33 | packages:
34 |
35 | /@ampproject/remapping/2.2.0:
36 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==}
37 | engines: {node: '>=6.0.0'}
38 | dependencies:
39 | '@jridgewell/gen-mapping': 0.1.1
40 | '@jridgewell/trace-mapping': 0.3.15
41 | dev: true
42 |
43 | /@babel/code-frame/7.18.6:
44 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==}
45 | engines: {node: '>=6.9.0'}
46 | dependencies:
47 | '@babel/highlight': 7.18.6
48 | dev: true
49 |
50 | /@babel/compat-data/7.18.8:
51 | resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==}
52 | engines: {node: '>=6.9.0'}
53 | dev: true
54 |
55 | /@babel/core/7.18.10:
56 | resolution: {integrity: sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==}
57 | engines: {node: '>=6.9.0'}
58 | dependencies:
59 | '@ampproject/remapping': 2.2.0
60 | '@babel/code-frame': 7.18.6
61 | '@babel/generator': 7.18.12
62 | '@babel/helper-compilation-targets': 7.18.9_@babel+core@7.18.10
63 | '@babel/helper-module-transforms': 7.18.9
64 | '@babel/helpers': 7.18.9
65 | '@babel/parser': 7.18.11
66 | '@babel/template': 7.18.10
67 | '@babel/traverse': 7.18.11
68 | '@babel/types': 7.18.10
69 | convert-source-map: 1.8.0
70 | debug: 4.3.4
71 | gensync: 1.0.0-beta.2
72 | json5: 2.2.1
73 | semver: 6.3.0
74 | transitivePeerDependencies:
75 | - supports-color
76 | dev: true
77 |
78 | /@babel/generator/7.18.12:
79 | resolution: {integrity: sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==}
80 | engines: {node: '>=6.9.0'}
81 | dependencies:
82 | '@babel/types': 7.18.10
83 | '@jridgewell/gen-mapping': 0.3.2
84 | jsesc: 2.5.2
85 | dev: true
86 |
87 | /@babel/helper-annotate-as-pure/7.18.6:
88 | resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==}
89 | engines: {node: '>=6.9.0'}
90 | dependencies:
91 | '@babel/types': 7.18.10
92 | dev: true
93 |
94 | /@babel/helper-compilation-targets/7.18.9_@babel+core@7.18.10:
95 | resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==}
96 | engines: {node: '>=6.9.0'}
97 | peerDependencies:
98 | '@babel/core': ^7.0.0
99 | dependencies:
100 | '@babel/compat-data': 7.18.8
101 | '@babel/core': 7.18.10
102 | '@babel/helper-validator-option': 7.18.6
103 | browserslist: 4.21.3
104 | semver: 6.3.0
105 | dev: true
106 |
107 | /@babel/helper-environment-visitor/7.18.9:
108 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==}
109 | engines: {node: '>=6.9.0'}
110 | dev: true
111 |
112 | /@babel/helper-function-name/7.18.9:
113 | resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==}
114 | engines: {node: '>=6.9.0'}
115 | dependencies:
116 | '@babel/template': 7.18.10
117 | '@babel/types': 7.18.10
118 | dev: true
119 |
120 | /@babel/helper-hoist-variables/7.18.6:
121 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
122 | engines: {node: '>=6.9.0'}
123 | dependencies:
124 | '@babel/types': 7.18.10
125 | dev: true
126 |
127 | /@babel/helper-module-imports/7.18.6:
128 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
129 | engines: {node: '>=6.9.0'}
130 | dependencies:
131 | '@babel/types': 7.18.10
132 | dev: true
133 |
134 | /@babel/helper-module-transforms/7.18.9:
135 | resolution: {integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==}
136 | engines: {node: '>=6.9.0'}
137 | dependencies:
138 | '@babel/helper-environment-visitor': 7.18.9
139 | '@babel/helper-module-imports': 7.18.6
140 | '@babel/helper-simple-access': 7.18.6
141 | '@babel/helper-split-export-declaration': 7.18.6
142 | '@babel/helper-validator-identifier': 7.18.6
143 | '@babel/template': 7.18.10
144 | '@babel/traverse': 7.18.11
145 | '@babel/types': 7.18.10
146 | transitivePeerDependencies:
147 | - supports-color
148 | dev: true
149 |
150 | /@babel/helper-plugin-utils/7.18.9:
151 | resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==}
152 | engines: {node: '>=6.9.0'}
153 | dev: true
154 |
155 | /@babel/helper-simple-access/7.18.6:
156 | resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==}
157 | engines: {node: '>=6.9.0'}
158 | dependencies:
159 | '@babel/types': 7.18.10
160 | dev: true
161 |
162 | /@babel/helper-split-export-declaration/7.18.6:
163 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
164 | engines: {node: '>=6.9.0'}
165 | dependencies:
166 | '@babel/types': 7.18.10
167 | dev: true
168 |
169 | /@babel/helper-string-parser/7.18.10:
170 | resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==}
171 | engines: {node: '>=6.9.0'}
172 | dev: true
173 |
174 | /@babel/helper-validator-identifier/7.18.6:
175 | resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==}
176 | engines: {node: '>=6.9.0'}
177 | dev: true
178 |
179 | /@babel/helper-validator-option/7.18.6:
180 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==}
181 | engines: {node: '>=6.9.0'}
182 | dev: true
183 |
184 | /@babel/helpers/7.18.9:
185 | resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==}
186 | engines: {node: '>=6.9.0'}
187 | dependencies:
188 | '@babel/template': 7.18.10
189 | '@babel/traverse': 7.18.11
190 | '@babel/types': 7.18.10
191 | transitivePeerDependencies:
192 | - supports-color
193 | dev: true
194 |
195 | /@babel/highlight/7.18.6:
196 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
197 | engines: {node: '>=6.9.0'}
198 | dependencies:
199 | '@babel/helper-validator-identifier': 7.18.6
200 | chalk: 2.4.2
201 | js-tokens: 4.0.0
202 | dev: true
203 |
204 | /@babel/parser/7.18.11:
205 | resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==}
206 | engines: {node: '>=6.0.0'}
207 | hasBin: true
208 | dev: true
209 |
210 | /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.10:
211 | resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==}
212 | engines: {node: '>=6.9.0'}
213 | peerDependencies:
214 | '@babel/core': ^7.0.0-0
215 | dependencies:
216 | '@babel/core': 7.18.10
217 | '@babel/helper-plugin-utils': 7.18.9
218 | dev: true
219 |
220 | /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.10:
221 | resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==}
222 | engines: {node: '>=6.9.0'}
223 | peerDependencies:
224 | '@babel/core': ^7.0.0-0
225 | dependencies:
226 | '@babel/core': 7.18.10
227 | '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10
228 | dev: true
229 |
230 | /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.18.10:
231 | resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==}
232 | engines: {node: '>=6.9.0'}
233 | peerDependencies:
234 | '@babel/core': ^7.0.0-0
235 | dependencies:
236 | '@babel/core': 7.18.10
237 | '@babel/helper-plugin-utils': 7.18.9
238 | dev: true
239 |
240 | /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.18.10:
241 | resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==}
242 | engines: {node: '>=6.9.0'}
243 | peerDependencies:
244 | '@babel/core': ^7.0.0-0
245 | dependencies:
246 | '@babel/core': 7.18.10
247 | '@babel/helper-plugin-utils': 7.18.9
248 | dev: true
249 |
250 | /@babel/plugin-transform-react-jsx/7.18.10_@babel+core@7.18.10:
251 | resolution: {integrity: sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==}
252 | engines: {node: '>=6.9.0'}
253 | peerDependencies:
254 | '@babel/core': ^7.0.0-0
255 | dependencies:
256 | '@babel/core': 7.18.10
257 | '@babel/helper-annotate-as-pure': 7.18.6
258 | '@babel/helper-module-imports': 7.18.6
259 | '@babel/helper-plugin-utils': 7.18.9
260 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.10
261 | '@babel/types': 7.18.10
262 | dev: true
263 |
264 | /@babel/runtime/7.18.9:
265 | resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==}
266 | engines: {node: '>=6.9.0'}
267 | dependencies:
268 | regenerator-runtime: 0.13.9
269 | dev: false
270 |
271 | /@babel/template/7.18.10:
272 | resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==}
273 | engines: {node: '>=6.9.0'}
274 | dependencies:
275 | '@babel/code-frame': 7.18.6
276 | '@babel/parser': 7.18.11
277 | '@babel/types': 7.18.10
278 | dev: true
279 |
280 | /@babel/traverse/7.18.11:
281 | resolution: {integrity: sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==}
282 | engines: {node: '>=6.9.0'}
283 | dependencies:
284 | '@babel/code-frame': 7.18.6
285 | '@babel/generator': 7.18.12
286 | '@babel/helper-environment-visitor': 7.18.9
287 | '@babel/helper-function-name': 7.18.9
288 | '@babel/helper-hoist-variables': 7.18.6
289 | '@babel/helper-split-export-declaration': 7.18.6
290 | '@babel/parser': 7.18.11
291 | '@babel/types': 7.18.10
292 | debug: 4.3.4
293 | globals: 11.12.0
294 | transitivePeerDependencies:
295 | - supports-color
296 | dev: true
297 |
298 | /@babel/types/7.18.10:
299 | resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==}
300 | engines: {node: '>=6.9.0'}
301 | dependencies:
302 | '@babel/helper-string-parser': 7.18.10
303 | '@babel/helper-validator-identifier': 7.18.6
304 | to-fast-properties: 2.0.0
305 | dev: true
306 |
307 | /@esbuild/linux-loong64/0.14.54:
308 | resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==}
309 | engines: {node: '>=12'}
310 | cpu: [loong64]
311 | os: [linux]
312 | dev: true
313 | optional: true
314 |
315 | /@jridgewell/gen-mapping/0.1.1:
316 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
317 | engines: {node: '>=6.0.0'}
318 | dependencies:
319 | '@jridgewell/set-array': 1.1.2
320 | '@jridgewell/sourcemap-codec': 1.4.14
321 | dev: true
322 |
323 | /@jridgewell/gen-mapping/0.3.2:
324 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==}
325 | engines: {node: '>=6.0.0'}
326 | dependencies:
327 | '@jridgewell/set-array': 1.1.2
328 | '@jridgewell/sourcemap-codec': 1.4.14
329 | '@jridgewell/trace-mapping': 0.3.15
330 | dev: true
331 |
332 | /@jridgewell/resolve-uri/3.1.0:
333 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
334 | engines: {node: '>=6.0.0'}
335 | dev: true
336 |
337 | /@jridgewell/set-array/1.1.2:
338 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
339 | engines: {node: '>=6.0.0'}
340 | dev: true
341 |
342 | /@jridgewell/sourcemap-codec/1.4.14:
343 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
344 | dev: true
345 |
346 | /@jridgewell/trace-mapping/0.3.15:
347 | resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==}
348 | dependencies:
349 | '@jridgewell/resolve-uri': 3.1.0
350 | '@jridgewell/sourcemap-codec': 1.4.14
351 | dev: true
352 |
353 | /@reduxjs/toolkit/1.8.4_react-redux@8.0.2+react@18.2.0:
354 | resolution: {integrity: sha512-IpFq1WI7sCYeLQpDCGvlcQY9wn70UpAM3cOLq78HRnVn1746RI+l3y5xcuOeVOxORaxABJh3cfJMxycD2IwH5w==}
355 | peerDependencies:
356 | react: ^16.9.0 || ^17.0.0 || ^18
357 | react-redux: ^7.2.1 || ^8.0.2
358 | peerDependenciesMeta:
359 | react:
360 | optional: true
361 | react-redux:
362 | optional: true
363 | dependencies:
364 | immer: 9.0.15
365 | react: 18.2.0
366 | react-redux: 8.0.2_ff80cd9dfb626a6c6c4251864122e347
367 | redux: 4.2.0
368 | redux-thunk: 2.4.1_redux@4.2.0
369 | reselect: 4.1.6
370 | dev: false
371 |
372 | /@types/history/4.7.11:
373 | resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==}
374 | dev: false
375 |
376 | /@types/hoist-non-react-statics/3.3.1:
377 | resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==}
378 | dependencies:
379 | '@types/react': 18.0.17
380 | hoist-non-react-statics: 3.3.2
381 | dev: false
382 |
383 | /@types/prop-types/15.7.5:
384 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
385 |
386 | /@types/react-dom/18.0.6:
387 | resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==}
388 | dependencies:
389 | '@types/react': 18.0.17
390 | dev: true
391 |
392 | /@types/react-redux/7.1.24:
393 | resolution: {integrity: sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==}
394 | dependencies:
395 | '@types/hoist-non-react-statics': 3.3.1
396 | '@types/react': 18.0.17
397 | hoist-non-react-statics: 3.3.2
398 | redux: 4.2.0
399 | dev: false
400 |
401 | /@types/react-router-dom/5.3.3:
402 | resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
403 | dependencies:
404 | '@types/history': 4.7.11
405 | '@types/react': 18.0.17
406 | '@types/react-router': 5.1.18
407 | dev: false
408 |
409 | /@types/react-router/5.1.18:
410 | resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==}
411 | dependencies:
412 | '@types/history': 4.7.11
413 | '@types/react': 18.0.17
414 | dev: false
415 |
416 | /@types/react/18.0.17:
417 | resolution: {integrity: sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==}
418 | dependencies:
419 | '@types/prop-types': 15.7.5
420 | '@types/scheduler': 0.16.2
421 | csstype: 3.1.0
422 |
423 | /@types/scheduler/0.16.2:
424 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
425 |
426 | /@types/use-sync-external-store/0.0.3:
427 | resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==}
428 | dev: false
429 |
430 | /@vitejs/plugin-react/2.0.1_vite@3.0.7:
431 | resolution: {integrity: sha512-uINzNHmjrbunlFtyVkST6lY1ewSfz/XwLufG0PIqvLGnpk2nOIOa/1CACTDNcKi1/RwaCzJLmsXwm1NsUVV/NA==}
432 | engines: {node: ^14.18.0 || >=16.0.0}
433 | peerDependencies:
434 | vite: ^3.0.0
435 | dependencies:
436 | '@babel/core': 7.18.10
437 | '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.10
438 | '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.10
439 | '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.18.10
440 | '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.18.10
441 | magic-string: 0.26.2
442 | react-refresh: 0.14.0
443 | vite: 3.0.7
444 | transitivePeerDependencies:
445 | - supports-color
446 | dev: true
447 |
448 | /ansi-styles/3.2.1:
449 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
450 | engines: {node: '>=4'}
451 | dependencies:
452 | color-convert: 1.9.3
453 | dev: true
454 |
455 | /browserslist/4.21.3:
456 | resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==}
457 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
458 | hasBin: true
459 | dependencies:
460 | caniuse-lite: 1.0.30001375
461 | electron-to-chromium: 1.4.217
462 | node-releases: 2.0.6
463 | update-browserslist-db: 1.0.5_browserslist@4.21.3
464 | dev: true
465 |
466 | /caniuse-lite/1.0.30001375:
467 | resolution: {integrity: sha512-kWIMkNzLYxSvnjy0hL8w1NOaWNr2rn39RTAVyIwcw8juu60bZDWiF1/loOYANzjtJmy6qPgNmn38ro5Pygagdw==}
468 | dev: true
469 |
470 | /chalk/2.4.2:
471 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
472 | engines: {node: '>=4'}
473 | dependencies:
474 | ansi-styles: 3.2.1
475 | escape-string-regexp: 1.0.5
476 | supports-color: 5.5.0
477 | dev: true
478 |
479 | /color-convert/1.9.3:
480 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
481 | dependencies:
482 | color-name: 1.1.3
483 | dev: true
484 |
485 | /color-name/1.1.3:
486 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
487 | dev: true
488 |
489 | /convert-source-map/1.8.0:
490 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
491 | dependencies:
492 | safe-buffer: 5.1.2
493 | dev: true
494 |
495 | /csstype/3.1.0:
496 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==}
497 |
498 | /debug/4.3.4:
499 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
500 | engines: {node: '>=6.0'}
501 | peerDependencies:
502 | supports-color: '*'
503 | peerDependenciesMeta:
504 | supports-color:
505 | optional: true
506 | dependencies:
507 | ms: 2.1.2
508 | dev: true
509 |
510 | /electron-to-chromium/1.4.217:
511 | resolution: {integrity: sha512-iX8GbAMij7cOtJPZo02CClpaPMWjvN5meqXiJXkBgwvraNWTNH0Z7F9tkznI34JRPtWASoPM/xWamq3oNb49GA==}
512 | dev: true
513 |
514 | /esbuild-android-64/0.14.54:
515 | resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==}
516 | engines: {node: '>=12'}
517 | cpu: [x64]
518 | os: [android]
519 | dev: true
520 | optional: true
521 |
522 | /esbuild-android-arm64/0.14.54:
523 | resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==}
524 | engines: {node: '>=12'}
525 | cpu: [arm64]
526 | os: [android]
527 | dev: true
528 | optional: true
529 |
530 | /esbuild-darwin-64/0.14.54:
531 | resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==}
532 | engines: {node: '>=12'}
533 | cpu: [x64]
534 | os: [darwin]
535 | dev: true
536 | optional: true
537 |
538 | /esbuild-darwin-arm64/0.14.54:
539 | resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==}
540 | engines: {node: '>=12'}
541 | cpu: [arm64]
542 | os: [darwin]
543 | dev: true
544 | optional: true
545 |
546 | /esbuild-freebsd-64/0.14.54:
547 | resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==}
548 | engines: {node: '>=12'}
549 | cpu: [x64]
550 | os: [freebsd]
551 | dev: true
552 | optional: true
553 |
554 | /esbuild-freebsd-arm64/0.14.54:
555 | resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==}
556 | engines: {node: '>=12'}
557 | cpu: [arm64]
558 | os: [freebsd]
559 | dev: true
560 | optional: true
561 |
562 | /esbuild-linux-32/0.14.54:
563 | resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==}
564 | engines: {node: '>=12'}
565 | cpu: [ia32]
566 | os: [linux]
567 | dev: true
568 | optional: true
569 |
570 | /esbuild-linux-64/0.14.54:
571 | resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==}
572 | engines: {node: '>=12'}
573 | cpu: [x64]
574 | os: [linux]
575 | dev: true
576 | optional: true
577 |
578 | /esbuild-linux-arm/0.14.54:
579 | resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==}
580 | engines: {node: '>=12'}
581 | cpu: [arm]
582 | os: [linux]
583 | dev: true
584 | optional: true
585 |
586 | /esbuild-linux-arm64/0.14.54:
587 | resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==}
588 | engines: {node: '>=12'}
589 | cpu: [arm64]
590 | os: [linux]
591 | dev: true
592 | optional: true
593 |
594 | /esbuild-linux-mips64le/0.14.54:
595 | resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==}
596 | engines: {node: '>=12'}
597 | cpu: [mips64el]
598 | os: [linux]
599 | dev: true
600 | optional: true
601 |
602 | /esbuild-linux-ppc64le/0.14.54:
603 | resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==}
604 | engines: {node: '>=12'}
605 | cpu: [ppc64]
606 | os: [linux]
607 | dev: true
608 | optional: true
609 |
610 | /esbuild-linux-riscv64/0.14.54:
611 | resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==}
612 | engines: {node: '>=12'}
613 | cpu: [riscv64]
614 | os: [linux]
615 | dev: true
616 | optional: true
617 |
618 | /esbuild-linux-s390x/0.14.54:
619 | resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==}
620 | engines: {node: '>=12'}
621 | cpu: [s390x]
622 | os: [linux]
623 | dev: true
624 | optional: true
625 |
626 | /esbuild-netbsd-64/0.14.54:
627 | resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==}
628 | engines: {node: '>=12'}
629 | cpu: [x64]
630 | os: [netbsd]
631 | dev: true
632 | optional: true
633 |
634 | /esbuild-openbsd-64/0.14.54:
635 | resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==}
636 | engines: {node: '>=12'}
637 | cpu: [x64]
638 | os: [openbsd]
639 | dev: true
640 | optional: true
641 |
642 | /esbuild-sunos-64/0.14.54:
643 | resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==}
644 | engines: {node: '>=12'}
645 | cpu: [x64]
646 | os: [sunos]
647 | dev: true
648 | optional: true
649 |
650 | /esbuild-windows-32/0.14.54:
651 | resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==}
652 | engines: {node: '>=12'}
653 | cpu: [ia32]
654 | os: [win32]
655 | dev: true
656 | optional: true
657 |
658 | /esbuild-windows-64/0.14.54:
659 | resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==}
660 | engines: {node: '>=12'}
661 | cpu: [x64]
662 | os: [win32]
663 | dev: true
664 | optional: true
665 |
666 | /esbuild-windows-arm64/0.14.54:
667 | resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==}
668 | engines: {node: '>=12'}
669 | cpu: [arm64]
670 | os: [win32]
671 | dev: true
672 | optional: true
673 |
674 | /esbuild/0.14.54:
675 | resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==}
676 | engines: {node: '>=12'}
677 | hasBin: true
678 | requiresBuild: true
679 | optionalDependencies:
680 | '@esbuild/linux-loong64': 0.14.54
681 | esbuild-android-64: 0.14.54
682 | esbuild-android-arm64: 0.14.54
683 | esbuild-darwin-64: 0.14.54
684 | esbuild-darwin-arm64: 0.14.54
685 | esbuild-freebsd-64: 0.14.54
686 | esbuild-freebsd-arm64: 0.14.54
687 | esbuild-linux-32: 0.14.54
688 | esbuild-linux-64: 0.14.54
689 | esbuild-linux-arm: 0.14.54
690 | esbuild-linux-arm64: 0.14.54
691 | esbuild-linux-mips64le: 0.14.54
692 | esbuild-linux-ppc64le: 0.14.54
693 | esbuild-linux-riscv64: 0.14.54
694 | esbuild-linux-s390x: 0.14.54
695 | esbuild-netbsd-64: 0.14.54
696 | esbuild-openbsd-64: 0.14.54
697 | esbuild-sunos-64: 0.14.54
698 | esbuild-windows-32: 0.14.54
699 | esbuild-windows-64: 0.14.54
700 | esbuild-windows-arm64: 0.14.54
701 | dev: true
702 |
703 | /escalade/3.1.1:
704 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
705 | engines: {node: '>=6'}
706 | dev: true
707 |
708 | /escape-string-regexp/1.0.5:
709 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
710 | engines: {node: '>=0.8.0'}
711 | dev: true
712 |
713 | /fsevents/2.3.2:
714 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
715 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
716 | os: [darwin]
717 | dev: true
718 | optional: true
719 |
720 | /function-bind/1.1.1:
721 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
722 | dev: true
723 |
724 | /gensync/1.0.0-beta.2:
725 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
726 | engines: {node: '>=6.9.0'}
727 | dev: true
728 |
729 | /globals/11.12.0:
730 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
731 | engines: {node: '>=4'}
732 | dev: true
733 |
734 | /has-flag/3.0.0:
735 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
736 | engines: {node: '>=4'}
737 | dev: true
738 |
739 | /has/1.0.3:
740 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
741 | engines: {node: '>= 0.4.0'}
742 | dependencies:
743 | function-bind: 1.1.1
744 | dev: true
745 |
746 | /history/5.3.0:
747 | resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==}
748 | dependencies:
749 | '@babel/runtime': 7.18.9
750 | dev: false
751 |
752 | /hoist-non-react-statics/3.3.2:
753 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
754 | dependencies:
755 | react-is: 16.13.1
756 | dev: false
757 |
758 | /immer/9.0.15:
759 | resolution: {integrity: sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==}
760 | dev: false
761 |
762 | /is-core-module/2.10.0:
763 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==}
764 | dependencies:
765 | has: 1.0.3
766 | dev: true
767 |
768 | /js-tokens/4.0.0:
769 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
770 |
771 | /jsesc/2.5.2:
772 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
773 | engines: {node: '>=4'}
774 | hasBin: true
775 | dev: true
776 |
777 | /json5/2.2.1:
778 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
779 | engines: {node: '>=6'}
780 | hasBin: true
781 | dev: true
782 |
783 | /loose-envify/1.4.0:
784 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
785 | hasBin: true
786 | dependencies:
787 | js-tokens: 4.0.0
788 | dev: false
789 |
790 | /magic-string/0.26.2:
791 | resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==}
792 | engines: {node: '>=12'}
793 | dependencies:
794 | sourcemap-codec: 1.4.8
795 | dev: true
796 |
797 | /ms/2.1.2:
798 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
799 | dev: true
800 |
801 | /nanoid/3.3.4:
802 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
803 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
804 | hasBin: true
805 | dev: true
806 |
807 | /node-releases/2.0.6:
808 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
809 | dev: true
810 |
811 | /path-parse/1.0.7:
812 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
813 | dev: true
814 |
815 | /picocolors/1.0.0:
816 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
817 | dev: true
818 |
819 | /postcss/8.4.16:
820 | resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==}
821 | engines: {node: ^10 || ^12 || >=14}
822 | dependencies:
823 | nanoid: 3.3.4
824 | picocolors: 1.0.0
825 | source-map-js: 1.0.2
826 | dev: true
827 |
828 | /react-dom/18.2.0_react@18.2.0:
829 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
830 | peerDependencies:
831 | react: ^18.2.0
832 | dependencies:
833 | loose-envify: 1.4.0
834 | react: 18.2.0
835 | scheduler: 0.23.0
836 | dev: false
837 |
838 | /react-is/16.13.1:
839 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
840 | dev: false
841 |
842 | /react-is/18.2.0:
843 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
844 | dev: false
845 |
846 | /react-redux/8.0.2_ff80cd9dfb626a6c6c4251864122e347:
847 | resolution: {integrity: sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==}
848 | peerDependencies:
849 | '@types/react': ^16.8 || ^17.0 || ^18.0
850 | '@types/react-dom': ^16.8 || ^17.0 || ^18.0
851 | react: ^16.8 || ^17.0 || ^18.0
852 | react-dom: ^16.8 || ^17.0 || ^18.0
853 | react-native: '>=0.59'
854 | redux: ^4
855 | peerDependenciesMeta:
856 | '@types/react':
857 | optional: true
858 | '@types/react-dom':
859 | optional: true
860 | react-dom:
861 | optional: true
862 | react-native:
863 | optional: true
864 | redux:
865 | optional: true
866 | dependencies:
867 | '@babel/runtime': 7.18.9
868 | '@types/hoist-non-react-statics': 3.3.1
869 | '@types/react': 18.0.17
870 | '@types/react-dom': 18.0.6
871 | '@types/use-sync-external-store': 0.0.3
872 | hoist-non-react-statics: 3.3.2
873 | react: 18.2.0
874 | react-dom: 18.2.0_react@18.2.0
875 | react-is: 18.2.0
876 | use-sync-external-store: 1.2.0_react@18.2.0
877 | dev: false
878 |
879 | /react-refresh/0.14.0:
880 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==}
881 | engines: {node: '>=0.10.0'}
882 | dev: true
883 |
884 | /react-router-dom/6.3.0_react-dom@18.2.0+react@18.2.0:
885 | resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
886 | peerDependencies:
887 | react: '>=16.8'
888 | react-dom: '>=16.8'
889 | dependencies:
890 | history: 5.3.0
891 | react: 18.2.0
892 | react-dom: 18.2.0_react@18.2.0
893 | react-router: 6.3.0_react@18.2.0
894 | dev: false
895 |
896 | /react-router/6.3.0_react@18.2.0:
897 | resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==}
898 | peerDependencies:
899 | react: '>=16.8'
900 | dependencies:
901 | history: 5.3.0
902 | react: 18.2.0
903 | dev: false
904 |
905 | /react/18.2.0:
906 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
907 | engines: {node: '>=0.10.0'}
908 | dependencies:
909 | loose-envify: 1.4.0
910 | dev: false
911 |
912 | /redux-thunk/2.4.1_redux@4.2.0:
913 | resolution: {integrity: sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==}
914 | peerDependencies:
915 | redux: ^4
916 | dependencies:
917 | redux: 4.2.0
918 | dev: false
919 |
920 | /redux/4.2.0:
921 | resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==}
922 | dependencies:
923 | '@babel/runtime': 7.18.9
924 | dev: false
925 |
926 | /regenerator-runtime/0.13.9:
927 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
928 | dev: false
929 |
930 | /reselect/4.1.6:
931 | resolution: {integrity: sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==}
932 | dev: false
933 |
934 | /resolve/1.22.1:
935 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
936 | hasBin: true
937 | dependencies:
938 | is-core-module: 2.10.0
939 | path-parse: 1.0.7
940 | supports-preserve-symlinks-flag: 1.0.0
941 | dev: true
942 |
943 | /rollup/2.77.3:
944 | resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==}
945 | engines: {node: '>=10.0.0'}
946 | hasBin: true
947 | optionalDependencies:
948 | fsevents: 2.3.2
949 | dev: true
950 |
951 | /safe-buffer/5.1.2:
952 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
953 | dev: true
954 |
955 | /scheduler/0.23.0:
956 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
957 | dependencies:
958 | loose-envify: 1.4.0
959 | dev: false
960 |
961 | /semver/6.3.0:
962 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
963 | hasBin: true
964 | dev: true
965 |
966 | /source-map-js/1.0.2:
967 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
968 | engines: {node: '>=0.10.0'}
969 | dev: true
970 |
971 | /sourcemap-codec/1.4.8:
972 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
973 | dev: true
974 |
975 | /supports-color/5.5.0:
976 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
977 | engines: {node: '>=4'}
978 | dependencies:
979 | has-flag: 3.0.0
980 | dev: true
981 |
982 | /supports-preserve-symlinks-flag/1.0.0:
983 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
984 | engines: {node: '>= 0.4'}
985 | dev: true
986 |
987 | /to-fast-properties/2.0.0:
988 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
989 | engines: {node: '>=4'}
990 | dev: true
991 |
992 | /typescript/4.7.4:
993 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
994 | engines: {node: '>=4.2.0'}
995 | hasBin: true
996 | dev: true
997 |
998 | /update-browserslist-db/1.0.5_browserslist@4.21.3:
999 | resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==}
1000 | hasBin: true
1001 | peerDependencies:
1002 | browserslist: '>= 4.21.0'
1003 | dependencies:
1004 | browserslist: 4.21.3
1005 | escalade: 3.1.1
1006 | picocolors: 1.0.0
1007 | dev: true
1008 |
1009 | /use-sync-external-store/1.2.0_react@18.2.0:
1010 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
1011 | peerDependencies:
1012 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1013 | dependencies:
1014 | react: 18.2.0
1015 | dev: false
1016 |
1017 | /vite/3.0.7:
1018 | resolution: {integrity: sha512-dILhvKba1mbP1wCezVQx/qhEK7/+jVn9ciadEcyKMMhZpsuAi/eWZfJRMkmYlkSFG7Qq9NvJbgFq4XOBxugJsA==}
1019 | engines: {node: ^14.18.0 || >=16.0.0}
1020 | hasBin: true
1021 | peerDependencies:
1022 | less: '*'
1023 | sass: '*'
1024 | stylus: '*'
1025 | terser: ^5.4.0
1026 | peerDependenciesMeta:
1027 | less:
1028 | optional: true
1029 | sass:
1030 | optional: true
1031 | stylus:
1032 | optional: true
1033 | terser:
1034 | optional: true
1035 | dependencies:
1036 | esbuild: 0.14.54
1037 | postcss: 8.4.16
1038 | resolve: 1.22.1
1039 | rollup: 2.77.3
1040 | optionalDependencies:
1041 | fsevents: 2.3.2
1042 | dev: true
1043 |
--------------------------------------------------------------------------------