Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
I
initial_project
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Нұрасыл Қайратұлы
initial_project
Commits
718404e2
Commit
718404e2
authored
Aug 13, 2024
by
Нұрасыл Қайратұлы
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
a2e84f82
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
1412 additions
and
210 deletions
+1412
-210
package-lock.json
client/package-lock.json
+1074
-180
package.json
client/package.json
+4
-3
App.tsx
client/src/App.tsx
+25
-6
ProtectedRoute.tsx
client/src/components/ProtectedRoute.tsx
+13
-0
Register.tsx
client/src/components/Register.tsx
+58
-0
SignIn.tsx
client/src/components/SignIn.tsx
+52
-0
AppToolbar.tsx
client/src/components/UI/AppToolbar.tsx
+6
-2
Auth.tsx
client/src/containers/Auth.tsx
+41
-0
Products2.tsx
client/src/containers/Products2.tsx
+0
-19
usersSlice.ts
client/src/features/usersSlice.ts
+119
-0
index.ts
client/src/store/index.ts
+2
-0
user.controller.ts
server/src/controllers/user.controller.ts
+6
-0
user.repository.ts
server/src/repositories/user.repository.ts
+7
-0
user.route.ts
server/src/routes/user.route.ts
+1
-0
user.service.ts
server/src/services/user.service.ts
+4
-0
No files found.
client/package-lock.json
View file @
718404e2
...
...
@@ -8,12 +8,13 @@
"name"
:
"client"
,
"version"
:
"0.0.0"
,
"dependencies"
:
{
"@emotion/react"
:
"^11.1
1.4
"
,
"@emotion/styled"
:
"^11.1
1.5
"
,
"@emotion/react"
:
"^11.1
3.0
"
,
"@emotion/styled"
:
"^11.1
3.0
"
,
"@fontsource/roboto"
:
"^5.0.12"
,
"@mui/icons-material"
:
"^5.15.14"
,
"@mui/material"
:
"^5.1
5.14
"
,
"@mui/material"
:
"^5.1
6.7
"
,
"@reduxjs/toolkit"
:
"^2.1.0"
,
"antd"
:
"^5.20.0"
,
"axios"
:
"^1.6.7"
,
"path"
:
"^0.12.7"
,
"react"
:
"^18.2.0"
,
...
...
@@ -61,6 +62,106 @@
"node"
:
">=6.0.0"
}
},
"node_modules/@ant-design/colors"
:
{
"version"
:
"7.1.0"
,
"resolved"
:
"https://registry.npmjs.org/@ant-design/colors/-/colors-7.1.0.tgz"
,
"integrity"
:
"sha512-MMoDGWn1y9LdQJQSHiCC20x3uZ3CwQnv9QMz6pCmJOrqdgM9YxsoVVY0wtrdXbmfSgnV0KNk6zi09NAhMR2jvg=="
,
"dependencies"
:
{
"@ctrl/tinycolor"
:
"^3.6.1"
}
},
"node_modules/@ant-design/cssinjs"
:
{
"version"
:
"1.21.0"
,
"resolved"
:
"https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.21.0.tgz"
,
"integrity"
:
"sha512-gIilraPl+9EoKdYxnupxjHB/Q6IHNRjEXszKbDxZdsgv4sAZ9pjkCq8yanDWNvyfjp4leir2OVAJm0vxwKK8YA=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.1"
,
"@emotion/hash"
:
"^0.8.0"
,
"@emotion/unitless"
:
"^0.7.5"
,
"classnames"
:
"^2.3.1"
,
"csstype"
:
"^3.1.3"
,
"rc-util"
:
"^5.35.0"
,
"stylis"
:
"^4.0.13"
},
"peerDependencies"
:
{
"react"
:
">=16.0.0"
,
"react-dom"
:
">=16.0.0"
}
},
"node_modules/@ant-design/cssinjs-utils"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/@ant-design/cssinjs-utils/-/cssinjs-utils-1.0.3.tgz"
,
"integrity"
:
"sha512-BrztZZKuoYcJK8uEH40ylBemf/Mu/QPiDos56g2bv6eUoniQkgQHOCOvA3+pncoFO1TaS8xcUCIqGzDA0I+ZVQ=="
,
"dependencies"
:
{
"@ant-design/cssinjs"
:
"^1.21.0"
,
"@babel/runtime"
:
"^7.23.2"
,
"rc-util"
:
"^5.38.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@ant-design/cssinjs/node_modules/@emotion/hash"
:
{
"version"
:
"0.8.0"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz"
,
"integrity"
:
"sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
},
"node_modules/@ant-design/cssinjs/node_modules/@emotion/unitless"
:
{
"version"
:
"0.7.5"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz"
,
"integrity"
:
"sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
},
"node_modules/@ant-design/fast-color"
:
{
"version"
:
"2.0.6"
,
"resolved"
:
"https://registry.npmjs.org/@ant-design/fast-color/-/fast-color-2.0.6.tgz"
,
"integrity"
:
"sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.24.7"
},
"engines"
:
{
"node"
:
">=8.x"
}
},
"node_modules/@ant-design/icons"
:
{
"version"
:
"5.4.0"
,
"resolved"
:
"https://registry.npmjs.org/@ant-design/icons/-/icons-5.4.0.tgz"
,
"integrity"
:
"sha512-QZbWC5xQYexCI5q4/fehSEkchJr5UGtvAJweT743qKUQQGs9IH2DehNLP49DJ3Ii9m9CijD2HN6fNy3WKhIFdA=="
,
"dependencies"
:
{
"@ant-design/colors"
:
"^7.0.0"
,
"@ant-design/icons-svg"
:
"^4.4.0"
,
"@babel/runtime"
:
"^7.24.8"
,
"classnames"
:
"^2.2.6"
,
"rc-util"
:
"^5.31.1"
},
"engines"
:
{
"node"
:
">=8"
},
"peerDependencies"
:
{
"react"
:
">=16.0.0"
,
"react-dom"
:
">=16.0.0"
}
},
"node_modules/@ant-design/icons-svg"
:
{
"version"
:
"4.4.2"
,
"resolved"
:
"https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz"
,
"integrity"
:
"sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA=="
},
"node_modules/@ant-design/react-slick"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz"
,
"integrity"
:
"sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.4"
,
"classnames"
:
"^2.2.5"
,
"json2mq"
:
"^0.2.0"
,
"resize-observer-polyfill"
:
"^1.5.1"
,
"throttle-debounce"
:
"^5.0.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
}
},
"node_modules/@babel/code-frame"
:
{
"version"
:
"7.23.5"
,
"resolved"
:
"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz"
,
...
...
@@ -353,9 +454,9 @@
}
},
"node_modules/@babel/runtime"
:
{
"version"
:
"7.2
4.1
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/runtime/-/runtime-7.2
4.1
.tgz"
,
"integrity"
:
"sha512-
+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ
=="
,
"version"
:
"7.2
5.0
"
,
"resolved"
:
"https://registry.npmjs.org/@babel/runtime/-/runtime-7.2
5.0
.tgz"
,
"integrity"
:
"sha512-
7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw
=="
,
"dependencies"
:
{
"regenerator-runtime"
:
"^0.14.0"
},
...
...
@@ -411,16 +512,24 @@
"node"
:
">=6.9.0"
}
},
"node_modules/@ctrl/tinycolor"
:
{
"version"
:
"3.6.1"
,
"resolved"
:
"https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz"
,
"integrity"
:
"sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA=="
,
"engines"
:
{
"node"
:
">=10"
}
},
"node_modules/@emotion/babel-plugin"
:
{
"version"
:
"11.1
1
.0"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.1
1
.0.tgz"
,
"integrity"
:
"sha512-
m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ
=="
,
"version"
:
"11.1
2
.0"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.1
2
.0.tgz"
,
"integrity"
:
"sha512-
y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw
=="
,
"dependencies"
:
{
"@babel/helper-module-imports"
:
"^7.16.7"
,
"@babel/runtime"
:
"^7.18.3"
,
"@emotion/hash"
:
"^0.9.
1
"
,
"@emotion/memoize"
:
"^0.
8.1
"
,
"@emotion/serialize"
:
"^1.
1.2
"
,
"@emotion/hash"
:
"^0.9.
2
"
,
"@emotion/memoize"
:
"^0.
9.0
"
,
"@emotion/serialize"
:
"^1.
2.0
"
,
"babel-plugin-macros"
:
"^3.1.0"
,
"convert-source-map"
:
"^1.5.0"
,
"escape-string-regexp"
:
"^4.0.0"
,
...
...
@@ -446,47 +555,47 @@
}
},
"node_modules/@emotion/cache"
:
{
"version"
:
"11.1
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/cache/-/cache-11.1
1.0
.tgz"
,
"integrity"
:
"sha512-
P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ
=="
,
"dependencies"
:
{
"@emotion/memoize"
:
"^0.
8.1
"
,
"@emotion/sheet"
:
"^1.
2.2
"
,
"@emotion/utils"
:
"^1.
2.1
"
,
"@emotion/weak-memoize"
:
"^0.
3.1
"
,
"version"
:
"11.1
3.1
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/cache/-/cache-11.1
3.1
.tgz"
,
"integrity"
:
"sha512-
iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw
=="
,
"dependencies"
:
{
"@emotion/memoize"
:
"^0.
9.0
"
,
"@emotion/sheet"
:
"^1.
4.0
"
,
"@emotion/utils"
:
"^1.
4.0
"
,
"@emotion/weak-memoize"
:
"^0.
4.0
"
,
"stylis"
:
"4.2.0"
}
},
"node_modules/@emotion/hash"
:
{
"version"
:
"0.9.
1
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/hash/-/hash-0.9.
1
.tgz"
,
"integrity"
:
"sha512-
gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ
=="
"version"
:
"0.9.
2
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/hash/-/hash-0.9.
2
.tgz"
,
"integrity"
:
"sha512-
MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g
=="
},
"node_modules/@emotion/is-prop-valid"
:
{
"version"
:
"1.
2.2
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.
2.2
.tgz"
,
"integrity"
:
"sha512-
uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw
=="
,
"version"
:
"1.
3.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.
3.0
.tgz"
,
"integrity"
:
"sha512-
SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ
=="
,
"dependencies"
:
{
"@emotion/memoize"
:
"^0.
8.1
"
"@emotion/memoize"
:
"^0.
9.0
"
}
},
"node_modules/@emotion/memoize"
:
{
"version"
:
"0.
8.1
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/memoize/-/memoize-0.
8.1
.tgz"
,
"integrity"
:
"sha512-
W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA
=="
"version"
:
"0.
9.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/memoize/-/memoize-0.
9.0
.tgz"
,
"integrity"
:
"sha512-
30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ
=="
},
"node_modules/@emotion/react"
:
{
"version"
:
"11.1
1.4
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/react/-/react-11.1
1.4
.tgz"
,
"integrity"
:
"sha512-
t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw
=="
,
"version"
:
"11.1
3.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/react/-/react-11.1
3.0
.tgz"
,
"integrity"
:
"sha512-
WkL+bw1REC2VNV1goQyfxjx1GYJkcc23CRQkXX+vZNLINyfI7o+uUn/rTGPt/xJ3bJHd5GcljgnxHf4wRw5VWQ
=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.3"
,
"@emotion/babel-plugin"
:
"^11.1
1
.0"
,
"@emotion/cache"
:
"^11.1
1
.0"
,
"@emotion/serialize"
:
"^1.
1.3
"
,
"@emotion/use-insertion-effect-with-fallbacks"
:
"^1.
0.1
"
,
"@emotion/utils"
:
"^1.
2.1
"
,
"@emotion/weak-memoize"
:
"^0.
3.1
"
,
"@emotion/babel-plugin"
:
"^11.1
2
.0"
,
"@emotion/cache"
:
"^11.1
3
.0"
,
"@emotion/serialize"
:
"^1.
3.0
"
,
"@emotion/use-insertion-effect-with-fallbacks"
:
"^1.
1.0
"
,
"@emotion/utils"
:
"^1.
4.0
"
,
"@emotion/weak-memoize"
:
"^0.
4.0
"
,
"hoist-non-react-statics"
:
"^3.3.1"
},
"peerDependencies"
:
{
...
...
@@ -499,33 +608,33 @@
}
},
"node_modules/@emotion/serialize"
:
{
"version"
:
"1.
1.4
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/serialize/-/serialize-1.
1.4
.tgz"
,
"integrity"
:
"sha512-
RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ
=="
,
"version"
:
"1.
3.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/serialize/-/serialize-1.
3.0
.tgz"
,
"integrity"
:
"sha512-
jACuBa9SlYajnpIVXB+XOXnfJHyckDfe6fOpORIM6yhBDlqGuExvDdZYHDQGoDf3bZXGv7tNr+LpLjJqiEQ6EA
=="
,
"dependencies"
:
{
"@emotion/hash"
:
"^0.9.
1
"
,
"@emotion/memoize"
:
"^0.
8.1
"
,
"@emotion/unitless"
:
"^0.
8.1
"
,
"@emotion/utils"
:
"^1.
2.1
"
,
"@emotion/hash"
:
"^0.9.
2
"
,
"@emotion/memoize"
:
"^0.
9.0
"
,
"@emotion/unitless"
:
"^0.
9.0
"
,
"@emotion/utils"
:
"^1.
4.0
"
,
"csstype"
:
"^3.0.2"
}
},
"node_modules/@emotion/sheet"
:
{
"version"
:
"1.
2.2
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/sheet/-/sheet-1.
2.2
.tgz"
,
"integrity"
:
"sha512-
0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA
=="
"version"
:
"1.
4.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/sheet/-/sheet-1.
4.0
.tgz"
,
"integrity"
:
"sha512-
fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg
=="
},
"node_modules/@emotion/styled"
:
{
"version"
:
"11.1
1.5
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/styled/-/styled-11.1
1.5
.tgz"
,
"integrity"
:
"sha512-
/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ
=="
,
"version"
:
"11.1
3.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/styled/-/styled-11.1
3.0
.tgz"
,
"integrity"
:
"sha512-
tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA
=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.3"
,
"@emotion/babel-plugin"
:
"^11.1
1
.0"
,
"@emotion/is-prop-valid"
:
"^1.
2.2
"
,
"@emotion/serialize"
:
"^1.
1.4
"
,
"@emotion/use-insertion-effect-with-fallbacks"
:
"^1.
0.1
"
,
"@emotion/utils"
:
"^1.
2.1
"
"@emotion/babel-plugin"
:
"^11.1
2
.0"
,
"@emotion/is-prop-valid"
:
"^1.
3.0
"
,
"@emotion/serialize"
:
"^1.
3.0
"
,
"@emotion/use-insertion-effect-with-fallbacks"
:
"^1.
1.0
"
,
"@emotion/utils"
:
"^1.
4.0
"
},
"peerDependencies"
:
{
"@emotion/react"
:
"^11.0.0-rc.0"
,
...
...
@@ -538,27 +647,27 @@
}
},
"node_modules/@emotion/unitless"
:
{
"version"
:
"0.
8.1
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/unitless/-/unitless-0.
8.1
.tgz"
,
"integrity"
:
"sha512-
KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKm
Q=="
"version"
:
"0.
9.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/unitless/-/unitless-0.
9.0
.tgz"
,
"integrity"
:
"sha512-
TP6GgNZtmtFaFcsOgExdnfxLLpRDla4Q66tnenA9CktvVSdNKDvMVuUah4QvWPIpNjrWsGg3qeGo9a43QooGZ
Q=="
},
"node_modules/@emotion/use-insertion-effect-with-fallbacks"
:
{
"version"
:
"1.
0.1
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.
0.1
.tgz"
,
"integrity"
:
"sha512-
jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2g
w=="
,
"version"
:
"1.
1.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.
1.0
.tgz"
,
"integrity"
:
"sha512-
+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3H
w=="
,
"peerDependencies"
:
{
"react"
:
">=16.8.0"
}
},
"node_modules/@emotion/utils"
:
{
"version"
:
"1.
2.1
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/utils/-/utils-1.
2.1
.tgz"
,
"integrity"
:
"sha512-
Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg
=="
"version"
:
"1.
4.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/utils/-/utils-1.
4.0
.tgz"
,
"integrity"
:
"sha512-
spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ
=="
},
"node_modules/@emotion/weak-memoize"
:
{
"version"
:
"0.
3.1
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.
3.1
.tgz"
,
"integrity"
:
"sha512-
EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww
=="
"version"
:
"0.
4.0
"
,
"resolved"
:
"https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.
4.0
.tgz"
,
"integrity"
:
"sha512-
snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg
=="
},
"node_modules/@esbuild/aix-ppc64"
:
{
"version"
:
"0.19.12"
,
...
...
@@ -1021,40 +1130,6 @@
"node"
:
"^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@floating-ui/core"
:
{
"version"
:
"1.6.0"
,
"resolved"
:
"https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz"
,
"integrity"
:
"sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g=="
,
"dependencies"
:
{
"@floating-ui/utils"
:
"^0.2.1"
}
},
"node_modules/@floating-ui/dom"
:
{
"version"
:
"1.6.3"
,
"resolved"
:
"https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz"
,
"integrity"
:
"sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw=="
,
"dependencies"
:
{
"@floating-ui/core"
:
"^1.0.0"
,
"@floating-ui/utils"
:
"^0.2.0"
}
},
"node_modules/@floating-ui/react-dom"
:
{
"version"
:
"2.0.8"
,
"resolved"
:
"https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz"
,
"integrity"
:
"sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw=="
,
"dependencies"
:
{
"@floating-ui/dom"
:
"^1.6.1"
},
"peerDependencies"
:
{
"react"
:
">=16.8.0"
,
"react-dom"
:
">=16.8.0"
}
},
"node_modules/@floating-ui/utils"
:
{
"version"
:
"0.2.1"
,
"resolved"
:
"https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz"
,
"integrity"
:
"sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
},
"node_modules/@fontsource/roboto"
:
{
"version"
:
"5.0.12"
,
"resolved"
:
"https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.12.tgz"
,
...
...
@@ -1163,41 +1238,10 @@
"@jridgewell/sourcemap-codec"
:
"^1.4.14"
}
},
"node_modules/@mui/base"
:
{
"version"
:
"5.0.0-beta.40"
,
"resolved"
:
"https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz"
,
"integrity"
:
"sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.9"
,
"@floating-ui/react-dom"
:
"^2.0.8"
,
"@mui/types"
:
"^7.2.14"
,
"@mui/utils"
:
"^5.15.14"
,
"@popperjs/core"
:
"^2.11.8"
,
"clsx"
:
"^2.1.0"
,
"prop-types"
:
"^15.8.1"
},
"engines"
:
{
"node"
:
">=12.0.0"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/mui-org"
},
"peerDependencies"
:
{
"@types/react"
:
"^17.0.0 || ^18.0.0"
,
"react"
:
"^17.0.0 || ^18.0.0"
,
"react-dom"
:
"^17.0.0 || ^18.0.0"
},
"peerDependenciesMeta"
:
{
"@types/react"
:
{
"optional"
:
true
}
}
},
"node_modules/@mui/core-downloads-tracker"
:
{
"version"
:
"5.1
5.14
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.1
5.14
.tgz"
,
"integrity"
:
"sha512-
on75VMd0XqZfaQW+9pGjSNiqW+ghc5E2ZSLRBXwcXl/C4YzjfyjrLPhrEpKnR9Uym9KXBvxrhoHfPcczYHweyA
=="
,
"version"
:
"5.1
6.7
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.1
6.7
.tgz"
,
"integrity"
:
"sha512-
RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ
=="
,
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/mui-org"
...
...
@@ -1229,21 +1273,21 @@
}
},
"node_modules/@mui/material"
:
{
"version"
:
"5.1
5.14
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/material/-/material-5.1
5.14
.tgz"
,
"integrity"
:
"sha512-
kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ
=="
,
"version"
:
"5.1
6.7
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/material/-/material-5.1
6.7
.tgz"
,
"integrity"
:
"sha512-
cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg
=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.9"
,
"@mui/
base"
:
"5.0.0-beta.40
"
,
"@mui/
core-downloads-tracker"
:
"^5.15.14
"
,
"@mui/
system"
:
"^5.15.14
"
,
"@mui/
types"
:
"^7.2.14
"
,
"@
mui/utils"
:
"^5.15.14
"
,
"@mui/
core-downloads-tracker"
:
"^5.16.7
"
,
"@mui/
system"
:
"^5.16.7
"
,
"@mui/
types"
:
"^7.2.15
"
,
"@mui/
utils"
:
"^5.16.6
"
,
"@
popperjs/core"
:
"^2.11.8
"
,
"@types/react-transition-group"
:
"^4.4.10"
,
"clsx"
:
"^2.1.0"
,
"csstype"
:
"^3.1.3"
,
"prop-types"
:
"^15.8.1"
,
"react-is"
:
"^18.
2.0
"
,
"react-is"
:
"^18.
3.1
"
,
"react-transition-group"
:
"^4.4.5"
},
"engines"
:
{
...
...
@@ -1273,17 +1317,17 @@
}
},
"node_modules/@mui/material/node_modules/react-is"
:
{
"version"
:
"18.
2.0
"
,
"resolved"
:
"https://registry.npmjs.org/react-is/-/react-is-18.
2.0
.tgz"
,
"integrity"
:
"sha512-
xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w
=="
"version"
:
"18.
3.1
"
,
"resolved"
:
"https://registry.npmjs.org/react-is/-/react-is-18.
3.1
.tgz"
,
"integrity"
:
"sha512-
/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg
=="
},
"node_modules/@mui/private-theming"
:
{
"version"
:
"5.1
5.14
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.1
5.14
.tgz"
,
"integrity"
:
"sha512-
UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6X
w=="
,
"version"
:
"5.1
6.6
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.1
6.6
.tgz"
,
"integrity"
:
"sha512-
rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3h
w=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.9"
,
"@mui/utils"
:
"^5.1
5.14
"
,
"@mui/utils"
:
"^5.1
6.6
"
,
"prop-types"
:
"^15.8.1"
},
"engines"
:
{
...
...
@@ -1304,9 +1348,9 @@
}
},
"node_modules/@mui/styled-engine"
:
{
"version"
:
"5.1
5.14
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.1
5.14
.tgz"
,
"integrity"
:
"sha512-
RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw
=="
,
"version"
:
"5.1
6.6
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.1
6.6
.tgz"
,
"integrity"
:
"sha512-
zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g
=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.9"
,
"@emotion/cache"
:
"^11.11.0"
,
...
...
@@ -1335,15 +1379,15 @@
}
},
"node_modules/@mui/system"
:
{
"version"
:
"5.1
5.14
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/system/-/system-5.1
5.14
.tgz"
,
"integrity"
:
"sha512-
auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg
=="
,
"version"
:
"5.1
6.7
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/system/-/system-5.1
6.7
.tgz"
,
"integrity"
:
"sha512-
Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA
=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.9"
,
"@mui/private-theming"
:
"^5.1
5.14
"
,
"@mui/styled-engine"
:
"^5.1
5.14
"
,
"@mui/types"
:
"^7.2.1
4
"
,
"@mui/utils"
:
"^5.1
5.14
"
,
"@mui/private-theming"
:
"^5.1
6.6
"
,
"@mui/styled-engine"
:
"^5.1
6.6
"
,
"@mui/types"
:
"^7.2.1
5
"
,
"@mui/utils"
:
"^5.1
6.6
"
,
"clsx"
:
"^2.1.0"
,
"csstype"
:
"^3.1.3"
,
"prop-types"
:
"^15.8.1"
...
...
@@ -1374,9 +1418,9 @@
}
},
"node_modules/@mui/types"
:
{
"version"
:
"7.2.1
4
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/types/-/types-7.2.1
4
.tgz"
,
"integrity"
:
"sha512-
MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQ
Q=="
,
"version"
:
"7.2.1
5
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/types/-/types-7.2.1
5
.tgz"
,
"integrity"
:
"sha512-
nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0
Q=="
,
"peerDependencies"
:
{
"@types/react"
:
"^17.0.0 || ^18.0.0"
},
...
...
@@ -1387,14 +1431,16 @@
}
},
"node_modules/@mui/utils"
:
{
"version"
:
"5.1
5.14
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/utils/-/utils-5.1
5.14
.tgz"
,
"integrity"
:
"sha512-
0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTF
A=="
,
"version"
:
"5.1
6.6
"
,
"resolved"
:
"https://registry.npmjs.org/@mui/utils/-/utils-5.1
6.6
.tgz"
,
"integrity"
:
"sha512-
tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqE
A=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.9"
,
"@types/prop-types"
:
"^15.7.11"
,
"@mui/types"
:
"^7.2.15"
,
"@types/prop-types"
:
"^15.7.12"
,
"clsx"
:
"^2.1.1"
,
"prop-types"
:
"^15.8.1"
,
"react-is"
:
"^18.
2.0
"
"react-is"
:
"^18.
3.1
"
},
"engines"
:
{
"node"
:
">=12.0.0"
...
...
@@ -1414,9 +1460,9 @@
}
},
"node_modules/@mui/utils/node_modules/react-is"
:
{
"version"
:
"18.
2.0
"
,
"resolved"
:
"https://registry.npmjs.org/react-is/-/react-is-18.
2.0
.tgz"
,
"integrity"
:
"sha512-
xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w
=="
"version"
:
"18.
3.1
"
,
"resolved"
:
"https://registry.npmjs.org/react-is/-/react-is-18.
3.1
.tgz"
,
"integrity"
:
"sha512-
/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg
=="
},
"node_modules/@nodelib/fs.scandir"
:
{
"version"
:
"2.1.5"
,
...
...
@@ -1474,6 +1520,146 @@
"url"
:
"https://opencollective.com/popperjs"
}
},
"node_modules/@rc-component/async-validator"
:
{
"version"
:
"5.0.4"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/async-validator/-/async-validator-5.0.4.tgz"
,
"integrity"
:
"sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.24.4"
},
"engines"
:
{
"node"
:
">=14.x"
}
},
"node_modules/@rc-component/color-picker"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-2.0.1.tgz"
,
"integrity"
:
"sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q=="
,
"dependencies"
:
{
"@ant-design/fast-color"
:
"^2.0.6"
,
"@babel/runtime"
:
"^7.23.6"
,
"classnames"
:
"^2.2.6"
,
"rc-util"
:
"^5.38.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@rc-component/context"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz"
,
"integrity"
:
"sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"rc-util"
:
"^5.27.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@rc-component/mini-decimal"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz"
,
"integrity"
:
"sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.0"
},
"engines"
:
{
"node"
:
">=8.x"
}
},
"node_modules/@rc-component/mutate-observer"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz"
,
"integrity"
:
"sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.0"
,
"classnames"
:
"^2.3.2"
,
"rc-util"
:
"^5.24.4"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@rc-component/portal"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz"
,
"integrity"
:
"sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.0"
,
"classnames"
:
"^2.3.2"
,
"rc-util"
:
"^5.24.4"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@rc-component/qrcode"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/qrcode/-/qrcode-1.0.0.tgz"
,
"integrity"
:
"sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.24.7"
,
"classnames"
:
"^2.3.2"
,
"rc-util"
:
"^5.38.0"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@rc-component/tour"
:
{
"version"
:
"1.15.0"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/tour/-/tour-1.15.0.tgz"
,
"integrity"
:
"sha512-h6hyILDwL+In9GAgRobwRWihLqqsD7Uft3fZGrJ7L4EiyCoxbnNYwzPXDfz7vNDhWeVyvAWQJj9fJCzpI4+b4g=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.0"
,
"@rc-component/portal"
:
"^1.0.0-9"
,
"@rc-component/trigger"
:
"^2.0.0"
,
"classnames"
:
"^2.3.2"
,
"rc-util"
:
"^5.24.4"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@rc-component/trigger"
:
{
"version"
:
"2.2.1"
,
"resolved"
:
"https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.2.1.tgz"
,
"integrity"
:
"sha512-fuU11J8pOt6+U/tU6/CAv8wjCwGaNeRk9f5k8HQth7JBbJ6MMH62WhGycVW75VnXfBZgL/7kO+wbiO2Xc9U9sQ=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.2"
,
"@rc-component/portal"
:
"^1.1.0"
,
"classnames"
:
"^2.3.2"
,
"rc-motion"
:
"^2.0.0"
,
"rc-resize-observer"
:
"^1.3.1"
,
"rc-util"
:
"^5.38.0"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/@reduxjs/toolkit"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.1.0.tgz"
,
...
...
@@ -1742,9 +1928,9 @@
"integrity"
:
"sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
},
"node_modules/@types/prop-types"
:
{
"version"
:
"15.7.1
1
"
,
"resolved"
:
"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1
1
.tgz"
,
"integrity"
:
"sha512-
ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng
=="
"version"
:
"15.7.1
2
"
,
"resolved"
:
"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1
2
.tgz"
,
"integrity"
:
"sha512-
5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q
=="
},
"node_modules/@types/react"
:
{
"version"
:
"18.2.53"
,
...
...
@@ -2061,6 +2247,70 @@
"node"
:
">=4"
}
},
"node_modules/antd"
:
{
"version"
:
"5.20.0"
,
"resolved"
:
"https://registry.npmjs.org/antd/-/antd-5.20.0.tgz"
,
"integrity"
:
"sha512-wWCFzbry3hov7k8gqhPR+FzD6EkWlhBbGD9mYOSIDoYRGMRqueTh2+2jfU1voHucmwcxDwzU7iwZDU2+PCXZdA=="
,
"dependencies"
:
{
"@ant-design/colors"
:
"^7.1.0"
,
"@ant-design/cssinjs"
:
"^1.21.0"
,
"@ant-design/cssinjs-utils"
:
"^1.0.3"
,
"@ant-design/icons"
:
"^5.4.0"
,
"@ant-design/react-slick"
:
"~1.1.2"
,
"@babel/runtime"
:
"^7.24.8"
,
"@ctrl/tinycolor"
:
"^3.6.1"
,
"@rc-component/color-picker"
:
"~2.0.0"
,
"@rc-component/mutate-observer"
:
"^1.1.0"
,
"@rc-component/qrcode"
:
"~1.0.0"
,
"@rc-component/tour"
:
"~1.15.0"
,
"@rc-component/trigger"
:
"^2.2.0"
,
"classnames"
:
"^2.5.1"
,
"copy-to-clipboard"
:
"^3.3.3"
,
"dayjs"
:
"^1.11.11"
,
"rc-cascader"
:
"~3.27.0"
,
"rc-checkbox"
:
"~3.3.0"
,
"rc-collapse"
:
"~3.7.3"
,
"rc-dialog"
:
"~9.5.2"
,
"rc-drawer"
:
"~7.2.0"
,
"rc-dropdown"
:
"~4.2.0"
,
"rc-field-form"
:
"~2.2.1"
,
"rc-image"
:
"~7.9.0"
,
"rc-input"
:
"~1.6.2"
,
"rc-input-number"
:
"~9.2.0"
,
"rc-mentions"
:
"~2.15.0"
,
"rc-menu"
:
"~9.14.1"
,
"rc-motion"
:
"^2.9.2"
,
"rc-notification"
:
"~5.6.0"
,
"rc-pagination"
:
"~4.2.0"
,
"rc-picker"
:
"~4.6.11"
,
"rc-progress"
:
"~4.0.0"
,
"rc-rate"
:
"~2.13.0"
,
"rc-resize-observer"
:
"^1.4.0"
,
"rc-segmented"
:
"~2.3.0"
,
"rc-select"
:
"~14.15.1"
,
"rc-slider"
:
"~11.1.3"
,
"rc-steps"
:
"~6.0.1"
,
"rc-switch"
:
"~4.1.0"
,
"rc-table"
:
"~7.45.7"
,
"rc-tabs"
:
"~15.1.1"
,
"rc-textarea"
:
"~1.8.1"
,
"rc-tooltip"
:
"~6.2.0"
,
"rc-tree"
:
"~5.8.8"
,
"rc-tree-select"
:
"~5.22.1"
,
"rc-upload"
:
"~4.6.0"
,
"rc-util"
:
"^5.43.0"
,
"scroll-into-view-if-needed"
:
"^3.1.0"
,
"throttle-debounce"
:
"^5.0.2"
},
"funding"
:
{
"type"
:
"opencollective"
,
"url"
:
"https://opencollective.com/ant-design"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/argparse"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
,
...
...
@@ -2102,6 +2352,11 @@
"url"
:
"https://github.com/sponsors/ljharb"
}
},
"node_modules/array-tree-filter"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz"
,
"integrity"
:
"sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw=="
},
"node_modules/array-union"
:
{
"version"
:
"2.1.0"
,
"resolved"
:
"https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
,
...
...
@@ -2362,10 +2617,15 @@
"node"
:
">=4"
}
},
"node_modules/classnames"
:
{
"version"
:
"2.5.1"
,
"resolved"
:
"https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz"
,
"integrity"
:
"sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
},
"node_modules/clsx"
:
{
"version"
:
"2.1.
0
"
,
"resolved"
:
"https://registry.npmjs.org/clsx/-/clsx-2.1.
0
.tgz"
,
"integrity"
:
"sha512-
m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg
=="
,
"version"
:
"2.1.
1
"
,
"resolved"
:
"https://registry.npmjs.org/clsx/-/clsx-2.1.
1
.tgz"
,
"integrity"
:
"sha512-
eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA
=="
,
"engines"
:
{
"node"
:
">=6"
}
...
...
@@ -2394,6 +2654,11 @@
"node"
:
">= 0.8"
}
},
"node_modules/compute-scroll-into-view"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz"
,
"integrity"
:
"sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg=="
},
"node_modules/concat-map"
:
{
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
,
...
...
@@ -2406,6 +2671,14 @@
"integrity"
:
"sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
,
"dev"
:
true
},
"node_modules/copy-to-clipboard"
:
{
"version"
:
"3.3.3"
,
"resolved"
:
"https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz"
,
"integrity"
:
"sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA=="
,
"dependencies"
:
{
"toggle-selection"
:
"^1.0.6"
}
},
"node_modules/cosmiconfig"
:
{
"version"
:
"7.1.0"
,
"resolved"
:
"https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz"
,
...
...
@@ -2440,6 +2713,11 @@
"resolved"
:
"https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
,
"integrity"
:
"sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/dayjs"
:
{
"version"
:
"1.11.12"
,
"resolved"
:
"https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz"
,
"integrity"
:
"sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg=="
},
"node_modules/debug"
:
{
"version"
:
"4.3.4"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
,
...
...
@@ -4063,6 +4341,14 @@
"integrity"
:
"sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
,
"dev"
:
true
},
"node_modules/json2mq"
:
{
"version"
:
"0.2.0"
,
"resolved"
:
"https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz"
,
"integrity"
:
"sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA=="
,
"dependencies"
:
{
"string-convert"
:
"^0.2.0"
}
},
"node_modules/json5"
:
{
"version"
:
"2.2.3"
,
"resolved"
:
"https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
,
...
...
@@ -4622,6 +4908,583 @@
}
]
},
"node_modules/rc-cascader"
:
{
"version"
:
"3.27.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.27.0.tgz"
,
"integrity"
:
"sha512-z5uq8VvQadFUBiuZJ7YF5UAUGNkZtdEtcEYiIA94N/Kc2MIKr6lEbN5HyVddvYSgwWlKqnL6pH5bFXFuIK3MNg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.12.5"
,
"array-tree-filter"
:
"^2.1.0"
,
"classnames"
:
"^2.3.1"
,
"rc-select"
:
"~14.15.0"
,
"rc-tree"
:
"~5.8.1"
,
"rc-util"
:
"^5.37.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-checkbox"
:
{
"version"
:
"3.3.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.3.0.tgz"
,
"integrity"
:
"sha512-Ih3ZaAcoAiFKJjifzwsGiT/f/quIkxJoklW4yKGho14Olulwn8gN7hOBve0/WGDg5o/l/5mL0w7ff7/YGvefVw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"^2.3.2"
,
"rc-util"
:
"^5.25.2"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-collapse"
:
{
"version"
:
"3.7.3"
,
"resolved"
:
"https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.7.3.tgz"
,
"integrity"
:
"sha512-60FJcdTRn0X5sELF18TANwtVi7FtModq649H11mYF1jh83DniMoM4MqY627sEKRCTm4+WXfGDcB7hY5oW6xhyw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"2.x"
,
"rc-motion"
:
"^2.3.4"
,
"rc-util"
:
"^5.27.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-dialog"
:
{
"version"
:
"9.5.2"
,
"resolved"
:
"https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.5.2.tgz"
,
"integrity"
:
"sha512-qVUjc8JukG+j/pNaHVSRa2GO2/KbV2thm7yO4hepQ902eGdYK913sGkwg/fh9yhKYV1ql3BKIN2xnud3rEXAPw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"@rc-component/portal"
:
"^1.0.0-8"
,
"classnames"
:
"^2.2.6"
,
"rc-motion"
:
"^2.3.0"
,
"rc-util"
:
"^5.21.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-drawer"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz"
,
"integrity"
:
"sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.23.9"
,
"@rc-component/portal"
:
"^1.1.1"
,
"classnames"
:
"^2.2.6"
,
"rc-motion"
:
"^2.6.1"
,
"rc-util"
:
"^5.38.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-dropdown"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.0.tgz"
,
"integrity"
:
"sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.3"
,
"@rc-component/trigger"
:
"^2.0.0"
,
"classnames"
:
"^2.2.6"
,
"rc-util"
:
"^5.17.0"
},
"peerDependencies"
:
{
"react"
:
">=16.11.0"
,
"react-dom"
:
">=16.11.0"
}
},
"node_modules/rc-field-form"
:
{
"version"
:
"2.2.1"
,
"resolved"
:
"https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.2.1.tgz"
,
"integrity"
:
"sha512-uoNqDoR7A4tn4QTSqoWPAzrR7ZwOK5I+vuZ/qdcHtbKx+ZjEsTg7QXm2wk/jalDiSksAQmATxL0T5LJkRREdIA=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.0"
,
"@rc-component/async-validator"
:
"^5.0.3"
,
"rc-util"
:
"^5.32.2"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-image"
:
{
"version"
:
"7.9.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-image/-/rc-image-7.9.0.tgz"
,
"integrity"
:
"sha512-l4zqO5E0quuLMCtdKfBgj4Suv8tIS011F5k1zBBlK25iMjjiNHxA0VeTzGFtUZERSA45gvpXDg8/P6qNLjR25g=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.2"
,
"@rc-component/portal"
:
"^1.0.2"
,
"classnames"
:
"^2.2.6"
,
"rc-dialog"
:
"~9.5.2"
,
"rc-motion"
:
"^2.6.2"
,
"rc-util"
:
"^5.34.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-input"
:
{
"version"
:
"1.6.3"
,
"resolved"
:
"https://registry.npmjs.org/rc-input/-/rc-input-1.6.3.tgz"
,
"integrity"
:
"sha512-wI4NzuqBS8vvKr8cljsvnTUqItMfG1QbJoxovCgL+DX4eVUcHIjVwharwevIxyy7H/jbLryh+K7ysnJr23aWIA=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.1"
,
"classnames"
:
"^2.2.1"
,
"rc-util"
:
"^5.18.1"
},
"peerDependencies"
:
{
"react"
:
">=16.0.0"
,
"react-dom"
:
">=16.0.0"
}
},
"node_modules/rc-input-number"
:
{
"version"
:
"9.2.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.2.0.tgz"
,
"integrity"
:
"sha512-5XZFhBCV5f9UQ62AZ2hFbEY8iZT/dm23Q1kAg0H8EvOgD3UDbYYJAayoVIkM3lQaCqYAW5gV0yV3vjw1XtzWHg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"@rc-component/mini-decimal"
:
"^1.0.1"
,
"classnames"
:
"^2.2.5"
,
"rc-input"
:
"~1.6.0"
,
"rc-util"
:
"^5.40.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-mentions"
:
{
"version"
:
"2.15.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.15.0.tgz"
,
"integrity"
:
"sha512-f5v5i7VdqvBDXbphoqcQWmXDif2Msd2arritVoWybrVDuHE6nQ7XCYsybHbV//WylooK52BFDouFvyaRDtXZEw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.22.5"
,
"@rc-component/trigger"
:
"^2.0.0"
,
"classnames"
:
"^2.2.6"
,
"rc-input"
:
"~1.6.0"
,
"rc-menu"
:
"~9.14.0"
,
"rc-textarea"
:
"~1.8.0"
,
"rc-util"
:
"^5.34.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-menu"
:
{
"version"
:
"9.14.1"
,
"resolved"
:
"https://registry.npmjs.org/rc-menu/-/rc-menu-9.14.1.tgz"
,
"integrity"
:
"sha512-5wlRb3M8S4yGlWhSoEYJ7ZVRElyScdcpUHxgiLxkeig1tEdyKrnED3B2fhpN0Rrpdp9jyhnmZR/Lwq2fH5VvDQ=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"@rc-component/trigger"
:
"^2.0.0"
,
"classnames"
:
"2.x"
,
"rc-motion"
:
"^2.4.3"
,
"rc-overflow"
:
"^1.3.1"
,
"rc-util"
:
"^5.27.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-motion"
:
{
"version"
:
"2.9.2"
,
"resolved"
:
"https://registry.npmjs.org/rc-motion/-/rc-motion-2.9.2.tgz"
,
"integrity"
:
"sha512-fUAhHKLDdkAXIDLH0GYwof3raS58dtNUmzLF2MeiR8o6n4thNpSDQhOqQzWE4WfFZDCi9VEN8n7tiB7czREcyw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.1"
,
"classnames"
:
"^2.2.1"
,
"rc-util"
:
"^5.43.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-notification"
:
{
"version"
:
"5.6.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.0.tgz"
,
"integrity"
:
"sha512-TGQW5T7waOxLwgJG7fXcw8l7AQiFOjaZ7ISF5PrU526nunHRNcTMuzKihQHaF4E/h/KfOCDk3Mv8eqzbu2e28w=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"2.x"
,
"rc-motion"
:
"^2.9.0"
,
"rc-util"
:
"^5.20.1"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-overflow"
:
{
"version"
:
"1.3.2"
,
"resolved"
:
"https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.2.tgz"
,
"integrity"
:
"sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.1"
,
"classnames"
:
"^2.2.1"
,
"rc-resize-observer"
:
"^1.0.0"
,
"rc-util"
:
"^5.37.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-pagination"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.2.0.tgz"
,
"integrity"
:
"sha512-V6qeANJsT6tmOcZ4XiUmj8JXjRLbkusuufpuoBw2GiAn94fIixYjFLmbruD1Sbhn8fPLDnWawPp4CN37zQorvw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"^2.3.2"
,
"rc-util"
:
"^5.38.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-picker"
:
{
"version"
:
"4.6.12"
,
"resolved"
:
"https://registry.npmjs.org/rc-picker/-/rc-picker-4.6.12.tgz"
,
"integrity"
:
"sha512-wZhBf/L1JV/yCnhuVol42nBpZqxV+Nam1/tnsYm5ZWq0QvMLtX1lQEWceu3FyBESzOPEBIAZixiCnISHcbHsgw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.24.7"
,
"@rc-component/trigger"
:
"^2.0.0"
,
"classnames"
:
"^2.2.1"
,
"rc-overflow"
:
"^1.3.2"
,
"rc-resize-observer"
:
"^1.4.0"
,
"rc-util"
:
"^5.43.0"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"date-fns"
:
">= 2.x"
,
"dayjs"
:
">= 1.x"
,
"luxon"
:
">= 3.x"
,
"moment"
:
">= 2.x"
,
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
},
"peerDependenciesMeta"
:
{
"date-fns"
:
{
"optional"
:
true
},
"dayjs"
:
{
"optional"
:
true
},
"luxon"
:
{
"optional"
:
true
},
"moment"
:
{
"optional"
:
true
}
}
},
"node_modules/rc-progress"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz"
,
"integrity"
:
"sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"^2.2.6"
,
"rc-util"
:
"^5.16.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-rate"
:
{
"version"
:
"2.13.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-rate/-/rc-rate-2.13.0.tgz"
,
"integrity"
:
"sha512-oxvx1Q5k5wD30sjN5tqAyWTvJfLNNJn7Oq3IeS4HxWfAiC4BOXMITNAsw7u/fzdtO4MS8Ki8uRLOzcnEuoQiAw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"^2.2.5"
,
"rc-util"
:
"^5.0.1"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-resize-observer"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz"
,
"integrity"
:
"sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.20.7"
,
"classnames"
:
"^2.2.1"
,
"rc-util"
:
"^5.38.0"
,
"resize-observer-polyfill"
:
"^1.5.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-segmented"
:
{
"version"
:
"2.3.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.3.0.tgz"
,
"integrity"
:
"sha512-I3FtM5Smua/ESXutFfb8gJ8ZPcvFR+qUgeeGFQHBOvRiRKyAk4aBE5nfqrxXx+h8/vn60DQjOt6i4RNtrbOobg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.1"
,
"classnames"
:
"^2.2.1"
,
"rc-motion"
:
"^2.4.4"
,
"rc-util"
:
"^5.17.0"
},
"peerDependencies"
:
{
"react"
:
">=16.0.0"
,
"react-dom"
:
">=16.0.0"
}
},
"node_modules/rc-select"
:
{
"version"
:
"14.15.1"
,
"resolved"
:
"https://registry.npmjs.org/rc-select/-/rc-select-14.15.1.tgz"
,
"integrity"
:
"sha512-mGvuwW1RMm1NCSI8ZUoRoLRK51R2Nb+QJnmiAvbDRcjh2//ulCkxeV6ZRFTECPpE1t2DPfyqZMPw90SVJzQ7wQ=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"@rc-component/trigger"
:
"^2.1.1"
,
"classnames"
:
"2.x"
,
"rc-motion"
:
"^2.0.1"
,
"rc-overflow"
:
"^1.3.1"
,
"rc-util"
:
"^5.16.1"
,
"rc-virtual-list"
:
"^3.5.2"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
"*"
,
"react-dom"
:
"*"
}
},
"node_modules/rc-slider"
:
{
"version"
:
"11.1.5"
,
"resolved"
:
"https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.5.tgz"
,
"integrity"
:
"sha512-b77H5PbjMKsvkYXAYIkn50QuFX6ICQmCTibDinI9q+BHx65/TV4TeU25+oadhSRzykxs0/vBWeKBwRyySOeWlg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"^2.2.5"
,
"rc-util"
:
"^5.36.0"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-steps"
:
{
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz"
,
"integrity"
:
"sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.16.7"
,
"classnames"
:
"^2.2.3"
,
"rc-util"
:
"^5.16.1"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-switch"
:
{
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz"
,
"integrity"
:
"sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.21.0"
,
"classnames"
:
"^2.2.1"
,
"rc-util"
:
"^5.30.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-table"
:
{
"version"
:
"7.45.7"
,
"resolved"
:
"https://registry.npmjs.org/rc-table/-/rc-table-7.45.7.tgz"
,
"integrity"
:
"sha512-wi9LetBL1t1csxyGkMB2p3mCiMt+NDexMlPbXHvQFmBBAsMxrgNSAPwUci2zDLUq9m8QdWc1Nh8suvrpy9mXrg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"@rc-component/context"
:
"^1.4.0"
,
"classnames"
:
"^2.2.5"
,
"rc-resize-observer"
:
"^1.1.0"
,
"rc-util"
:
"^5.37.0"
,
"rc-virtual-list"
:
"^3.14.2"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-tabs"
:
{
"version"
:
"15.1.1"
,
"resolved"
:
"https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.1.1.tgz"
,
"integrity"
:
"sha512-Tc7bJvpEdkWIVCUL7yQrMNBJY3j44NcyWS48jF/UKMXuUlzaXK+Z/pEL5LjGcTadtPvVmNqA40yv7hmr+tCOAw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.2"
,
"classnames"
:
"2.x"
,
"rc-dropdown"
:
"~4.2.0"
,
"rc-menu"
:
"~9.14.0"
,
"rc-motion"
:
"^2.6.2"
,
"rc-resize-observer"
:
"^1.0.0"
,
"rc-util"
:
"^5.34.1"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-textarea"
:
{
"version"
:
"1.8.1"
,
"resolved"
:
"https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.8.1.tgz"
,
"integrity"
:
"sha512-bm36N2ZqwZAP60ZQg2OY9mPdqWC+m6UTjHc+CqEZOxb3Ia29BGHazY/s5bI8M4113CkqTzhtFUDNA078ZiOx3Q=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"^2.2.1"
,
"rc-input"
:
"~1.6.0"
,
"rc-resize-observer"
:
"^1.0.0"
,
"rc-util"
:
"^5.27.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-tooltip"
:
{
"version"
:
"6.2.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.2.0.tgz"
,
"integrity"
:
"sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.11.2"
,
"@rc-component/trigger"
:
"^2.0.0"
,
"classnames"
:
"^2.3.1"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-tree"
:
{
"version"
:
"5.8.8"
,
"resolved"
:
"https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.8.tgz"
,
"integrity"
:
"sha512-S+mCMWo91m5AJqjz3PdzKilGgbFm7fFJRFiTDOcoRbD7UfMOPnerXwMworiga0O2XIo383UoWuEfeHs1WOltag=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"2.x"
,
"rc-motion"
:
"^2.0.1"
,
"rc-util"
:
"^5.16.1"
,
"rc-virtual-list"
:
"^3.5.1"
},
"engines"
:
{
"node"
:
">=10.x"
},
"peerDependencies"
:
{
"react"
:
"*"
,
"react-dom"
:
"*"
}
},
"node_modules/rc-tree-select"
:
{
"version"
:
"5.22.1"
,
"resolved"
:
"https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.22.1.tgz"
,
"integrity"
:
"sha512-b8mAK52xEpRgS+b2PTapCt29GoIrO5cO8jB7AfHttFsIJfcnynY9FCtnYzURsKXJkGHbFY6UzSEB2I3TETtdWg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.10.1"
,
"classnames"
:
"2.x"
,
"rc-select"
:
"~14.15.0"
,
"rc-tree"
:
"~5.8.1"
,
"rc-util"
:
"^5.16.1"
},
"peerDependencies"
:
{
"react"
:
"*"
,
"react-dom"
:
"*"
}
},
"node_modules/rc-upload"
:
{
"version"
:
"4.6.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-upload/-/rc-upload-4.6.0.tgz"
,
"integrity"
:
"sha512-Zr0DT1NHw/ApxrP7UAoxOtGaVYuzarrrCVr0ld7RiEFsKX07uFhE1EpCBxwL11ruFn89GMcshOKWp+s6FLyAlA=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.3"
,
"classnames"
:
"^2.2.5"
,
"rc-util"
:
"^5.2.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-util"
:
{
"version"
:
"5.43.0"
,
"resolved"
:
"https://registry.npmjs.org/rc-util/-/rc-util-5.43.0.tgz"
,
"integrity"
:
"sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.18.3"
,
"react-is"
:
"^18.2.0"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/rc-util/node_modules/react-is"
:
{
"version"
:
"18.3.1"
,
"resolved"
:
"https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz"
,
"integrity"
:
"sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
},
"node_modules/rc-virtual-list"
:
{
"version"
:
"3.14.5"
,
"resolved"
:
"https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.14.5.tgz"
,
"integrity"
:
"sha512-ZMOnkCLv2wUN8Jz7yI4XiSLa9THlYvf00LuMhb1JlsQCewuU7ydPuHw1rGVPhe9VZYl/5UqODtNd7QKJ2DMGfg=="
,
"dependencies"
:
{
"@babel/runtime"
:
"^7.20.0"
,
"classnames"
:
"^2.2.6"
,
"rc-resize-observer"
:
"^1.0.0"
,
"rc-util"
:
"^5.36.0"
},
"engines"
:
{
"node"
:
">=8.x"
},
"peerDependencies"
:
{
"react"
:
">=16.9.0"
,
"react-dom"
:
">=16.9.0"
}
},
"node_modules/react"
:
{
"version"
:
"18.2.0"
,
"resolved"
:
"https://registry.npmjs.org/react/-/react-18.2.0.tgz"
,
...
...
@@ -4791,6 +5654,11 @@
"resolved"
:
"https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz"
,
"integrity"
:
"sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg=="
},
"node_modules/resize-observer-polyfill"
:
{
"version"
:
"1.5.1"
,
"resolved"
:
"https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
,
"integrity"
:
"sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
},
"node_modules/resolve"
:
{
"version"
:
"2.0.0-next.5"
,
"resolved"
:
"https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz"
,
...
...
@@ -4939,6 +5807,14 @@
"loose-envify"
:
"^1.1.0"
}
},
"node_modules/scroll-into-view-if-needed"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz"
,
"integrity"
:
"sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ=="
,
"dependencies"
:
{
"compute-scroll-into-view"
:
"^3.0.2"
}
},
"node_modules/semver"
:
{
"version"
:
"7.5.4"
,
"resolved"
:
"https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
,
...
...
@@ -5063,6 +5939,11 @@
"node"
:
">=0.10.0"
}
},
"node_modules/string-convert"
:
{
"version"
:
"0.2.1"
,
"resolved"
:
"https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz"
,
"integrity"
:
"sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A=="
},
"node_modules/string.prototype.matchall"
:
{
"version"
:
"4.0.10"
,
"resolved"
:
"https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz"
,
...
...
@@ -5201,6 +6082,14 @@
"integrity"
:
"sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
,
"dev"
:
true
},
"node_modules/throttle-debounce"
:
{
"version"
:
"5.0.2"
,
"resolved"
:
"https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz"
,
"integrity"
:
"sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A=="
,
"engines"
:
{
"node"
:
">=12.22"
}
},
"node_modules/to-fast-properties"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
,
...
...
@@ -5221,6 +6110,11 @@
"node"
:
">=8.0"
}
},
"node_modules/toggle-selection"
:
{
"version"
:
"1.0.6"
,
"resolved"
:
"https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz"
,
"integrity"
:
"sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
},
"node_modules/ts-api-utils"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz"
,
...
...
client/package.json
View file @
718404e2
...
...
@@ -10,12 +10,13 @@
"preview"
:
"vite preview"
},
"dependencies"
:
{
"@emotion/react"
:
"^11.1
1.4
"
,
"@emotion/styled"
:
"^11.1
1.5
"
,
"@emotion/react"
:
"^11.1
3.0
"
,
"@emotion/styled"
:
"^11.1
3.0
"
,
"@fontsource/roboto"
:
"^5.0.12"
,
"@mui/icons-material"
:
"^5.15.14"
,
"@mui/material"
:
"^5.1
5.14
"
,
"@mui/material"
:
"^5.1
6.7
"
,
"@reduxjs/toolkit"
:
"^2.1.0"
,
"antd"
:
"^5.20.0"
,
"axios"
:
"^1.6.7"
,
"path"
:
"^0.12.7"
,
"react"
:
"^18.2.0"
,
...
...
client/src/App.tsx
View file @
718404e2
import
{
Container
,
CssBaseline
}
from
'@mui/material'
;
import
{
Container
}
from
'@mui/material'
;
import
{
Route
,
Routes
}
from
'react-router-dom'
;
import
{
AppToolbar
}
from
'./components/UI/AppToolbar'
;
import
{
Products
}
from
'./containers/Products'
;
import
{
NewProductForm
}
from
'./containers/NewProductForm'
;
import
{
Auth
}
from
'./containers/Auth'
;
import
{
ProtectedRoute
}
from
'./components/ProtectedRoute'
;
import
{
useAppDispatch
,
useAppSelector
}
from
'./store/hook'
;
import
{
useEffect
}
from
'react'
;
import
{
validateToken
}
from
'./features/usersSlice'
;
function
App
()
{
const
dispatch
=
useAppDispatch
()
const
{
user
}
=
useAppSelector
(
state
=>
state
.
users
)
useEffect
(()
=>
{
dispatch
(
validateToken
())
},
[
dispatch
])
return
(
<>
<
a
href=
""
></
a
>
<
CssBaseline
/>
<
header
>
<
AppToolbar
/>
<
AppToolbar
user=
{
user
}
/>
</
header
>
<
main
>
<
Container
maxWidth=
"xl"
sx=
{
{
mt
:
10
}
}
>
<
Routes
>
<
Route
path=
"/"
element=
{
<
Products
/>
}
/>
<
Route
path=
"/products/new"
element=
{
<
NewProductForm
/>
}
/>
<
Route
path=
"/"
element=
{
<
ProtectedRoute
user=
{
user
}
>
<
Products
/>
</
ProtectedRoute
>
}
/>
<
Route
path=
"/products/new"
element=
{
<
ProtectedRoute
user=
{
user
}
>
<
NewProductForm
/>
</
ProtectedRoute
>
}
/>
<
Route
path=
'/auth'
element=
{
<
Auth
/>
}
/>
</
Routes
>
</
Container
>
</
main
>
...
...
client/src/components/ProtectedRoute.tsx
0 → 100644
View file @
718404e2
import
{
IUserState
}
from
"@/features/usersSlice"
import
{
ReactNode
}
from
"react"
import
{
Navigate
}
from
"react-router-dom"
type
TProps
=
{
user
:
IUserState
|
null
children
:
ReactNode
}
export
const
ProtectedRoute
=
({
user
,
children
}:
TProps
)
=>
{
if
(
!
user
)
return
<
Navigate
to=
{
'/auth'
}
/>
return
children
}
\ No newline at end of file
client/src/components/Register.tsx
0 → 100644
View file @
718404e2
import
{
registerUser
}
from
'@/features/usersSlice'
;
import
{
useAppDispatch
}
from
'@/store/hook'
;
import
{
Button
,
Form
,
FormProps
,
Input
}
from
'antd'
export
type
FieldTypeRegister
=
{
username
:
string
;
displayName
:
string
;
password
:
string
;
}
export
const
Register
=
()
=>
{
const
dispatch
=
useAppDispatch
()
const
onFinish
:
FormProps
<
FieldTypeRegister
>
[
'onFinish'
]
=
(
values
)
=>
{
dispatch
(
registerUser
(
values
))
}
return
(
<
Form
name=
"basic"
labelCol=
{
{
span
:
8
}
}
wrapperCol=
{
{
span
:
16
}
}
style=
{
{
maxWidth
:
600
}
}
initialValues=
{
{
remember
:
true
}
}
onFinish=
{
onFinish
}
autoComplete=
"off"
>
<
Form
.
Item
<
FieldTypeRegister
>
label="Username"
name="username"
rules=
{
[{
required
:
true
,
message
:
'Please input your username!'
}]
}
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
<
FieldTypeRegister
>
label="Nickname"
name="displayName"
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
<
FieldTypeRegister
>
label="Password"
name="password"
rules=
{
[{
required
:
true
,
message
:
'Please input your password!'
}]
}
>
<
Input
.
Password
/>
</
Form
.
Item
>
<
Form
.
Item
wrapperCol=
{
{
offset
:
8
,
span
:
16
}
}
>
<
Button
type=
"primary"
htmlType=
"submit"
>
Submit
</
Button
>
</
Form
.
Item
>
</
Form
>
)
}
\ No newline at end of file
client/src/components/SignIn.tsx
0 → 100644
View file @
718404e2
import
{
signInUser
}
from
'@/features/usersSlice'
;
import
{
useAppDispatch
}
from
'@/store/hook'
;
import
{
Button
,
Form
,
FormProps
,
Input
}
from
'antd'
export
type
FieldTypeSignIn
=
{
username
:
string
;
password
:
string
;
}
export
const
SignIn
=
()
=>
{
const
dispatch
=
useAppDispatch
()
const
onFinish
:
FormProps
<
FieldTypeSignIn
>
[
'onFinish'
]
=
(
values
)
=>
{
dispatch
(
signInUser
(
values
))
}
return
(
<
Form
name=
"basic"
labelCol=
{
{
span
:
8
}
}
wrapperCol=
{
{
span
:
16
}
}
style=
{
{
maxWidth
:
600
}
}
initialValues=
{
{
remember
:
true
}
}
onFinish=
{
onFinish
}
autoComplete=
"off"
>
<
Form
.
Item
<
FieldTypeSignIn
>
label="Username"
name="username"
rules=
{
[{
required
:
true
,
message
:
'Please input your username!'
}]
}
>
<
Input
/>
</
Form
.
Item
>
<
Form
.
Item
<
FieldTypeSignIn
>
label="Password"
name="password"
rules=
{
[{
required
:
true
,
message
:
'Please input your password!'
}]
}
>
<
Input
.
Password
/>
</
Form
.
Item
>
<
Form
.
Item
wrapperCol=
{
{
offset
:
8
,
span
:
16
}
}
>
<
Button
type=
"primary"
htmlType=
"submit"
>
Submit
</
Button
>
</
Form
.
Item
>
</
Form
>
)
}
\ No newline at end of file
client/src/components/UI/AppToolbar.tsx
View file @
718404e2
import
{
IUserState
}
from
'@/features/usersSlice'
;
import
{
AppBar
,
Toolbar
,
Typography
,
styled
}
from
'@mui/material'
;
import
{
Link
}
from
'react-router-dom'
;
...
...
@@ -7,14 +8,17 @@ const StyledLink = styled(Link)(() => ({
[
'&:hover'
]:
{
color
:
'inherit'
},
}));
export
function
AppToolbar
()
{
export
function
AppToolbar
(
{
user
}:
{
user
:
IUserState
|
null
}
)
{
return
(
<>
<
AppBar
position=
"fixed"
>
<
Toolbar
>
<
Toolbar
style=
{
{
display
:
'flex'
,
justifyContent
:
'space-between'
}
}
>
<
Typography
variant=
"h6"
component=
{
StyledLink
}
to=
{
'/'
}
>
Computer parts shop
</
Typography
>
<
Typography
variant=
"h6"
component=
{
StyledLink
}
to=
{
'/'
}
>
{
user
?.
username
}
</
Typography
>
</
Toolbar
>
</
AppBar
>
</>
...
...
client/src/containers/Auth.tsx
0 → 100644
View file @
718404e2
import
{
Register
}
from
"@/components/Register"
;
import
{
SignIn
}
from
"@/components/SignIn"
;
import
{
useAppSelector
}
from
"@/store/hook"
;
import
{
Row
,
Tabs
,
TabsProps
}
from
"antd"
;
import
{
useEffect
}
from
"react"
;
import
{
useNavigate
}
from
"react-router-dom"
;
const
items
:
TabsProps
[
'items'
]
=
[
{
key
:
'1'
,
label
:
'Sign In'
,
children
:
<
SignIn
/>,
},
{
key
:
'2'
,
label
:
'Registration'
,
children
:
<
Register
/>,
},
]
export
const
Auth
=
()
=>
{
const
navigate
=
useNavigate
()
const
{
user
}
=
useAppSelector
(
state
=>
state
.
users
)
useEffect
(()
=>
{
if
(
user
)
navigate
(
'/'
)
},
[
navigate
,
user
])
return
(
<
Row
align=
{
'middle'
}
justify=
{
'center'
}
style=
{
{
height
:
'90vh'
}
}
>
<
Tabs
defaultActiveKey=
"1"
items=
{
items
}
/>
</
Row
>
)
}
\ No newline at end of file
client/src/containers/Products2.tsx
deleted
100644 → 0
View file @
a2e84f82
import
{
Link
}
from
'react-router-dom'
;
import
{
Typography
,
Grid
,
Button
}
from
'@mui/material'
;
export
function
Products
()
{
return
(
<
Grid
container
direction=
"column"
spacing=
{
2
}
>
<
Grid
item
container
direction=
"row"
justifyContent=
"space-between"
alignItems=
"center"
>
<
Grid
item
>
<
Typography
variant=
"h4"
>
Products
</
Typography
>
</
Grid
>
<
Grid
item
>
<
Button
color=
"primary"
component=
{
Link
}
to=
{
'/products/new'
}
>
Add product
</
Button
>
</
Grid
>
</
Grid
>
</
Grid
>
);
}
client/src/features/usersSlice.ts
0 → 100644
View file @
718404e2
import
{
createAsyncThunk
,
createSlice
}
from
"@reduxjs/toolkit"
;
import
{
axiosApiClient
}
from
"../helpers/axiosApiClient"
;
import
{
FieldTypeRegister
}
from
"@/components/Register"
;
import
{
FieldTypeSignIn
}
from
"@/components/SignIn"
;
export
interface
IUserState
{
id
:
string
;
username
:
string
;
displayName
:
string
;
token
:
string
;
}
interface
State
{
user
:
IUserState
|
null
;
error
:
Error
|
null
;
loading
:
boolean
;
}
const
initialState
:
State
=
{
user
:
null
,
error
:
null
,
loading
:
false
}
export
const
registerUser
=
createAsyncThunk
(
'users/register'
,
async
(
body
:
FieldTypeRegister
)
=>
{
try
{
const
{
data
}
=
await
axiosApiClient
.
post
<
IUserState
>
(
'/user/registration'
,
body
)
localStorage
.
setItem
(
'token'
,
data
.
token
)
return
data
}
catch
(
e
)
{
throw
new
Error
((
e
as
Error
).
message
)
}
}
)
export
const
signInUser
=
createAsyncThunk
(
'users/signInUser'
,
async
(
body
:
FieldTypeSignIn
)
=>
{
try
{
const
{
data
}
=
await
axiosApiClient
.
post
<
IUserState
>
(
'/user/signIn'
,
body
)
localStorage
.
setItem
(
'token'
,
data
.
token
)
return
data
}
catch
(
e
)
{
throw
new
Error
((
e
as
Error
).
message
)
}
}
)
export
const
validateToken
=
createAsyncThunk
(
'users/validateToken'
,
async
()
=>
{
try
{
const
{
data
}
=
await
axiosApiClient
.
get
<
IUserState
>
(
'/user/validateToken'
,
{
headers
:
{
Authorization
:
localStorage
.
getItem
(
'token'
)
}
})
console
.
log
(
data
);
return
data
}
catch
(
e
)
{
throw
new
Error
((
e
as
Error
).
message
)
}
}
)
const
usersSlice
=
createSlice
(
{
name
:
'users'
,
initialState
,
reducers
:
{},
extraReducers
(
builder
)
{
builder
// REGISTRATION
.
addCase
(
registerUser
.
fulfilled
,
(
state
,
action
)
=>
{
state
.
user
=
action
.
payload
;
state
.
loading
=
false
;
})
.
addCase
(
registerUser
.
rejected
,
(
state
,
action
)
=>
{
state
.
loading
=
false
;
state
.
error
=
action
.
error
as
Error
;
})
.
addCase
(
registerUser
.
pending
,
(
state
)
=>
{
state
.
loading
=
true
;
})
// SIGN IN
.
addCase
(
signInUser
.
fulfilled
,
(
state
,
action
)
=>
{
state
.
user
=
action
.
payload
;
state
.
loading
=
false
;
})
.
addCase
(
signInUser
.
rejected
,
(
state
,
action
)
=>
{
state
.
loading
=
false
;
state
.
error
=
action
.
error
as
Error
;
})
.
addCase
(
signInUser
.
pending
,
(
state
)
=>
{
state
.
loading
=
true
;
})
// VALIDATE TOKEN
.
addCase
(
validateToken
.
fulfilled
,
(
state
,
action
)
=>
{
state
.
user
=
action
.
payload
;
state
.
loading
=
false
;
})
.
addCase
(
validateToken
.
rejected
,
(
state
,
action
)
=>
{
state
.
loading
=
false
;
state
.
error
=
action
.
error
as
Error
;
})
.
addCase
(
validateToken
.
pending
,
(
state
)
=>
{
state
.
loading
=
true
;
})
},
}
)
export
default
usersSlice
.
reducer
;
client/src/store/index.ts
View file @
718404e2
import
{
configureStore
}
from
'@reduxjs/toolkit'
;
import
productsReducer
from
'../features/productsSlice.ts'
;
import
usersReducer
from
'@/features/usersSlice.ts'
;
const
store
=
configureStore
({
reducer
:
{
products
:
productsReducer
,
users
:
usersReducer
}
})
...
...
server/src/controllers/user.controller.ts
View file @
718404e2
...
...
@@ -27,4 +27,10 @@ export class UserController {
const
user
=
await
this
.
service
.
registration
(
registrationInDto
)
res
.
send
(
user
)
}
validateToken
:
RequestHandler
=
async
(
req
,
res
):
Promise
<
void
>
=>
{
const
token
=
req
.
headers
.
authorization
const
user
=
await
this
.
service
.
validateToken
(
token
||
''
)
res
.
send
(
user
)
}
}
server/src/repositories/user.repository.ts
View file @
718404e2
...
...
@@ -37,6 +37,13 @@ export class UserRepo {
const
userWithoutPass
=
_
.
omit
(
user
,
'password'
)
return
userWithoutPass
}
async
validateToken
(
token
:
string
):
Promise
<
IUser
|
null
>
{
const
user
=
await
this
.
repo
.
findOne
({
where
:
{
token
:
token
}})
if
(
!
user
)
return
null
const
userWithoutPass
=
_
.
omit
(
user
,
'password'
)
return
userWithoutPass
}
}
export
const
userRepo
=
new
UserRepo
()
\ No newline at end of file
server/src/routes/user.route.ts
View file @
718404e2
...
...
@@ -15,5 +15,6 @@ export class UserRoute implements IRoute {
private
init
()
{
this
.
router
.
post
(
'/registration'
,
this
.
controller
.
registration
);
this
.
router
.
post
(
'/signIn'
,
this
.
controller
.
signIn
);
this
.
router
.
get
(
'/validateToken'
,
this
.
controller
.
validateToken
);
}
}
server/src/services/user.service.ts
View file @
718404e2
...
...
@@ -10,4 +10,8 @@ export class UserService {
async
registration
(
registrationUserDto
:
RegistrationUserDto
)
{
return
await
userRepo
.
registration
(
registrationUserDto
)
}
async
validateToken
(
token
:
string
)
{
return
await
userRepo
.
validateToken
(
token
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment