feat(website): add file upload
This commit is contained in:
parent
6eed393d9f
commit
b052aba024
|
@ -1,7 +1,8 @@
|
|||
import list from "./list"
|
||||
import login from "./login"
|
||||
import register from "./register"
|
||||
import upload from "./upload"
|
||||
|
||||
const api = { list, login, register }
|
||||
const api = { list, login, register, upload }
|
||||
|
||||
export default api
|
||||
|
|
|
@ -30,5 +30,5 @@ export default async function list(path: string, token: string): Promise<any> {
|
|||
throw new Error(err)
|
||||
})
|
||||
|
||||
return response
|
||||
return response
|
||||
}
|
||||
|
|
|
@ -28,5 +28,5 @@ export default async function login(username: string, password: string): Promise
|
|||
throw new Error(err)
|
||||
})
|
||||
|
||||
return response
|
||||
return response
|
||||
}
|
||||
|
|
|
@ -28,5 +28,5 @@ export default async function register(username: string, password: string): Prom
|
|||
throw new Error(err)
|
||||
})
|
||||
|
||||
return response
|
||||
return response
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
import axios from './axios'
|
||||
|
||||
export default async function list(path: string, formData: FormData, token: string): Promise<any> {
|
||||
const request = axios.post(`/fs/upload?path=${path}`, formData, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
}
|
||||
})
|
||||
|
||||
const response = request
|
||||
.then(response => {
|
||||
const { data } = response
|
||||
return data
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.response?.data?.error_message) {
|
||||
const error = err.response.data.error_message
|
||||
|
||||
if (error.toString() == "[object Object]") {
|
||||
Object.keys(error).forEach(key => {
|
||||
throw new Error(key)
|
||||
})
|
||||
}
|
||||
|
||||
throw new Error(error)
|
||||
}
|
||||
|
||||
throw new Error(err)
|
||||
})
|
||||
|
||||
return response
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
const style = {
|
||||
position: 'absolute' as 'absolute',
|
||||
top: '50%',
|
||||
left: '50%',
|
||||
transform: 'translate(-50%, -50%)',
|
||||
width: 400,
|
||||
bgcolor: 'background.paper',
|
||||
color: 'primary.main',
|
||||
border: '2px solid #fff',
|
||||
boxShadow: 24,
|
||||
p: 4
|
||||
}
|
||||
|
||||
export default style
|
|
@ -0,0 +1,93 @@
|
|||
import React, { useState } from 'react'
|
||||
import { Backdrop, Box, Button, Fade, Link, Modal } from "@mui/material"
|
||||
import { useCookies } from "react-cookie"
|
||||
import { toast } from 'react-toastify'
|
||||
import api from '../../../api_utils'
|
||||
import style from './style'
|
||||
|
||||
function UploadModal({ open, setOpen, path, refresh }: Props) {
|
||||
const [file, setFile]: [FileList | null | undefined, React.Dispatch<React.SetStateAction<FileList | null | undefined>>] = useState()
|
||||
|
||||
const [cookies] = useCookies(["token"])
|
||||
|
||||
const onFileChange: React.ChangeEventHandler<HTMLInputElement> = event => {
|
||||
setFile(event.target.files)
|
||||
console.log(file)
|
||||
}
|
||||
|
||||
const handleUpload = () => {
|
||||
const formData = new FormData()
|
||||
|
||||
if (file == null || typeof file == "undefined") {
|
||||
return
|
||||
}
|
||||
|
||||
formData.append(
|
||||
"file",
|
||||
file[0]
|
||||
)
|
||||
|
||||
const filePath = `${path}/${file[0].name}`
|
||||
|
||||
const request = api.upload(filePath, formData, cookies.token)
|
||||
|
||||
toast.promise(
|
||||
request,
|
||||
{
|
||||
pending: 'Uploading file...',
|
||||
success: {
|
||||
delay: 500,
|
||||
render() {
|
||||
refresh()
|
||||
setOpen(false)
|
||||
|
||||
return "File uploaded!"
|
||||
}
|
||||
},
|
||||
error: {
|
||||
delay: 500,
|
||||
render(err) {
|
||||
if (err.data.response?.data?.error_message) {
|
||||
return err.data.response.data.error_message.toString()
|
||||
} else {
|
||||
return err.data.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<Modal
|
||||
open={open}
|
||||
onClose={() => setOpen(false)}
|
||||
closeAfterTransition
|
||||
BackdropComponent={Backdrop}
|
||||
BackdropProps={{
|
||||
timeout: 500,
|
||||
}}
|
||||
>
|
||||
<Fade in={open}>
|
||||
<Box sx={style}>
|
||||
<input type="file" onChange={onFileChange} />
|
||||
|
||||
<Link>
|
||||
<Button variant="outlined" onClick={handleUpload}>
|
||||
Upload
|
||||
</Button>
|
||||
</Link>
|
||||
</Box>
|
||||
</Fade>
|
||||
</Modal>
|
||||
)
|
||||
}
|
||||
|
||||
export type Props = {
|
||||
open: boolean,
|
||||
setOpen: React.Dispatch<React.SetStateAction<boolean>>,
|
||||
path: string,
|
||||
refresh: () => void,
|
||||
}
|
||||
|
||||
export default UploadModal
|
|
@ -27,6 +27,7 @@
|
|||
"react-cookie": "4.1.1",
|
||||
"react-dom": "18.1.0",
|
||||
"react-is": "18.1.0",
|
||||
"react-toastify": "9.0.1",
|
||||
"styled-components": "5.3.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
import { ThemeProvider as MuiThemeProvider, createTheme as muiCreateTheme, PaletteMode } from '@mui/material'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { useCookies } from 'react-cookie'
|
||||
import { ToastContainer } from 'react-toastify'
|
||||
import { createGlobalStyle, ThemeProvider } from 'styled-components'
|
||||
import Container from '../components/container'
|
||||
import Footer from '../components/footer'
|
||||
import Header from '../components/header'
|
||||
import Main from '../components/main'
|
||||
import "react-toastify/dist/ReactToastify.css"
|
||||
|
||||
const GlobalStyle = createGlobalStyle`
|
||||
html,
|
||||
|
@ -114,6 +116,8 @@ export default function App({ Component, pageProps }) {
|
|||
<>
|
||||
<GlobalStyle />
|
||||
|
||||
<ToastContainer theme={themeName} />
|
||||
|
||||
<MuiThemeProvider theme={muiThene}>
|
||||
<ThemeProvider theme={theme}>
|
||||
<Container>
|
||||
|
|
|
@ -10,10 +10,10 @@ import ErrorComponent from '../components/auth/error'
|
|||
import SubmitButton from '../components/auth/button'
|
||||
|
||||
export default function Login() {
|
||||
const [cookie, setCookie] = useCookies(["token"])
|
||||
const [cookies, setCookies] = useCookies(["token"])
|
||||
|
||||
useEffect(() => {
|
||||
if (cookie.token) {
|
||||
if (cookies.token) {
|
||||
Router.push('/user/files')
|
||||
}
|
||||
})
|
||||
|
@ -44,7 +44,7 @@ export default function Login() {
|
|||
|
||||
request
|
||||
.then(token => {
|
||||
setCookie("token", token)
|
||||
setCookies("token", token)
|
||||
setError("")
|
||||
})
|
||||
.catch(err => setError(err.toString()))
|
||||
|
|
|
@ -10,10 +10,10 @@ import Title from '../components/auth/title'
|
|||
import SubmitButton from '../components/auth/button'
|
||||
|
||||
export default function Login() {
|
||||
const [cookie, setCookie] = useCookies(["token"])
|
||||
const [cookies, setCookies] = useCookies(["token"])
|
||||
|
||||
useEffect(() => {
|
||||
if (cookie.token) {
|
||||
if (cookies.token) {
|
||||
Router.push('/user/files')
|
||||
}
|
||||
})
|
||||
|
@ -44,7 +44,7 @@ export default function Login() {
|
|||
|
||||
request
|
||||
.then(token => {
|
||||
setCookie("token", token)
|
||||
setCookies("token", token)
|
||||
setError("")
|
||||
})
|
||||
.catch(err => setError(err.toString()))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { faFile, faFolder } from "@fortawesome/free-solid-svg-icons"
|
||||
import { Link as MuiLink } from "@mui/material"
|
||||
import { CloudUpload } from "@mui/icons-material"
|
||||
import { IconButton, Link as MuiLink } from "@mui/material"
|
||||
import Head from 'next/head'
|
||||
import Link from 'next/link'
|
||||
import { useEffect, useState } from 'react'
|
||||
|
@ -8,6 +9,7 @@ import { resolve as pathResolve } from 'path'
|
|||
import api from '../../api_utils'
|
||||
import Icon from "../../components/other/icon"
|
||||
import Table from "../../components/user/table"
|
||||
import UploadModal from "../../components/user/modals/upload"
|
||||
|
||||
export default function Files() {
|
||||
const [cookies] = useCookies(["token"])
|
||||
|
@ -26,6 +28,8 @@ export default function Files() {
|
|||
.catch(err => console.error(err))
|
||||
}
|
||||
|
||||
const refreshFolder = () => refresh(path)
|
||||
|
||||
useEffect(() => {
|
||||
const params = new URLSearchParams(window.location.search)
|
||||
const path = params.get("path") || ""
|
||||
|
@ -39,12 +43,28 @@ export default function Files() {
|
|||
.catch(err => console.error(err))
|
||||
}, [cookies])
|
||||
|
||||
// modals
|
||||
const [uploadModal, setUploadModal] = useState(false)
|
||||
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Files - HomeDisk</title>
|
||||
</Head>
|
||||
|
||||
<MuiLink onClick={() => setUploadModal(true)}>
|
||||
<IconButton
|
||||
size="large"
|
||||
edge="start"
|
||||
color="inherit"
|
||||
aria-label="logo"
|
||||
>
|
||||
<CloudUpload />
|
||||
</IconButton>
|
||||
</MuiLink>
|
||||
|
||||
<UploadModal open={uploadModal} setOpen={setUploadModal} path={path} refresh={refreshFolder} />
|
||||
|
||||
<Table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
|
@ -21,6 +21,7 @@ specifiers:
|
|||
react-cookie: 4.1.1
|
||||
react-dom: 18.1.0
|
||||
react-is: 18.1.0
|
||||
react-toastify: 9.0.1
|
||||
styled-components: 5.3.5
|
||||
typescript: 4.6.4
|
||||
|
||||
|
@ -40,6 +41,7 @@ dependencies:
|
|||
react-cookie: 4.1.1_react@18.1.0
|
||||
react-dom: 18.1.0_react@18.1.0
|
||||
react-is: 18.1.0
|
||||
react-toastify: 9.0.1_ef5jwxihqo6n7gxfmzogljlgcm
|
||||
styled-components: 5.3.5_4klixn56hmiqf6hh5nx3jyckvq
|
||||
|
||||
devDependencies:
|
||||
|
@ -58,16 +60,19 @@ packages:
|
|||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.1.1
|
||||
'@jridgewell/trace-mapping': 0.3.10
|
||||
dev: false
|
||||
|
||||
/@babel/code-frame/7.16.7:
|
||||
resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/highlight': 7.17.9
|
||||
dev: false
|
||||
|
||||
/@babel/compat-data/7.17.10:
|
||||
resolution: {integrity: sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dev: false
|
||||
|
||||
/@babel/core/7.18.0:
|
||||
resolution: {integrity: sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==}
|
||||
|
@ -90,6 +95,7 @@ packages:
|
|||
semver: 6.3.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@babel/generator/7.18.0:
|
||||
resolution: {integrity: sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==}
|
||||
|
@ -98,6 +104,7 @@ packages:
|
|||
'@babel/types': 7.18.0
|
||||
'@jridgewell/gen-mapping': 0.3.1
|
||||
jsesc: 2.5.2
|
||||
dev: false
|
||||
|
||||
/@babel/helper-annotate-as-pure/7.16.7:
|
||||
resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
|
||||
|
@ -117,12 +124,14 @@ packages:
|
|||
'@babel/helper-validator-option': 7.16.7
|
||||
browserslist: 4.20.3
|
||||
semver: 6.3.0
|
||||
dev: false
|
||||
|
||||
/@babel/helper-environment-visitor/7.16.7:
|
||||
resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/helper-function-name/7.17.9:
|
||||
resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==}
|
||||
|
@ -130,18 +139,21 @@ packages:
|
|||
dependencies:
|
||||
'@babel/template': 7.16.7
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/helper-hoist-variables/7.16.7:
|
||||
resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/helper-module-imports/7.16.7:
|
||||
resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/helper-module-transforms/7.18.0:
|
||||
resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==}
|
||||
|
@ -157,6 +169,7 @@ packages:
|
|||
'@babel/types': 7.18.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@babel/helper-plugin-utils/7.16.7:
|
||||
resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
|
||||
|
@ -168,20 +181,24 @@ packages:
|
|||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/helper-split-export-declaration/7.16.7:
|
||||
resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/helper-validator-identifier/7.16.7:
|
||||
resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dev: false
|
||||
|
||||
/@babel/helper-validator-option/7.16.7:
|
||||
resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dev: false
|
||||
|
||||
/@babel/helpers/7.18.0:
|
||||
resolution: {integrity: sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==}
|
||||
|
@ -192,6 +209,7 @@ packages:
|
|||
'@babel/types': 7.18.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@babel/highlight/7.17.9:
|
||||
resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==}
|
||||
|
@ -200,6 +218,7 @@ packages:
|
|||
'@babel/helper-validator-identifier': 7.16.7
|
||||
chalk: 2.4.2
|
||||
js-tokens: 4.0.0
|
||||
dev: false
|
||||
|
||||
/@babel/parser/7.18.0:
|
||||
resolution: {integrity: sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==}
|
||||
|
@ -207,6 +226,7 @@ packages:
|
|||
hasBin: true
|
||||
dependencies:
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.18.0:
|
||||
resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
|
||||
|
@ -239,6 +259,7 @@ packages:
|
|||
'@babel/code-frame': 7.16.7
|
||||
'@babel/parser': 7.18.0
|
||||
'@babel/types': 7.18.0
|
||||
dev: false
|
||||
|
||||
/@babel/traverse/7.17.10_supports-color@5.5.0:
|
||||
resolution: {integrity: sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==}
|
||||
|
@ -274,6 +295,7 @@ packages:
|
|||
globals: 11.12.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@babel/types/7.18.0:
|
||||
resolution: {integrity: sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==}
|
||||
|
@ -281,6 +303,7 @@ packages:
|
|||
dependencies:
|
||||
'@babel/helper-validator-identifier': 7.16.7
|
||||
to-fast-properties: 2.0.0
|
||||
dev: false
|
||||
|
||||
/@emotion/babel-plugin/11.9.2_@babel+core@7.18.0:
|
||||
resolution: {integrity: sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==}
|
||||
|
@ -475,6 +498,7 @@ packages:
|
|||
dependencies:
|
||||
'@jridgewell/set-array': 1.1.1
|
||||
'@jridgewell/sourcemap-codec': 1.4.13
|
||||
dev: false
|
||||
|
||||
/@jridgewell/gen-mapping/0.3.1:
|
||||
resolution: {integrity: sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==}
|
||||
|
@ -483,23 +507,28 @@ packages:
|
|||
'@jridgewell/set-array': 1.1.1
|
||||
'@jridgewell/sourcemap-codec': 1.4.13
|
||||
'@jridgewell/trace-mapping': 0.3.10
|
||||
dev: false
|
||||
|
||||
/@jridgewell/resolve-uri/3.0.7:
|
||||
resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
dev: false
|
||||
|
||||
/@jridgewell/set-array/1.1.1:
|
||||
resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
dev: false
|
||||
|
||||
/@jridgewell/sourcemap-codec/1.4.13:
|
||||
resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==}
|
||||
dev: false
|
||||
|
||||
/@jridgewell/trace-mapping/0.3.10:
|
||||
resolution: {integrity: sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q==}
|
||||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.0.7
|
||||
'@jridgewell/sourcemap-codec': 1.4.13
|
||||
dev: false
|
||||
|
||||
/@mui/base/5.0.0-alpha.82_ohobp6rpsmerwlq5ipwfh5yigy:
|
||||
resolution: {integrity: sha512-WUVDjCGnLXzmGxrmfW31blhucg0sRX4YddK2Falq7FlVzwdJaPgWn/xzPZmdLL0+WXon0gQVnDrq2qvggE/GMg==}
|
||||
|
@ -688,6 +717,7 @@ packages:
|
|||
|
||||
/@next/env/12.1.6:
|
||||
resolution: {integrity: sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA==}
|
||||
dev: false
|
||||
|
||||
/@next/eslint-plugin-next/12.1.6:
|
||||
resolution: {integrity: sha512-yNUtJ90NEiYFT6TJnNyofKMPYqirKDwpahcbxBgSIuABwYOdkGwzos1ZkYD51Qf0diYwpQZBeVqElTk7Q2WNqw==}
|
||||
|
@ -701,6 +731,7 @@ packages:
|
|||
cpu: [arm]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-android-arm64/12.1.6:
|
||||
|
@ -709,6 +740,7 @@ packages:
|
|||
cpu: [arm64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-darwin-arm64/12.1.6:
|
||||
|
@ -717,6 +749,7 @@ packages:
|
|||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-darwin-x64/12.1.6:
|
||||
|
@ -725,6 +758,7 @@ packages:
|
|||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm-gnueabihf/12.1.6:
|
||||
|
@ -733,6 +767,7 @@ packages:
|
|||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-gnu/12.1.6:
|
||||
|
@ -741,6 +776,7 @@ packages:
|
|||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-musl/12.1.6:
|
||||
|
@ -749,6 +785,7 @@ packages:
|
|||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-gnu/12.1.6:
|
||||
|
@ -757,6 +794,7 @@ packages:
|
|||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-musl/12.1.6:
|
||||
|
@ -765,6 +803,7 @@ packages:
|
|||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-arm64-msvc/12.1.6:
|
||||
|
@ -773,6 +812,7 @@ packages:
|
|||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-ia32-msvc/12.1.6:
|
||||
|
@ -781,6 +821,7 @@ packages:
|
|||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-x64-msvc/12.1.6:
|
||||
|
@ -789,6 +830,7 @@ packages:
|
|||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@nodelib/fs.scandir/2.1.5:
|
||||
|
@ -873,6 +915,7 @@ packages:
|
|||
'@types/hoist-non-react-statics': 3.3.1
|
||||
'@types/react': 18.0.9
|
||||
csstype: 3.0.11
|
||||
dev: true
|
||||
|
||||
/@typescript-eslint/parser/5.22.0_utdtartgf6fqqgkivzeynh76la:
|
||||
resolution: {integrity: sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==}
|
||||
|
@ -969,6 +1012,7 @@ packages:
|
|||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
color-convert: 1.9.3
|
||||
dev: false
|
||||
|
||||
/ansi-styles/4.3.0:
|
||||
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
|
||||
|
@ -1104,6 +1148,7 @@ packages:
|
|||
escalade: 3.1.1
|
||||
node-releases: 2.0.4
|
||||
picocolors: 1.0.0
|
||||
dev: false
|
||||
|
||||
/call-bind/1.0.2:
|
||||
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
|
||||
|
@ -1122,6 +1167,7 @@ packages:
|
|||
|
||||
/caniuse-lite/1.0.30001338:
|
||||
resolution: {integrity: sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==}
|
||||
dev: false
|
||||
|
||||
/chalk/2.4.2:
|
||||
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
|
||||
|
@ -1130,6 +1176,7 @@ packages:
|
|||
ansi-styles: 3.2.1
|
||||
escape-string-regexp: 1.0.5
|
||||
supports-color: 5.5.0
|
||||
dev: false
|
||||
|
||||
/chalk/4.1.2:
|
||||
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||
|
@ -1148,6 +1195,7 @@ packages:
|
|||
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
||||
dependencies:
|
||||
color-name: 1.1.3
|
||||
dev: false
|
||||
|
||||
/color-convert/2.0.1:
|
||||
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
||||
|
@ -1158,6 +1206,7 @@ packages:
|
|||
|
||||
/color-name/1.1.3:
|
||||
resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
|
||||
dev: false
|
||||
|
||||
/color-name/1.1.4:
|
||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||
|
@ -1178,6 +1227,7 @@ packages:
|
|||
resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
|
||||
dependencies:
|
||||
safe-buffer: 5.1.2
|
||||
dev: false
|
||||
|
||||
/cookie/0.4.2:
|
||||
resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==}
|
||||
|
@ -1322,6 +1372,7 @@ packages:
|
|||
|
||||
/electron-to-chromium/1.4.137:
|
||||
resolution: {integrity: sha512-0Rcpald12O11BUogJagX3HsCN3FE83DSqWjgXoHo5a72KUKMSfI39XBgJpgNNxS9fuGzytaFjE06kZkiVFy2qA==}
|
||||
dev: false
|
||||
|
||||
/emoji-regex/9.2.2:
|
||||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||
|
@ -1380,10 +1431,12 @@ packages:
|
|||
/escalade/3.1.1:
|
||||
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
|
||||
engines: {node: '>=6'}
|
||||
dev: false
|
||||
|
||||
/escape-string-regexp/1.0.5:
|
||||
resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
|
||||
engines: {node: '>=0.8.0'}
|
||||
dev: false
|
||||
|
||||
/escape-string-regexp/4.0.0:
|
||||
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
||||
|
@ -1772,6 +1825,7 @@ packages:
|
|||
/gensync/1.0.0-beta.2:
|
||||
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dev: false
|
||||
|
||||
/get-intrinsic/1.1.1:
|
||||
resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==}
|
||||
|
@ -1828,6 +1882,7 @@ packages:
|
|||
/globals/11.12.0:
|
||||
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/globals/13.15.0:
|
||||
resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==}
|
||||
|
@ -1855,6 +1910,7 @@ packages:
|
|||
/has-flag/3.0.0:
|
||||
resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/has-flag/4.0.0:
|
||||
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
||||
|
@ -2043,6 +2099,7 @@ packages:
|
|||
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
|
||||
engines: {node: '>=4'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/json-parse-even-better-errors/2.3.1:
|
||||
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
|
||||
|
@ -2067,6 +2124,7 @@ packages:
|
|||
resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
|
||||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/jsx-ast-utils/3.3.0:
|
||||
resolution: {integrity: sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==}
|
||||
|
@ -2173,6 +2231,7 @@ packages:
|
|||
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/natural-compare/1.4.0:
|
||||
resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=}
|
||||
|
@ -2218,9 +2277,11 @@ packages:
|
|||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- babel-plugin-macros
|
||||
dev: false
|
||||
|
||||
/node-releases/2.0.4:
|
||||
resolution: {integrity: sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==}
|
||||
dev: false
|
||||
|
||||
/object-assign/4.1.1:
|
||||
resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
|
||||
|
@ -2356,6 +2417,7 @@ packages:
|
|||
|
||||
/picocolors/1.0.0:
|
||||
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
||||
dev: false
|
||||
|
||||
/picomatch/2.3.1:
|
||||
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
||||
|
@ -2372,6 +2434,7 @@ packages:
|
|||
nanoid: 3.3.4
|
||||
picocolors: 1.0.0
|
||||
source-map-js: 1.0.2
|
||||
dev: false
|
||||
|
||||
/prelude-ls/1.2.1:
|
||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||
|
@ -2413,6 +2476,7 @@ packages:
|
|||
loose-envify: 1.4.0
|
||||
react: 18.1.0
|
||||
scheduler: 0.22.0
|
||||
dev: false
|
||||
|
||||
/react-is/16.13.1:
|
||||
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
||||
|
@ -2425,6 +2489,17 @@ packages:
|
|||
resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==}
|
||||
dev: false
|
||||
|
||||
/react-toastify/9.0.1_ef5jwxihqo6n7gxfmzogljlgcm:
|
||||
resolution: {integrity: sha512-c2zeZHkCX+WXuItS/JRqQ/8CH8Qm/je+M0rt09xe9fnu5YPJigtNOdD8zX4fwLA093V2am3abkGfOowwpkrwOQ==}
|
||||
peerDependencies:
|
||||
react: '>=16'
|
||||
react-dom: '>=16'
|
||||
dependencies:
|
||||
clsx: 1.1.1
|
||||
react: 18.1.0
|
||||
react-dom: 18.1.0_react@18.1.0
|
||||
dev: false
|
||||
|
||||
/react-transition-group/4.4.2_ef5jwxihqo6n7gxfmzogljlgcm:
|
||||
resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==}
|
||||
peerDependencies:
|
||||
|
@ -2444,6 +2519,7 @@ packages:
|
|||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
||||
/regenerator-runtime/0.13.9:
|
||||
resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
|
||||
|
@ -2501,11 +2577,13 @@ packages:
|
|||
|
||||
/safe-buffer/5.1.2:
|
||||
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
|
||||
dev: false
|
||||
|
||||
/scheduler/0.22.0:
|
||||
resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==}
|
||||
dependencies:
|
||||
loose-envify: 1.4.0
|
||||
dev: false
|
||||
|
||||
/semver/6.3.0:
|
||||
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
|
||||
|
@ -2551,6 +2629,7 @@ packages:
|
|||
/source-map-js/1.0.2:
|
||||
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: false
|
||||
|
||||
/source-map/0.5.7:
|
||||
resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
|
||||
|
@ -2642,6 +2721,7 @@ packages:
|
|||
dependencies:
|
||||
'@babel/core': 7.18.0
|
||||
react: 18.1.0
|
||||
dev: false
|
||||
|
||||
/stylis/4.0.13:
|
||||
resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==}
|
||||
|
@ -2652,6 +2732,7 @@ packages:
|
|||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
has-flag: 3.0.0
|
||||
dev: false
|
||||
|
||||
/supports-color/7.2.0:
|
||||
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
|
||||
|
@ -2671,6 +2752,7 @@ packages:
|
|||
/to-fast-properties/2.0.0:
|
||||
resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
|
||||
engines: {node: '>=4'}
|
||||
dev: false
|
||||
|
||||
/to-regex-range/5.0.1:
|
||||
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
|
||||
|
|
Loading…
Reference in New Issue