diff --git a/package.json b/package.json
index 9240fca..6992870 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
"eslint": "^8.57.0",
"prettier": "^3.2.5",
"sass": "^1.71.1",
- "typescript": "^5.3.3"
+ "typescript": "^5.4.2"
},
"resolutions": {
"formidable": "^3.2.5"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e2f87a5..de120e4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -21,11 +21,14 @@
specifier: ^1.71.1
version: 1.71.1
typescript:
- specifier: ^5.3.3
- version: 5.3.3
+ specifier: ^5.4.2
+ version: 5.4.2
qwilight-fe:
dependencies:
+ '@tanstack/react-query':
+ specifier: ^5.25.0
+ version: 5.25.0(react@18.2.0)
axios:
specifier: ^1.6.7
version: 1.6.7
@@ -45,8 +48,8 @@
specifier: ^3.21.2
version: 3.21.2
i18next:
- specifier: ^23.10.0
- version: 23.10.0
+ specifier: ^23.10.1
+ version: 23.10.1
mobx:
specifier: ^6.12.0
version: 6.12.0
@@ -66,14 +69,14 @@
specifier: ^18.2.0
version: 18.2.0(react@18.2.0)
react-i18next:
- specifier: ^14.0.5
- version: 14.0.5(i18next@23.10.0)(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^14.1.0
+ version: 14.1.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0)
react-router-dom:
- specifier: ^6.22.2
- version: 6.22.2(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^6.22.3
+ version: 6.22.3(react-dom@18.2.0)(react@18.2.0)
react-scripts:
specifier: ^5.0.1
- version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(typescript@5.3.3)
+ version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.2)
react-spinners:
specifier: ^0.13.8
version: 0.13.8(react-dom@18.2.0)(react@18.2.0)
@@ -87,8 +90,8 @@
specifier: ^1.1.3
version: 1.1.3
sweetalert2:
- specifier: ^11.10.5
- version: 11.10.5
+ specifier: ^11.10.6
+ version: 11.10.6
taehui-ts:
specifier: workspace:^
version: link:../taehui-ts
@@ -103,14 +106,14 @@
specifier: ^29.5.12
version: 29.5.12
'@types/node':
- specifier: ^20.11.24
- version: 20.11.24
+ specifier: ^20.11.25
+ version: 20.11.25
'@types/react':
- specifier: ^18.2.61
- version: 18.2.61
+ specifier: ^18.2.64
+ version: 18.2.64
'@types/react-dom':
- specifier: ^18.2.19
- version: 18.2.19
+ specifier: ^18.2.21
+ version: 18.2.21
'@types/react-router-dom':
specifier: ^5.3.3
version: 5.3.3
@@ -118,8 +121,8 @@
specifier: ^1.1.4
version: 1.1.4
typescript:
- specifier: ^5.3.3
- version: 5.3.3
+ specifier: ^5.4.2
+ version: 5.4.2
taehui-fe:
dependencies:
@@ -139,8 +142,8 @@
specifier: ^3.0.9
version: 3.0.9
i18next:
- specifier: ^23.10.0
- version: 23.10.0
+ specifier: ^23.10.1
+ version: 23.10.1
mobx:
specifier: ^6.12.0
version: 6.12.0
@@ -151,8 +154,8 @@
specifier: ^18.2.0
version: 18.2.0
react-content-loader:
- specifier: ^6.2.1
- version: 6.2.1(react@18.2.0)
+ specifier: ^7.0.0
+ version: 7.0.0(react@18.2.0)
react-contexify:
specifier: ^6.0.0
version: 6.0.0(react-dom@18.2.0)(react@18.2.0)
@@ -160,20 +163,20 @@
specifier: ^18.2.0
version: 18.2.0(react@18.2.0)
react-i18next:
- specifier: ^14.0.5
- version: 14.0.5(i18next@23.10.0)(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^14.1.0
+ version: 14.1.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0)
react-infinite-scroll-component:
specifier: ^6.1.0
version: 6.1.0(react@18.2.0)
react-router-dom:
- specifier: ^6.22.2
- version: 6.22.2(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^6.22.3
+ version: 6.22.3(react-dom@18.2.0)(react@18.2.0)
react-scripts:
specifier: 5.0.1
- version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(typescript@5.3.3)
+ version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.2)
react-textarea-autosize:
specifier: ^8.5.3
- version: 8.5.3(@types/react@18.2.61)(react@18.2.0)
+ version: 8.5.3(@types/react@18.2.64)(react@18.2.0)
react-toastify:
specifier: ^10.0.4
version: 10.0.4(react-dom@18.2.0)(react@18.2.0)
@@ -184,8 +187,8 @@
specifier: ^1.1.3
version: 1.1.3
sweetalert2:
- specifier: ^11.10.5
- version: 11.10.5
+ specifier: ^11.10.6
+ version: 11.10.6
taehui-ts:
specifier: workspace:^
version: link:../taehui-ts
@@ -200,14 +203,14 @@
specifier: ^29.5.12
version: 29.5.12
'@types/node':
- specifier: ^20.11.24
- version: 20.11.24
+ specifier: ^20.11.25
+ version: 20.11.25
'@types/react':
- specifier: ^18.2.61
- version: 18.2.61
+ specifier: ^18.2.64
+ version: 18.2.64
'@types/react-dom':
- specifier: ^18.2.19
- version: 18.2.19
+ specifier: ^18.2.21
+ version: 18.2.21
'@types/showdown':
specifier: ^2.0.6
version: 2.0.6
@@ -218,35 +221,35 @@
specifier: ^2.0.6
version: 2.0.6(@types/express@4.17.17)
typescript:
- specifier: ^5.3.3
- version: 5.3.3
+ specifier: ^5.4.2
+ version: 5.4.2
taehui-ts:
devDependencies:
'@rollup/plugin-typescript':
specifier: ^11.1.6
- version: 11.1.6(rollup@4.12.0)(tslib@2.6.2)(typescript@5.3.3)
+ version: 11.1.6(rollup@4.12.1)(tslib@2.6.2)(typescript@5.4.2)
'@types/qs':
specifier: ^6.9.12
version: 6.9.12
'@types/react':
- specifier: ^18.2.61
- version: 18.2.61
+ specifier: ^18.2.64
+ version: 18.2.64
dayjs:
specifier: ^1.11.10
version: 1.11.10
qs:
- specifier: ^6.11.2
- version: 6.11.2
+ specifier: ^6.12.0
+ version: 6.12.0
react:
specifier: ^18.2.0
version: 18.2.0
react-router-dom:
- specifier: ^6.22.2
- version: 6.22.2(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^6.22.3
+ version: 6.22.3(react-dom@18.2.0)(react@18.2.0)
rollup:
- specifier: ^4.12.0
- version: 4.12.0
+ specifier: ^4.12.1
+ version: 4.12.1
tslib:
specifier: ^2.6.2
version: 2.6.2
@@ -284,11 +287,11 @@
specifier: ^9.0.1
version: 9.0.1
winston:
- specifier: ^3.11.0
- version: 3.11.0
+ specifier: ^3.12.0
+ version: 3.12.0
winston-daily-rotate-file:
specifier: ^5.0.0
- version: 5.0.0(winston@3.11.0)
+ version: 5.0.0(winston@3.12.0)
devDependencies:
'@types/koa':
specifier: ^2.15.0
@@ -2307,7 +2310,7 @@
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
jest-message-util: 27.5.1
jest-util: 27.5.1
@@ -2319,7 +2322,7 @@
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
dependencies:
'@jest/types': 28.1.3
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
jest-message-util: 28.1.3
jest-util: 28.1.3
@@ -2340,7 +2343,7 @@
'@jest/test-result': 27.5.1
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.8.1
@@ -2377,7 +2380,7 @@
dependencies:
'@jest/fake-timers': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
jest-mock: 27.5.1
dev: false
@@ -2394,7 +2397,7 @@
dependencies:
'@jest/types': 27.5.1
'@sinonjs/fake-timers': 8.1.0
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
jest-message-util: 27.5.1
jest-mock: 27.5.1
jest-util: 27.5.1
@@ -2423,7 +2426,7 @@
'@jest/test-result': 27.5.1
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -2531,7 +2534,7 @@
dependencies:
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
'@types/yargs': 16.0.5
chalk: 4.1.2
dev: false
@@ -2543,7 +2546,7 @@
'@jest/schemas': 28.1.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
'@types/yargs': 17.0.24
chalk: 4.1.2
dev: false
@@ -2555,7 +2558,7 @@
'@jest/schemas': 29.6.0
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
'@types/yargs': 17.0.24
chalk: 4.1.2
dev: true
@@ -2682,8 +2685,8 @@
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
dev: false
- /@remix-run/router@1.15.2:
- resolution: {integrity: sha512-+Rnav+CaoTE5QJc4Jcwh5toUpnVLKYbpU6Ys0zqbakqbaLQHeglLVHPfxOiQqdNmUy5C2lXz5dwC6tQNX2JW2Q==}
+ /@remix-run/router@1.15.3:
+ resolution: {integrity: sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==}
engines: {node: '>=14.0.0'}
/@rollup/plugin-babel@5.3.1(@babel/core@7.22.9)(rollup@2.79.1):
@@ -2728,7 +2731,7 @@
rollup: 2.79.1
dev: false
- /@rollup/plugin-typescript@11.1.6(rollup@4.12.0)(tslib@2.6.2)(typescript@5.3.3):
+ /@rollup/plugin-typescript@11.1.6(rollup@4.12.1)(tslib@2.6.2)(typescript@5.4.2):
resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -2741,11 +2744,11 @@
tslib:
optional: true
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.12.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.12.1)
resolve: 1.22.2
- rollup: 4.12.0
+ rollup: 4.12.1
tslib: 2.6.2
- typescript: 5.3.3
+ typescript: 5.4.2
dev: true
/@rollup/pluginutils@3.1.0(rollup@2.79.1):
@@ -2760,7 +2763,7 @@
rollup: 2.79.1
dev: false
- /@rollup/pluginutils@5.1.0(rollup@4.12.0):
+ /@rollup/pluginutils@5.1.0(rollup@4.12.1):
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -2772,107 +2775,107 @@
'@types/estree': 1.0.1
estree-walker: 2.0.2
picomatch: 2.3.1
- rollup: 4.12.0
+ rollup: 4.12.1
dev: true
- /@rollup/rollup-android-arm-eabi@4.12.0:
- resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==}
+ /@rollup/rollup-android-arm-eabi@4.12.1:
+ resolution: {integrity: sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-android-arm64@4.12.0:
- resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==}
+ /@rollup/rollup-android-arm64@4.12.1:
+ resolution: {integrity: sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-darwin-arm64@4.12.0:
- resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==}
+ /@rollup/rollup-darwin-arm64@4.12.1:
+ resolution: {integrity: sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-darwin-x64@4.12.0:
- resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==}
+ /@rollup/rollup-darwin-x64@4.12.1:
+ resolution: {integrity: sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm-gnueabihf@4.12.0:
- resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==}
+ /@rollup/rollup-linux-arm-gnueabihf@4.12.1:
+ resolution: {integrity: sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm64-gnu@4.12.0:
- resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==}
+ /@rollup/rollup-linux-arm64-gnu@4.12.1:
+ resolution: {integrity: sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-arm64-musl@4.12.0:
- resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==}
+ /@rollup/rollup-linux-arm64-musl@4.12.1:
+ resolution: {integrity: sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-riscv64-gnu@4.12.0:
- resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==}
+ /@rollup/rollup-linux-riscv64-gnu@4.12.1:
+ resolution: {integrity: sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-x64-gnu@4.12.0:
- resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==}
+ /@rollup/rollup-linux-x64-gnu@4.12.1:
+ resolution: {integrity: sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-linux-x64-musl@4.12.0:
- resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==}
+ /@rollup/rollup-linux-x64-musl@4.12.1:
+ resolution: {integrity: sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-arm64-msvc@4.12.0:
- resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==}
+ /@rollup/rollup-win32-arm64-msvc@4.12.1:
+ resolution: {integrity: sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-ia32-msvc@4.12.0:
- resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==}
+ /@rollup/rollup-win32-ia32-msvc@4.12.1:
+ resolution: {integrity: sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@rollup/rollup-win32-x64-msvc@4.12.0:
- resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==}
+ /@rollup/rollup-win32-x64-msvc@4.12.1:
+ resolution: {integrity: sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==}
cpu: [x64]
os: [win32]
requiresBuild: true
@@ -3047,7 +3050,7 @@
/@types/accepts@1.3.5:
resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/babel__core@7.20.1:
resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==}
@@ -3082,18 +3085,18 @@
resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==}
dependencies:
'@types/connect': 3.4.35
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/bonjour@3.5.10:
resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/@types/co-body@6.1.0:
resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
'@types/qs': 6.9.12
dev: false
@@ -3101,13 +3104,13 @@
resolution: {integrity: sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==}
dependencies:
'@types/express-serve-static-core': 4.17.35
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/@types/connect@3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/content-disposition@0.5.5:
resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==}
@@ -3118,7 +3121,7 @@
'@types/connect': 3.4.35
'@types/express': 4.17.17
'@types/keygrip': 1.0.2
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/crypto-js@4.2.2:
resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==}
@@ -3158,7 +3161,7 @@
/@types/express-serve-static-core@4.17.35:
resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
'@types/qs': 6.9.12
'@types/range-parser': 1.2.4
'@types/send': 0.17.1
@@ -3174,7 +3177,7 @@
/@types/formidable@2.0.6:
resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/@types/geojson@7946.0.10:
@@ -3184,7 +3187,7 @@
/@types/graceful-fs@4.1.6:
resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/@types/history@4.7.11:
@@ -3204,7 +3207,7 @@
/@types/http-proxy@1.17.11:
resolution: {integrity: sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/istanbul-lib-coverage@2.0.4:
resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
@@ -3258,7 +3261,7 @@
'@types/http-errors': 2.0.1
'@types/keygrip': 1.0.2
'@types/koa-compose': 3.2.5
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/mime@1.3.2:
resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==}
@@ -3270,8 +3273,8 @@
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
dev: false
- /@types/node@20.11.24:
- resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==}
+ /@types/node@20.11.25:
+ resolution: {integrity: sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==}
dependencies:
undici-types: 5.26.5
@@ -3296,17 +3299,17 @@
/@types/range-parser@1.2.4:
resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==}
- /@types/react-dom@18.2.19:
- resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==}
+ /@types/react-dom@18.2.21:
+ resolution: {integrity: sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==}
dependencies:
- '@types/react': 18.2.61
+ '@types/react': 18.2.64
dev: true
/@types/react-router-dom@5.3.3:
resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
dependencies:
'@types/history': 4.7.11
- '@types/react': 18.2.61
+ '@types/react': 18.2.64
'@types/react-router': 5.1.20
dev: true
@@ -3314,11 +3317,11 @@
resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==}
dependencies:
'@types/history': 4.7.11
- '@types/react': 18.2.61
+ '@types/react': 18.2.64
dev: true
- /@types/react@18.2.61:
- resolution: {integrity: sha512-NURTN0qNnJa7O/k4XUkEW2yfygA+NxS0V5h1+kp9jPwhzZy95q3ADoGMP0+JypMhrZBTTgjKAUlTctde1zzeQA==}
+ /@types/react@18.2.64:
+ resolution: {integrity: sha512-MlmPvHgjj2p3vZaxbQgFUQFvD8QiZwACfGqEdDSWou5yISWxDQ4/74nCAwsUiX7UFLKZz3BbVSPj+YxeoGGCfg==}
dependencies:
'@types/prop-types': 15.7.5
'@types/scheduler': 0.16.3
@@ -3327,7 +3330,7 @@
/@types/resolve@1.17.1:
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/@types/retry@0.12.0:
@@ -3345,7 +3348,7 @@
resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==}
dependencies:
'@types/mime': 1.3.2
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/serve-index@1.9.1:
resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==}
@@ -3358,7 +3361,7 @@
dependencies:
'@types/http-errors': 2.0.1
'@types/mime': 3.0.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
/@types/showdown@2.0.6:
resolution: {integrity: sha512-pTvD/0CIeqe4x23+YJWlX2gArHa8G0J0Oh6GKaVXV7TAeickpkkZiNOgFcFcmLQ5lB/K0qBJL1FtRYltBfbGCQ==}
@@ -3367,7 +3370,7 @@
/@types/sockjs@0.3.33:
resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/@types/sprintf-js@1.1.4:
@@ -3391,7 +3394,7 @@
/@types/ws@8.5.5:
resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/@types/yargs-parser@21.0.0:
@@ -3408,7 +3411,7 @@
dependencies:
'@types/yargs-parser': 21.0.0
- /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.3.3):
+ /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2):
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3420,36 +3423,36 @@
optional: true
dependencies:
'@eslint-community/regexpp': 4.6.2
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
'@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.2.4
natural-compare-lite: 1.4.0
semver: 7.5.4
- tsutils: 3.21.0(typescript@5.3.3)
- typescript: 5.3.3
+ tsutils: 3.21.0(typescript@5.4.2)
+ typescript: 5.4.2
transitivePeerDependencies:
- supports-color
dev: false
- /@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.3.3):
+ /@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.0)(typescript@5.4.2):
resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
eslint: 8.57.0
transitivePeerDependencies:
- supports-color
- typescript
dev: false
- /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.3.3):
+ /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.2):
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3461,10 +3464,10 @@
dependencies:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.57.0
- typescript: 5.3.3
+ typescript: 5.4.2
transitivePeerDependencies:
- supports-color
dev: false
@@ -3477,7 +3480,7 @@
'@typescript-eslint/visitor-keys': 5.62.0
dev: false
- /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.3.3):
+ /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.2):
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3487,12 +3490,12 @@
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
debug: 4.3.4(supports-color@5.5.0)
eslint: 8.57.0
- tsutils: 3.21.0(typescript@5.3.3)
- typescript: 5.3.3
+ tsutils: 3.21.0(typescript@5.4.2)
+ typescript: 5.4.2
transitivePeerDependencies:
- supports-color
dev: false
@@ -3502,7 +3505,7 @@
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: false
- /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3):
+ /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.2):
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3517,13 +3520,13 @@
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
- tsutils: 3.21.0(typescript@5.3.3)
- typescript: 5.3.3
+ tsutils: 3.21.0(typescript@5.4.2)
+ typescript: 5.4.2
transitivePeerDependencies:
- supports-color
dev: false
- /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.3.3):
+ /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.2):
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -3534,7 +3537,7 @@
'@types/semver': 7.5.0
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2)
eslint: 8.57.0
eslint-scope: 5.1.1
semver: 7.5.4
@@ -4314,6 +4317,17 @@
dependencies:
function-bind: 1.1.1
get-intrinsic: 1.2.1
+ dev: false
+
+ /call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.1
/callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
@@ -4464,7 +4478,7 @@
resolution: {integrity: sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==}
dependencies:
inflation: 2.0.0
- qs: 6.11.2
+ qs: 6.12.0
raw-body: 2.5.2
type-is: 1.6.18
dev: false
@@ -5027,6 +5041,14 @@
execa: 5.1.1
dev: false
+ /define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+
/define-lazy-prop@2.0.0:
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
engines: {node: '>=8'}
@@ -5387,6 +5409,16 @@
resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==}
dev: false
+ /es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.4
+
+ /es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
/es-module-lexer@1.3.0:
resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==}
dev: false
@@ -5478,7 +5510,7 @@
source-map: 0.6.1
dev: false
- /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(jest@27.5.1)(typescript@5.3.3):
+ /eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(jest@27.5.1)(typescript@5.4.2):
resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@@ -5491,19 +5523,19 @@
'@babel/core': 7.22.9
'@babel/eslint-parser': 7.22.9(@babel/core@7.22.9)(eslint@8.57.0)
'@rushstack/eslint-patch': 1.3.2
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.3.3)
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
babel-preset-react-app: 10.0.1
confusing-browser-globals: 1.0.11
eslint: 8.57.0
eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)
- eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@27.5.1)(typescript@5.3.3)
+ eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@27.5.1)(typescript@5.4.2)
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.57.0)
eslint-plugin-react: 7.32.2(eslint@8.57.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0)
- eslint-plugin-testing-library: 5.11.0(eslint@8.57.0)(typescript@5.3.3)
- typescript: 5.3.3
+ eslint-plugin-testing-library: 5.11.0(eslint@8.57.0)(typescript@5.4.2)
+ typescript: 5.4.2
transitivePeerDependencies:
- '@babel/plugin-syntax-flow'
- '@babel/plugin-transform-react-jsx'
@@ -5544,7 +5576,7 @@
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
debug: 3.2.7
eslint: 8.57.0
eslint-import-resolver-node: 0.3.7
@@ -5577,7 +5609,7 @@
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
array-includes: 3.1.6
array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1
@@ -5600,7 +5632,7 @@
- supports-color
dev: false
- /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@27.5.1)(typescript@5.3.3):
+ /eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@27.5.1)(typescript@5.4.2):
resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
peerDependencies:
@@ -5613,8 +5645,8 @@
jest:
optional: true
dependencies:
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.3.3)
- '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2)
+ '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
eslint: 8.57.0
jest: 27.5.1
transitivePeerDependencies:
@@ -5680,13 +5712,13 @@
string.prototype.matchall: 4.0.8
dev: false
- /eslint-plugin-testing-library@5.11.0(eslint@8.57.0)(typescript@5.3.3):
+ /eslint-plugin-testing-library@5.11.0(eslint@8.57.0)(typescript@5.4.2):
resolution: {integrity: sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
peerDependencies:
eslint: ^7.5.0 || ^8.0.0
dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.3.3)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2)
eslint: 8.57.0
transitivePeerDependencies:
- supports-color
@@ -5874,7 +5906,7 @@
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/expect-utils': 29.6.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
jest-get-type: 29.4.3
jest-matcher-utils: 29.6.1
jest-message-util: 29.6.1
@@ -6077,7 +6109,7 @@
is-callable: 1.2.7
dev: false
- /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.3.3)(webpack@5.88.1):
+ /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.4.2)(webpack@5.88.1):
resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==}
engines: {node: '>=10', yarn: '>=1.0.0'}
peerDependencies:
@@ -6105,7 +6137,7 @@
schema-utils: 2.7.0
semver: 7.5.4
tapable: 1.1.3
- typescript: 5.3.3
+ typescript: 5.4.2
webpack: 5.88.1
dev: false
@@ -6185,6 +6217,9 @@
/function-bind@1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
/function.prototype.name@1.1.5:
resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
engines: {node: '>= 0.4'}
@@ -6215,6 +6250,17 @@
has: 1.0.3
has-proto: 1.0.1
has-symbols: 1.0.3
+ dev: false
+
+ /get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.1
+ has-symbols: 1.0.3
+ hasown: 2.0.1
/get-own-enumerable-property-symbols@3.0.2:
resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
@@ -6328,8 +6374,7 @@
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
- get-intrinsic: 1.2.1
- dev: false
+ get-intrinsic: 1.2.4
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
@@ -6370,6 +6415,11 @@
get-intrinsic: 1.2.1
dev: false
+ /has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ dependencies:
+ es-define-property: 1.0.0
+
/has-proto@1.0.1:
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
engines: {node: '>= 0.4'}
@@ -6391,6 +6441,12 @@
dependencies:
function-bind: 1.1.1
+ /hasown@2.0.1:
+ resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ function-bind: 1.1.2
+
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
@@ -6589,8 +6645,8 @@
engines: {node: '>=10.17.0'}
dev: false
- /i18next@23.10.0:
- resolution: {integrity: sha512-/TgHOqsa7/9abUKJjdPeydoyDc0oTi/7u9F8lMSj6ufg4cbC1Oj3f/Jja7zj7WRIhEQKB7Q4eN6y68I9RDxxGQ==}
+ /i18next@23.10.1:
+ resolution: {integrity: sha512-NDiIzFbcs3O9PXpfhkjyf7WdqFn5Vq6mhzhtkXzj51aOcNuPNcTwuYNuXCpHsanZGHlHKL35G7huoFeVic1hng==}
dependencies:
'@babel/runtime': 7.23.9
dev: false
@@ -6982,7 +7038,7 @@
'@jest/environment': 27.5.1
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
co: 4.6.0
dedent: 0.7.0
@@ -7117,7 +7173,7 @@
'@jest/environment': 27.5.1
'@jest/fake-timers': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
jest-mock: 27.5.1
jest-util: 27.5.1
jsdom: 16.7.0
@@ -7135,7 +7191,7 @@
'@jest/environment': 27.5.1
'@jest/fake-timers': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
jest-mock: 27.5.1
jest-util: 27.5.1
dev: false
@@ -7156,7 +7212,7 @@
dependencies:
'@jest/types': 27.5.1
'@types/graceful-fs': 4.1.6
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -7178,7 +7234,7 @@
'@jest/source-map': 27.5.1
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
co: 4.6.0
expect: 27.5.1
@@ -7273,7 +7329,7 @@
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
dev: false
/jest-pnp-resolver@1.2.3(jest-resolve@27.5.1):
@@ -7334,7 +7390,7 @@
'@jest/test-result': 27.5.1
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
emittery: 0.8.1
graceful-fs: 4.2.11
@@ -7391,7 +7447,7 @@
resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
graceful-fs: 4.2.11
dev: false
@@ -7430,7 +7486,7 @@
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
ci-info: 3.8.0
graceful-fs: 4.2.11
@@ -7442,7 +7498,7 @@
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
dependencies:
'@jest/types': 28.1.3
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
ci-info: 3.8.0
graceful-fs: 4.2.11
@@ -7454,7 +7510,7 @@
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
chalk: 4.1.2
ci-info: 3.8.0
graceful-fs: 4.2.11
@@ -7495,7 +7551,7 @@
dependencies:
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
ansi-escapes: 4.3.2
chalk: 4.1.2
jest-util: 27.5.1
@@ -7508,7 +7564,7 @@
dependencies:
'@jest/test-result': 28.1.3
'@jest/types': 28.1.3
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.10.2
@@ -7520,7 +7576,7 @@
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
merge-stream: 2.0.0
supports-color: 7.2.0
dev: false
@@ -7529,7 +7585,7 @@
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
merge-stream: 2.0.0
supports-color: 8.1.1
dev: false
@@ -7538,7 +7594,7 @@
resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==}
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
dependencies:
- '@types/node': 20.11.24
+ '@types/node': 20.11.25
merge-stream: 2.0.0
supports-color: 8.1.1
dev: false
@@ -8237,6 +8293,10 @@
/object-inspect@1.12.3:
resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
+ dev: false
+
+ /object-inspect@1.13.1:
+ resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
/object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
@@ -9403,11 +9463,11 @@
side-channel: 1.0.4
dev: false
- /qs@6.11.2:
- resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==}
+ /qs@6.12.0:
+ resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==}
engines: {node: '>=0.6'}
dependencies:
- side-channel: 1.0.4
+ side-channel: 1.0.6
/querystringify@2.2.0:
resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
@@ -9465,8 +9525,8 @@
whatwg-fetch: 3.6.2
dev: false
- /react-content-loader@6.2.1(react@18.2.0):
- resolution: {integrity: sha512-6ONbFX+Hi3SHuP66JB8CPvJn372pj+qwltJV0J8z/8MFrq98I1cbFdZuhDWeQXu3CFxiiDTXJn7DFxx2ZvrO7g==}
+ /react-content-loader@7.0.0(react@18.2.0):
+ resolution: {integrity: sha512-xaBwpO7eiJyEc4ndym+g6wcruV9W2y3DKqbw4U48QFBsv0IeAVZO+aCUb8GptlDLWM8n5zi2HcFSGlj5r+53Tg==}
engines: {node: '>=10'}
peerDependencies:
react: '>=16.0.0'
@@ -9485,7 +9545,7 @@
react-dom: 18.2.0(react@18.2.0)
dev: false
- /react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.3.3)(webpack@5.88.1):
+ /react-dev-utils@12.0.1(eslint@8.57.0)(typescript@5.4.2)(webpack@5.88.1):
resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==}
engines: {node: '>=14'}
peerDependencies:
@@ -9504,7 +9564,7 @@
escape-string-regexp: 4.0.0
filesize: 8.0.7
find-up: 5.0.0
- fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.3.3)(webpack@5.88.1)
+ fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.4.2)(webpack@5.88.1)
global-modules: 2.0.0
globby: 11.1.0
gzip-size: 6.0.0
@@ -9519,7 +9579,7 @@
shell-quote: 1.8.1
strip-ansi: 6.0.1
text-table: 0.2.0
- typescript: 5.3.3
+ typescript: 5.4.2
webpack: 5.88.1
transitivePeerDependencies:
- eslint
@@ -9555,8 +9615,8 @@
resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
dev: false
- /react-i18next@14.0.5(i18next@23.10.0)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-5+bQSeEtgJrMBABBL5lO7jPdSNAbeAZ+MlFWDw//7FnVacuVu3l9EeWFzBQvZsKy+cihkbThWOAThEdH8YjGEw==}
+ /react-i18next@14.1.0(i18next@23.10.1)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-3KwX6LHpbvGQ+sBEntjV4sYW3Zovjjl3fpoHbUwSgFHf0uRBcbeCBLR5al6ikncI5+W0EFb71QXZmfop+J6NrQ==}
peerDependencies:
i18next: '>= 23.2.3'
react: '>= 16.8.0'
@@ -9570,7 +9630,7 @@
dependencies:
'@babel/runtime': 7.23.9
html-parse-stringify: 3.0.1
- i18next: 23.10.0
+ i18next: 23.10.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
@@ -9614,28 +9674,28 @@
engines: {node: '>=0.10.0'}
dev: false
- /react-router-dom@6.22.2(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-WgqxD2qySEIBPZ3w0sHH+PUAiamDeszls9tzqMPBDA1YYVucTBXLU7+gtRfcSnhe92A3glPnvSxK2dhNoAVOIQ==}
+ /react-router-dom@6.22.3(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: '>=16.8'
react-dom: '>=16.8'
dependencies:
- '@remix-run/router': 1.15.2
+ '@remix-run/router': 1.15.3
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- react-router: 6.22.2(react@18.2.0)
+ react-router: 6.22.3(react@18.2.0)
- /react-router@6.22.2(react@18.2.0):
- resolution: {integrity: sha512-YD3Dzprzpcq+tBMHBS822tCjnWD3iIZbTeSXMY9LPSG541EfoBGyZ3bS25KEnaZjLcmQpw2AVLkFyfgXY8uvcw==}
+ /react-router@6.22.3(react@18.2.0):
+ resolution: {integrity: sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: '>=16.8'
dependencies:
- '@remix-run/router': 1.15.2
+ '@remix-run/router': 1.15.3
react: 18.2.0
- /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(typescript@5.3.3):
+ /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.2):
resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -9663,7 +9723,7 @@
dotenv: 10.0.0
dotenv-expand: 5.1.0
eslint: 8.57.0
- eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(jest@27.5.1)(typescript@5.3.3)
+ eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.57.0)(jest@27.5.1)(typescript@5.4.2)
eslint-webpack-plugin: 3.2.0(eslint@8.57.0)(webpack@5.88.1)
file-loader: 6.2.0(webpack@5.88.1)
fs-extra: 10.1.0
@@ -9681,7 +9741,7 @@
prompts: 2.4.2
react: 18.2.0
react-app-polyfill: 3.0.0
- react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.3.3)(webpack@5.88.1)
+ react-dev-utils: 12.0.1(eslint@8.57.0)(typescript@5.4.2)(webpack@5.88.1)
react-refresh: 0.11.0
resolve: 1.22.2
resolve-url-loader: 4.0.0
@@ -9691,7 +9751,7 @@
style-loader: 3.3.3(webpack@5.88.1)
tailwindcss: 3.3.3
terser-webpack-plugin: 5.3.9(webpack@5.88.1)
- typescript: 5.3.3
+ typescript: 5.4.2
webpack: 5.88.1
webpack-dev-server: 4.15.1(webpack@5.88.1)
webpack-manifest-plugin: 4.1.1(webpack@5.88.1)
@@ -9742,7 +9802,7 @@
react-dom: 18.2.0(react@18.2.0)
dev: false
- /react-textarea-autosize@8.5.3(@types/react@18.2.61)(react@18.2.0):
+ /react-textarea-autosize@8.5.3(@types/react@18.2.64)(react@18.2.0):
resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==}
engines: {node: '>=10'}
peerDependencies:
@@ -9751,7 +9811,7 @@
'@babel/runtime': 7.22.6
react: 18.2.0
use-composed-ref: 1.3.0(react@18.2.0)
- use-latest: 1.2.1(@types/react@18.2.61)(react@18.2.0)
+ use-latest: 1.2.1(@types/react@18.2.64)(react@18.2.0)
transitivePeerDependencies:
- '@types/react'
dev: false
@@ -10019,26 +10079,26 @@
fsevents: 2.3.3
dev: false
- /rollup@4.12.0:
- resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==}
+ /rollup@4.12.1:
+ resolution: {integrity: sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.12.0
- '@rollup/rollup-android-arm64': 4.12.0
- '@rollup/rollup-darwin-arm64': 4.12.0
- '@rollup/rollup-darwin-x64': 4.12.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.12.0
- '@rollup/rollup-linux-arm64-gnu': 4.12.0
- '@rollup/rollup-linux-arm64-musl': 4.12.0
- '@rollup/rollup-linux-riscv64-gnu': 4.12.0
- '@rollup/rollup-linux-x64-gnu': 4.12.0
- '@rollup/rollup-linux-x64-musl': 4.12.0
- '@rollup/rollup-win32-arm64-msvc': 4.12.0
- '@rollup/rollup-win32-ia32-msvc': 4.12.0
- '@rollup/rollup-win32-x64-msvc': 4.12.0
+ '@rollup/rollup-android-arm-eabi': 4.12.1
+ '@rollup/rollup-android-arm64': 4.12.1
+ '@rollup/rollup-darwin-arm64': 4.12.1
+ '@rollup/rollup-darwin-x64': 4.12.1
+ '@rollup/rollup-linux-arm-gnueabihf': 4.12.1
+ '@rollup/rollup-linux-arm64-gnu': 4.12.1
+ '@rollup/rollup-linux-arm64-musl': 4.12.1
+ '@rollup/rollup-linux-riscv64-gnu': 4.12.1
+ '@rollup/rollup-linux-x64-gnu': 4.12.1
+ '@rollup/rollup-linux-x64-musl': 4.12.1
+ '@rollup/rollup-win32-arm64-msvc': 4.12.1
+ '@rollup/rollup-win32-ia32-msvc': 4.12.1
+ '@rollup/rollup-win32-x64-msvc': 4.12.1
fsevents: 2.3.3
dev: true
@@ -10262,6 +10322,17 @@
- supports-color
dev: false
+ /set-function-length@1.2.1:
+ resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+
/setprototypeof@1.1.0:
resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
dev: false
@@ -10289,6 +10360,16 @@
call-bind: 1.0.2
get-intrinsic: 1.2.1
object-inspect: 1.12.3
+ dev: false
+
+ /side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.1
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -10671,8 +10752,8 @@
stable: 0.1.8
dev: false
- /sweetalert2@11.10.5:
- resolution: {integrity: sha512-q9eE3EKhMcpIDU/Xcz7z5lk8axCGkgxwK47gXGrrfncnBJWxHPPHnBVAjfsVXcTt8Yi8U6HNEcBRSu+qGeyFdA==}
+ /sweetalert2@11.10.6:
+ resolution: {integrity: sha512-CINZPLZXZRSZqSOE7H7j1F7X8e8O1kLOiXPmtJn1DYxvXsKBr3d16d90+IcwTTs7dJww20h8r8QIxIwsLGX+6A==}
dev: false
/symbol-tree@3.2.4:
@@ -10909,14 +10990,14 @@
engines: {node: '>=0.6.x'}
dev: false
- /tsutils@3.21.0(typescript@5.3.3):
+ /tsutils@3.21.0(typescript@5.4.2):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
- typescript: 5.3.3
+ typescript: 5.4.2
dev: false
/type-check@0.4.0:
@@ -10996,8 +11077,8 @@
is-typedarray: 1.0.0
dev: false
- /typescript@5.3.3:
- resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
+ /typescript@5.4.2:
+ resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==}
engines: {node: '>=14.17'}
hasBin: true
@@ -11106,7 +11187,7 @@
react: 18.2.0
dev: false
- /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.61)(react@18.2.0):
+ /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.64)(react@18.2.0):
resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==}
peerDependencies:
'@types/react': '*'
@@ -11115,11 +11196,11 @@
'@types/react':
optional: true
dependencies:
- '@types/react': 18.2.61
+ '@types/react': 18.2.64
react: 18.2.0
dev: false
- /use-latest@1.2.1(@types/react@18.2.61)(react@18.2.0):
+ /use-latest@1.2.1(@types/react@18.2.64)(react@18.2.0):
resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==}
peerDependencies:
'@types/react': '*'
@@ -11128,9 +11209,9 @@
'@types/react':
optional: true
dependencies:
- '@types/react': 18.2.61
+ '@types/react': 18.2.64
react: 18.2.0
- use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.61)(react@18.2.0)
+ use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.64)(react@18.2.0)
dev: false
/use-sync-external-store@1.2.0(react@18.2.0):
@@ -11463,7 +11544,7 @@
dependencies:
isexe: 2.0.0
- /winston-daily-rotate-file@5.0.0(winston@3.11.0):
+ /winston-daily-rotate-file@5.0.0(winston@3.12.0):
resolution: {integrity: sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==}
engines: {node: '>=8'}
peerDependencies:
@@ -11472,19 +11553,10 @@
file-stream-rotator: 0.6.1
object-hash: 3.0.0
triple-beam: 1.4.1
- winston: 3.11.0
+ winston: 3.12.0
winston-transport: 4.7.0
dev: false
- /winston-transport@4.5.0:
- resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==}
- engines: {node: '>= 6.4.0'}
- dependencies:
- logform: 2.5.1
- readable-stream: 3.6.2
- triple-beam: 1.4.1
- dev: false
-
/winston-transport@4.7.0:
resolution: {integrity: sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==}
engines: {node: '>= 12.0.0'}
@@ -11494,8 +11566,8 @@
triple-beam: 1.4.1
dev: false
- /winston@3.11.0:
- resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==}
+ /winston@3.12.0:
+ resolution: {integrity: sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==}
engines: {node: '>= 12.0.0'}
dependencies:
'@colors/colors': 1.6.0
@@ -11508,7 +11580,7 @@
safe-stable-stringify: 2.4.3
stack-trace: 0.0.10
triple-beam: 1.4.1
- winston-transport: 4.5.0
+ winston-transport: 4.7.0
dev: false
/workbox-background-sync@6.6.0:
diff --git a/qwilight-fe/package.json b/qwilight-fe/package.json
index 0af120a..15e42d1 100644
--- a/qwilight-fe/package.json
+++ b/qwilight-fe/package.json
@@ -3,39 +3,40 @@
"version": "1.0.0",
"private": true,
"dependencies": {
+ "@tanstack/react-query": "^5.25.0",
"axios": "^1.6.7",
"bootstrap": "^5.3.3",
"chart.js": "^4.4.2",
"crypto-js": "^4.2.0",
"dompurify": "^3.0.9",
"google-protobuf": "^3.21.2",
- "i18next": "^23.10.0",
+ "i18next": "^23.10.1",
"mobx": "^6.12.0",
"mobx-react-lite": "^4.0.5",
"react": "^18.2.0",
"react-contexify": "^6.0.0",
"react-device-detect": "^2.2.3",
"react-dom": "^18.2.0",
- "react-i18next": "^14.0.5",
- "react-router-dom": "^6.22.2",
+ "react-i18next": "^14.1.0",
+ "react-router-dom": "^6.22.3",
"react-scripts": "^5.0.1",
"react-spinners": "^0.13.8",
"react-toastify": "^10.0.4",
"reactstrap": "^9.2.2",
"sprintf-js": "^1.1.3",
- "sweetalert2": "^11.10.5",
+ "sweetalert2": "^11.10.6",
"taehui-ts": "workspace:^"
},
"devDependencies": {
"@types/crypto-js": "^4.2.2",
"@types/dompurify": "^3.0.5",
"@types/jest": "^29.5.12",
- "@types/node": "^20.11.24",
- "@types/react": "^18.2.61",
- "@types/react-dom": "^18.2.19",
+ "@types/node": "^20.11.25",
+ "@types/react": "^18.2.64",
+ "@types/react-dom": "^18.2.21",
"@types/react-router-dom": "^5.3.3",
"@types/sprintf-js": "^1.1.4",
- "typescript": "^5.3.3"
+ "typescript": "^5.4.2"
},
"scripts": {
"start": "react-scripts start",
diff --git a/qwilight-fe/src/Www.ts b/qwilight-fe/src/Www.ts
index 6146375..9831eeb 100644
--- a/qwilight-fe/src/Www.ts
+++ b/qwilight-fe/src/Www.ts
@@ -8,6 +8,10 @@
validateStatus: (status) => status < 500,
});
+export const wwwAXIOSNew = axios.create({
+ baseURL: wwwAPI,
+});
+
wwwAXIOS.interceptors.response.use((value) => {
switch (value.status) {
case 401:
diff --git a/qwilight-fe/src/index.tsx b/qwilight-fe/src/index.tsx
index deaa1b0..0e1fc56 100644
--- a/qwilight-fe/src/index.tsx
+++ b/qwilight-fe/src/index.tsx
@@ -1,6 +1,7 @@
import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import { initReactI18next } from "react-i18next";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import i18n from "i18next";
import { getLanguage } from "taehui-ts/language";
@@ -21,14 +22,18 @@
const language = getLanguage();
await i18n.changeLanguage(language);
+ const queryClient = new QueryClient();
+
const root = document.getElementById("root");
if (root) {
createRoot(root).render(
-
-
-
-
- ,
+
+
+
+
+
+
+ ,
);
}
})();
diff --git a/qwilight-fe/src/note/NoteItem.tsx b/qwilight-fe/src/note/NoteItem.tsx
index 95aaf4d..b8205f0 100644
--- a/qwilight-fe/src/note/NoteItem.tsx
+++ b/qwilight-fe/src/note/NoteItem.tsx
@@ -1,11 +1,9 @@
import { useState } from "react";
-import { runInAction } from "mobx";
import { observer } from "mobx-react-lite";
import { Col, Collapse, ListGroupItem, Row, Spinner } from "reactstrap";
import { sprintf } from "sprintf-js";
import { useTranslation } from "react-i18next";
import { Item, Menu, useContextMenu } from "react-contexify";
-import { getLanguage } from "taehui-ts/language";
import Swal from "sweetalert2";
import w0 from "src/assets/w0.png";
@@ -17,10 +15,10 @@
import w7 from "src/assets/w7.png";
import CommentItems from "src/note/CommentItems";
-import { CommentAPIComment, GetCommentAPI, NoteAPINote } from "src/wwwAPI";
+import { NoteAPINote } from "src/wwwAPI";
import { wwwAXIOS } from "src/Www";
import { formatText, getGenreText } from "src/Utility";
-import { useSiteStore } from "src/Stores";
+import useGetComment from "./useGetComment";
const ws = [w0, w1, w2, "", w4, w5, w6, w7];
@@ -39,47 +37,24 @@
wantAvatarName,
handled,
}: NoteAPINote & { handled?: number }) => {
- const { siteAvatarID } = useSiteStore();
const [isCommentOpened, setCommentOpened] = useState(false);
- const [isLoading, setLoading] = useState(false);
- const [comments, setComments] = useState([]);
- const [commentPlace, setCommentPlace] = useState(-1);
- const [totalComments, setTotalComments] = useState(0);
const { t } = useTranslation();
const { show: viewToilInput } = useContextMenu({
id: `toil-${noteID}`,
});
+ const {
+ data: { comments, commentPlace, totalComments },
+ isFetched: isCommentLoaded,
+ } = useGetComment(noteID, isCommentOpened);
+
return (
{
- if (isCommentOpened) {
- setCommentOpened(false);
- } else {
- setLoading(true);
- const { status, data } = await wwwAXIOS.get(
- "/comment",
- {
- params: {
- noteID,
- avatarID: siteAvatarID,
- language: getLanguage(),
- },
- },
- );
- if (status === 200) {
- runInAction(() => {
- setComments(data.comments);
- setCommentPlace(data.commentPlace);
- setTotalComments(data.totalComments);
- setCommentOpened(true);
- setLoading(false);
- });
- }
- }
+ setCommentOpened((prevState) => !prevState);
}}
onContextMenu={(event) => {
event.preventDefault();
@@ -94,7 +69,9 @@
{levelText}{" "}
{title}{" "}
- {isLoading && }
+ {isCommentOpened && !isCommentLoaded && (
+
+ )}
{fittedText && (
{fittedText}
diff --git a/qwilight-fe/src/note/NoteItems.tsx b/qwilight-fe/src/note/NoteItems.tsx
index 2d11c09..be7a1e7 100644
--- a/qwilight-fe/src/note/NoteItems.tsx
+++ b/qwilight-fe/src/note/NoteItems.tsx
@@ -5,20 +5,52 @@
import { useNoteStore } from "src/Stores";
import NoteItem from "src/note/NoteItem";
import { NoteLoading } from "src/Loading";
+import useGetNote from "./useGetNote";
export default observer(() => {
- const { notes, wantAvatar, viewUnit, isLoading } = useNoteStore();
+ const { wantAvatar, viewUnit } = useNoteStore();
+
+ const {
+ data: { notes },
+ isFetched: isNoteLoaded,
+ } = useGetNote();
const line = useWindowArea().windowLength < 992 ? 1 : 2;
return (
{[...Array(line).keys()].map((i) => {
- if (isLoading) {
+ if (isNoteLoaded) {
return (
-
+ {notes
+ .slice((viewUnit / line) * i, (viewUnit / line) * (i + 1))
+ .map(
+ ({
+ noteID,
+ artist,
+ title,
+ genre,
+ levelText,
+ level,
+ highestCount,
+ totalCount,
+ }) => (
+
+ ),
+ )}
);
@@ -27,33 +59,7 @@
return (
- {notes
- .slice((viewUnit / line) * i, (viewUnit / line) * (i + 1))
- .map(
- ({
- noteID,
- artist,
- title,
- genre,
- levelText,
- level,
- highestCount,
- totalCount,
- }) => (
-
- ),
- )}
+
);
diff --git a/qwilight-fe/src/note/NoteView.tsx b/qwilight-fe/src/note/NoteView.tsx
index 314def5..f1809d6 100644
--- a/qwilight-fe/src/note/NoteView.tsx
+++ b/qwilight-fe/src/note/NoteView.tsx
@@ -3,7 +3,7 @@
import { useTranslation } from "react-i18next";
import { Button, Col, Input, Row } from "reactstrap";
import { sprintf } from "sprintf-js";
-import { useIntParam, useWant } from "taehui-ts/fe-utility";
+import { useWant, useIntParam } from "taehui-ts/fe-utility";
import { useNoteStore } from "src/Stores";
import NoteItems from "src/note/NoteItems";
@@ -11,36 +11,51 @@
import SrcInput from "src/note/SrcInput";
import PositionInput from "src/note/PositionInput";
import { formatText } from "src/Utility";
+import useGetNote from "src/note/useGetNote";
export default observer(() => {
const {
- totalCount,
- highestCount,
+ lastWant,
+ setLastWant,
+ lastSrc,
+ setLastSrc,
+ input,
setInput,
lastPage,
- isLoading,
- getNote,
- input,
- pageUnit,
+ setLastPage,
viewUnit,
} = useNoteStore();
- const { t } = useTranslation();
+ const { want, setWant } = useWant("/qwilight/note");
const { param: page, setParam: setPage } = useIntParam("page", 1);
- const { param: fit } = useIntParam("fit", 0);
const { param: src } = useIntParam("src", 0);
- const { want, setWant } = useWant("/qwilight/note");
+ const { t } = useTranslation();
+
+ const {
+ data: { highestCount, totalCount, noteCount },
+ isFetched: isNoteLoaded,
+ } = useGetNote();
+
+ useEffect(() => {
+ if ((want !== lastWant || src !== lastSrc) && page > 1) {
+ setPage(1);
+ }
+ setLastWant(want);
+ setLastSrc(src);
+ }, [lastSrc, lastWant, page, setLastSrc, setLastWant, setPage, src, want]);
+
+ useEffect(() => {
+ if (isNoteLoaded) {
+ setLastPage(Math.max(1, Math.ceil(noteCount / viewUnit)));
+ }
+ }, [isNoteLoaded, noteCount, setLastPage, viewUnit]);
useEffect(() => {
setInput(want);
}, [setInput, want]);
- useEffect(() => {
- getNote(want, page, fit, src, setPage);
- }, [getNote, fit, src, want, pageUnit, page, viewUnit, setPage]);
-
const onWant = () => {
setWant(input);
};
@@ -98,7 +113,7 @@
)}
- {!isLoading && (
+ {isNoteLoaded && (
diff --git a/qwilight-fe/src/note/setNoteStore.ts b/qwilight-fe/src/note/setNoteStore.ts
index ede8a94..daa1398 100644
--- a/qwilight-fe/src/note/setNoteStore.ts
+++ b/qwilight-fe/src/note/setNoteStore.ts
@@ -1,69 +1,31 @@
-import { runInAction } from "mobx";
-import { getMillis } from "taehui-ts/date";
-
-import { GetNoteAPI, NoteAPINote } from "src/wwwAPI";
-import { wwwAXIOS } from "src/Www";
-
export default function setNoteStore() {
- let lastMillis = getMillis();
- let lastWant = "";
- let lastSrc = 0;
-
return {
- totalCount: 0,
- highestCount: 0,
+ lastWant: "",
+ lastSrc: 0,
wantAvatar: "",
- notes: [] as NoteAPINote[],
input: "",
lastPage: 1,
pageUnit: 10,
viewUnit: 20,
- isLoading: false,
+
+ setLastWant(lastWant: string) {
+ this.lastWant = lastWant;
+ },
+
+ setLastSrc(lastSrc: number) {
+ this.lastSrc = lastSrc;
+ },
setInput(input: string) {
this.input = input;
},
- async getNote(
- want: string,
- page: number,
- fit: number,
- src: number,
- setPage: (page: number) => void,
- ) {
- this.wantAvatar = src === 1 ? want : "";
- if ((want !== lastWant || src !== lastSrc) && page > 1) {
- setPage(1);
- } else {
- const millis = getMillis();
- lastMillis = millis;
- this.isLoading = true;
- const { status, data } = await wwwAXIOS.get("/note", {
- params: {
- fit,
- src,
- want,
- page,
- viewUnit: this.viewUnit,
- },
- });
- if (millis >= lastMillis) {
- if (status === 200) {
- runInAction(() => {
- this.totalCount = data.totalCount;
- this.highestCount = data.highestCount;
- this.lastPage = Math.max(
- 1,
- Math.ceil(data.noteCount / this.viewUnit),
- );
- this.notes = data.notes;
- this.isLoading = false;
- });
- }
- }
- }
- lastWant = want;
- lastSrc = src;
+ setWantAvatar(wantAvatar: string) {
+ this.wantAvatar = wantAvatar;
+ },
+
+ setLastPage(lastPage: number) {
+ this.lastPage = lastPage;
},
};
}
diff --git a/qwilight-fe/src/note/useGetComment.ts b/qwilight-fe/src/note/useGetComment.ts
new file mode 100644
index 0000000..70f195a
--- /dev/null
+++ b/qwilight-fe/src/note/useGetComment.ts
@@ -0,0 +1,35 @@
+import { useQuery } from "@tanstack/react-query";
+import { getLanguage } from "taehui-ts/language";
+
+import { useSiteStore } from "src/Stores";
+import { wwwAXIOSNew } from "src/Www";
+import { GetCommentAPI } from "src/wwwAPI";
+
+export default function useGetComment(
+ noteID: string,
+ isCommentOpened: boolean,
+) {
+ const { siteAvatarID } = useSiteStore();
+
+ const language = getLanguage();
+ return useQuery({
+ enabled: isCommentOpened,
+ queryKey: ["comment", noteID, siteAvatarID, language],
+ queryFn: async () => {
+ const { data } = await wwwAXIOSNew.get("/comment", {
+ params: {
+ noteID,
+ avatarID: siteAvatarID,
+ language,
+ },
+ });
+
+ return data;
+ },
+ initialData: {
+ comments: [],
+ commentPlace: -1,
+ totalComments: 0,
+ },
+ });
+}
diff --git a/qwilight-fe/src/note/useGetNote.ts b/qwilight-fe/src/note/useGetNote.ts
new file mode 100644
index 0000000..922b5ce
--- /dev/null
+++ b/qwilight-fe/src/note/useGetNote.ts
@@ -0,0 +1,45 @@
+import { useQuery } from "@tanstack/react-query";
+import { useIntParam, useWant } from "taehui-ts/fe-utility";
+
+import { wwwAXIOSNew } from "src/Www";
+import { GetNoteAPI } from "src/wwwAPI";
+import { useNoteStore } from "src/Stores";
+import { useLocation } from "react-router-dom";
+
+export default function useGetNote() {
+ const { viewUnit, setWantAvatar } = useNoteStore();
+
+ const { param: page } = useIntParam("page", 1);
+ const { param: fit } = useIntParam("fit", 0);
+ const { param: src } = useIntParam("src", 0);
+
+ const { want } = useWant("/qwilight/note");
+
+ const { pathname } = useLocation();
+
+ return useQuery({
+ enabled: pathname.startsWith("/qwilight/note"),
+ queryKey: ["note", fit, src, want, page, viewUnit],
+ queryFn: async () => {
+ setWantAvatar(src === 1 ? want : "");
+
+ const { data } = await wwwAXIOSNew.get("/note", {
+ params: {
+ fit,
+ src,
+ want,
+ page,
+ viewUnit,
+ },
+ });
+
+ return data;
+ },
+ initialData: {
+ totalCount: 0,
+ highestCount: 0,
+ noteCount: 0,
+ notes: [],
+ },
+ });
+}
diff --git a/qwilight-fe/src/qwilight/QwilightView.tsx b/qwilight-fe/src/qwilight/QwilightView.tsx
index f35db6a..1191cd1 100644
--- a/qwilight-fe/src/qwilight/QwilightView.tsx
+++ b/qwilight-fe/src/qwilight/QwilightView.tsx
@@ -9,9 +9,9 @@
useAvatarStore,
useEtcStore,
useHOFStore,
- useNoteStore,
useSiteStore,
} from "src/Stores";
+import useGetNote from "src/note/useGetNote";
import SignInWindow from "src/site/SignInWindow";
import useSiteComponent from "src/site/useSiteComponent";
import {
@@ -33,7 +33,7 @@
const EtcView = lazy(() => import("src/etc/EtcView"));
export default observer(() => {
- const { isLoading: isNoteLoading } = useNoteStore();
+ const { isFetched: isNoteLoaded } = useGetNote();
const { isLoading: isSiteViewLoading } = useSiteStore();
const { isLoading: isAvatarViewLoading } = useAvatarStore();
const { isLoading: isHOFViewLoading } = useHOFStore();
@@ -54,7 +54,11 @@
: "secondary";
const getColorIfEquals = (isLoading: boolean, route: string) =>
- isLoading ? "warning" : pathname === route ? "primary" : "secondary";
+ isLoading
+ ? "warning"
+ : pathname.startsWith(route)
+ ? "primary"
+ : "secondary";
const onPlatform = () => {
window.open("https://taehui.ddns.net/qwilight/platform");
@@ -77,7 +81,7 @@
diff --git a/qwilight-fe/src/wwwAPI.d.ts b/qwilight-fe/src/wwwAPI.d.ts
index 631c210..ee424c9 100644
--- a/qwilight-fe/src/wwwAPI.d.ts
+++ b/qwilight-fe/src/wwwAPI.d.ts
@@ -8,7 +8,6 @@
highestCount: number;
noteCount: number;
notes: NoteAPINote[];
- viewUnit: number;
};
export type NoteAPINote = {
diff --git a/taehui-fe/package.json b/taehui-fe/package.json
index c5d38f2..8958699 100644
--- a/taehui-fe/package.json
+++ b/taehui-fe/package.json
@@ -8,35 +8,35 @@
"bootstrap": "^5.3.3",
"crypto-js": "^4.2.0",
"dompurify": "^3.0.9",
- "i18next": "^23.10.0",
+ "i18next": "^23.10.1",
"mobx": "^6.12.0",
"mobx-react-lite": "^4.0.5",
"react": "^18.2.0",
- "react-content-loader": "^6.2.1",
+ "react-content-loader": "^7.0.0",
"react-contexify": "^6.0.0",
"react-dom": "^18.2.0",
- "react-i18next": "^14.0.5",
+ "react-i18next": "^14.1.0",
"react-infinite-scroll-component": "^6.1.0",
- "react-router-dom": "^6.22.2",
+ "react-router-dom": "^6.22.3",
"react-scripts": "5.0.1",
"react-textarea-autosize": "^8.5.3",
"react-toastify": "^10.0.4",
"reactstrap": "^9.2.2",
"sprintf-js": "^1.1.3",
- "sweetalert2": "^11.10.5",
+ "sweetalert2": "^11.10.6",
"taehui-ts": "workspace:^"
},
"devDependencies": {
"@types/crypto-js": "^4.2.2",
"@types/dompurify": "^3.0.5",
"@types/jest": "^29.5.12",
- "@types/node": "^20.11.24",
- "@types/react": "^18.2.61",
- "@types/react-dom": "^18.2.19",
+ "@types/node": "^20.11.25",
+ "@types/react": "^18.2.64",
+ "@types/react-dom": "^18.2.21",
"@types/showdown": "^2.0.6",
"@types/sprintf-js": "^1.1.4",
"http-proxy-middleware": "^2.0.6",
- "typescript": "^5.3.3"
+ "typescript": "^5.4.2"
},
"scripts": {
"start": "react-scripts start",
diff --git a/taehui-fe/src/forum/CommentView.tsx b/taehui-fe/src/forum/CommentView.tsx
index ae8b4b9..6880360 100644
--- a/taehui-fe/src/forum/CommentView.tsx
+++ b/taehui-fe/src/forum/CommentView.tsx
@@ -24,7 +24,7 @@
type CommentViewParams = { essayID: string };
const { essayID } = useParams() as CommentViewParams;
- const { data: comments } = useGetComment(essayID);
+ const { data: comment } = useGetComment(essayID);
const commentComponents = useMemo(() => {
const commentComponents: ReactNode[] = [];
@@ -53,12 +53,12 @@
comments.forEach(setCommentComponents(level + 1));
};
- comments.forEach((comment) => {
+ comment.forEach((comment) => {
setCommentComponents(0)(comment);
});
return commentComponents;
- }, [comments]);
+ }, [comment]);
return (
<>
diff --git a/taehui-fe/src/forum/EssayView.tsx b/taehui-fe/src/forum/EssayView.tsx
index e6d926d..79fddb8 100644
--- a/taehui-fe/src/forum/EssayView.tsx
+++ b/taehui-fe/src/forum/EssayView.tsx
@@ -18,8 +18,7 @@
const EssayView = observer(() => {
const { t } = useTranslation();
- const { forumTitle, title, text, setForumTitle, setTitle, setText } =
- useForumStore();
+ const { title, text, setTitle, setText } = useForumStore();
const { taehuiAvatarID, totem, isTaehui } = useAvatarStore();
type EssayViewParams = { forumID: string; essayID: string };
@@ -27,15 +26,14 @@
const to = useTo();
- const { data: essay, isPending: isPendingEssay } = useGetEssay(essayID);
+ const { data: essay, isFetched: isEssayLoaded } = useGetEssay(essayID);
useEffect(() => {
- if (essay) {
- setForumTitle(essay.forumTitle);
+ if (isEssayLoaded) {
setTitle(essay.title);
setText(essay.text);
}
- }, [essay, setForumTitle, setText, setTitle]);
+ }, [essay, isEssayLoaded, setText, setTitle]);
const onWipeEssay = async () => {
if (
@@ -64,7 +62,7 @@
to(`/forum/${forumID}`);
};
- if (isPendingEssay || !essay) {
+ if (!isEssayLoaded) {
return ;
}
@@ -103,7 +101,7 @@
{
const { taehuiLevel } = useAvatarStore();
- const { forumTitle, viewUnit, level, setForumTitle, setLastPage, setLevel } =
- useForumStore();
- const [isLoading, setLoading] = useState(true);
- const [essays, setEssays] = useState([]);
+ const { viewUnit, setLastPage } = useForumStore();
const { t } = useTranslation();
- const { forumID } = useParams<{ forumID: string }>();
+ type ForumViewParams = {
+ forumID: string;
+ };
+ const { forumID } = useParams() as ForumViewParams;
const { param: page } = useIntParam("page", 1);
const to = useTo();
- useEffect(() => {
- (async () => {
- const { data, status } = await wwwAXIOS.get(
- `/forum/${forumID}`,
- {
- params: {
- page,
- viewUnit,
- language: getLanguage(),
- },
- },
- );
- if (status === 200) {
- runInAction(() => {
- setForumTitle(data.title);
- setEssays(data.essays);
- setLastPage(Math.ceil(data.essayCount / viewUnit));
- setLevel(data.level);
- setLoading(false);
- });
- }
- })();
- }, [forumID, page, setForumTitle, setLastPage, setLevel, viewUnit]);
+ const {
+ data: { title, essays, essayCount, level },
+ isFetched: isForumLoaded,
+ } = useGetForum(forumID, page, viewUnit);
- if (isLoading) {
- return ;
- }
+ useEffect(() => {
+ if (isForumLoaded) {
+ setLastPage(Math.ceil(essayCount / viewUnit));
+ }
+ }, [essayCount, isForumLoaded, setLastPage, viewUnit]);
return (
<>
@@ -68,15 +48,19 @@
- {forumTitle}
+ {title}
- {essays.map((essay) => (
-
- ))}
+ {isForumLoaded ? (
+ essays.map((essay) => (
+
+ ))
+ ) : (
+
+ )}
diff --git a/taehui-fe/src/forum/PostEssayView.tsx b/taehui-fe/src/forum/PostEssayView.tsx
index 47d0fa3..29f60df 100644
--- a/taehui-fe/src/forum/PostEssayView.tsx
+++ b/taehui-fe/src/forum/PostEssayView.tsx
@@ -23,20 +23,22 @@
import TextView from "src/forum/TextView";
import AutoEssayTitleView from "src/forum//AutoEssayTitleView";
import { AutoEssayViewLoading } from "src/Loading";
-import useGetAutoEssays from "src/forum/useGetAutoEssays";
-import usePostAutoEssays from "src/forum/usePostAutoEssays";
-import usePutAutoEssays from "src/forum/usePutAutoEssays";
+import useGetAutoEssay from "src/forum/useGetAutoEssay";
+import usePostAutoEssay from "src/forum/usePostAutoEssay";
+import usePutAutoEssay from "src/forum/usePutAutoEssay";
import withTotem from "src/withTotem";
+import useGetForum from "src/forum/useGetForum";
+import { useIntParam } from "taehui-ts/fe-utility";
const PostEssayView = observer(({ mode }: { mode: "w" | "m" }) => {
const {
isTitleTextFilled,
- forumTitle,
title,
text,
setTitle,
setText,
autoEssayID,
+ viewUnit,
} = useForumStore();
const { titleViewHeight, avatarViewHeight } = useTaehuiStore();
const { totem, taehuiAvatarID, taehuiAvatarName } = useAvatarStore();
@@ -55,11 +57,13 @@
const { forumID, essayID } =
useParams() as PostEssayViewParams;
- const { isPending: isPendingAutoEssays, data: autoEssays } =
- useGetAutoEssays(forumID);
+ const { isFetched: isAutoEssayLoaded, data: autoEssay } = useGetAutoEssay(
+ forumID,
+ isAutoEssayOpened,
+ );
- const { mutate: postAutoEssays } = usePostAutoEssays(forumID, title, text);
- const { mutate: putAutoEssays } = usePutAutoEssays(forumID, title, text);
+ const { mutate: postAutoEssay } = usePostAutoEssay(forumID, title, text);
+ const { mutate: putAutoEssay } = usePutAutoEssay(forumID, title, text);
const editView = useRef(null);
const textView = useRef(null);
@@ -69,6 +73,12 @@
const to = useTo();
+ const { param: page } = useIntParam("page", 1);
+
+ const {
+ data: { title: forumTitle },
+ } = useGetForum(forumID, page, viewUnit);
+
const setTag = (tag: string) => {
const { current } = textView;
if (current) {
@@ -128,9 +138,9 @@
const postAutoEssaysID = setInterval(async () => {
if (isTitleTextFilled) {
if (autoEssayID === undefined) {
- postAutoEssays();
+ postAutoEssay();
} else {
- putAutoEssays();
+ putAutoEssay();
}
}
}, 60000);
@@ -138,7 +148,7 @@
return () => {
clearInterval(postAutoEssaysID);
};
- }, [autoEssayID, isTitleTextFilled, postAutoEssays, putAutoEssays]);
+ }, [autoEssayID, isTitleTextFilled, postAutoEssay, putAutoEssay]);
useLayoutEffect(() => {
if (!isEdit) {
@@ -259,17 +269,17 @@
- {isPendingAutoEssays ? (
-
- ) : (
+ {isAutoEssayLoaded ? (
- {autoEssays.map((autoEssay) => (
+ {autoEssay.map((autoEssay) => (
))}
+ ) : (
+
)}
diff --git a/taehui-fe/src/forum/setForumStore.ts b/taehui-fe/src/forum/setForumStore.ts
index a29d10c..9e0aee1 100644
--- a/taehui-fe/src/forum/setForumStore.ts
+++ b/taehui-fe/src/forum/setForumStore.ts
@@ -1,6 +1,5 @@
export default function setForumStore() {
return {
- forumTitle: "",
title: "",
text: "",
autoEssayID: undefined as number | undefined,
@@ -10,10 +9,6 @@
viewUnit: 10,
level: 0,
- setForumTitle(forumTitle: string) {
- this.forumTitle = forumTitle;
- },
-
setTitle(title: string) {
this.title = title;
},
diff --git a/taehui-fe/src/forum/useGetAutoEssay.ts b/taehui-fe/src/forum/useGetAutoEssay.ts
new file mode 100644
index 0000000..ec70592
--- /dev/null
+++ b/taehui-fe/src/forum/useGetAutoEssay.ts
@@ -0,0 +1,30 @@
+import { useQuery } from "@tanstack/react-query";
+import { wwwAXIOSNew } from "src/Www";
+import { GetAutoEssayAPI } from "src/wwwAPI";
+import { getMillis } from "taehui-ts/date";
+import { useAvatarStore } from "src/Stores";
+
+export default function useGetAutoEssay(
+ forumID: string,
+ isAutoEssayOpened: boolean,
+) {
+ const { totem } = useAvatarStore();
+
+ return useQuery({
+ enabled: isAutoEssayOpened,
+ queryKey: ["autoEssay", forumID, totem],
+ queryFn: async () => {
+ const { data } = await wwwAXIOSNew.get(
+ `/autoEssay/${forumID}`,
+ {
+ headers: {
+ millis: getMillis(),
+ totem,
+ },
+ },
+ );
+ return data;
+ },
+ initialData: [],
+ });
+}
diff --git a/taehui-fe/src/forum/useGetAutoEssays.ts b/taehui-fe/src/forum/useGetAutoEssays.ts
deleted file mode 100644
index cbdae63..0000000
--- a/taehui-fe/src/forum/useGetAutoEssays.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { useQuery } from "@tanstack/react-query";
-import { wwwAXIOSNew } from "src/Www";
-import { GetAutoEssayAPI } from "src/wwwAPI";
-import { getMillis } from "taehui-ts/date";
-import { useAvatarStore } from "src/Stores";
-
-export default function useGetAutoEssays(forumID: string) {
- const { totem } = useAvatarStore();
-
- return useQuery({
- queryKey: ["autoEssays", forumID, totem],
- queryFn: async () => {
- const { data } = await wwwAXIOSNew.get(
- `/autoEssay/${forumID}`,
- {
- headers: {
- millis: getMillis(),
- totem,
- },
- },
- );
- return data;
- },
- initialData: [],
- });
-}
diff --git a/taehui-fe/src/forum/useGetEssay.ts b/taehui-fe/src/forum/useGetEssay.ts
index 14e150c..7200345 100644
--- a/taehui-fe/src/forum/useGetEssay.ts
+++ b/taehui-fe/src/forum/useGetEssay.ts
@@ -1,10 +1,20 @@
import { useQuery } from "@tanstack/react-query";
import { wwwAXIOSNew } from "src/Www";
-import { GetEssayAPI } from "src/wwwAPI";
+import { EssayAPIEssay, GetEssayAPI } from "src/wwwAPI";
import { getLanguage } from "taehui-ts/language";
export default function useGetEssay(essayID: string) {
- return useQuery({
+ return useQuery<{
+ forumTitle: string;
+ title: string;
+ text: string;
+ date: string;
+ avatarID: string;
+ avatarName: string;
+ hitCount: number;
+ essayBefore: EssayAPIEssay | undefined;
+ essayLater: EssayAPIEssay | undefined;
+ }>({
queryKey: ["essay", essayID],
queryFn: async () => {
const { data } = await wwwAXIOSNew.get(`/essay/${essayID}`, {
@@ -12,5 +22,16 @@
});
return data;
},
+ initialData: {
+ forumTitle: "",
+ title: "",
+ text: "",
+ date: "",
+ avatarID: "",
+ avatarName: "",
+ hitCount: 0,
+ essayBefore: undefined,
+ essayLater: undefined,
+ },
});
}
diff --git a/taehui-fe/src/forum/useGetForum.ts b/taehui-fe/src/forum/useGetForum.ts
new file mode 100644
index 0000000..58370c7
--- /dev/null
+++ b/taehui-fe/src/forum/useGetForum.ts
@@ -0,0 +1,33 @@
+import { useQuery } from "@tanstack/react-query";
+import { wwwAXIOSNew } from "src/Www";
+import { GetForumAPI } from "src/wwwAPI";
+import { getLanguage } from "taehui-ts/language";
+
+export default function useGetForum(
+ forumID: string,
+ page: number,
+ viewUnit: number,
+) {
+ const language = getLanguage();
+
+ return useQuery({
+ queryKey: ["forum", forumID, page, viewUnit],
+ queryFn: async () => {
+ const { data } = await wwwAXIOSNew.get(`/forum/${forumID}`, {
+ params: {
+ page,
+ viewUnit,
+ language,
+ },
+ });
+ return data;
+ },
+ initialData: {
+ title: "",
+ text: "",
+ essays: [],
+ essayCount: 0,
+ level: 0,
+ },
+ });
+}
diff --git a/taehui-fe/src/forum/usePostAutoEssay.ts b/taehui-fe/src/forum/usePostAutoEssay.ts
new file mode 100644
index 0000000..1f9bd64
--- /dev/null
+++ b/taehui-fe/src/forum/usePostAutoEssay.ts
@@ -0,0 +1,47 @@
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { wwwAXIOSNew } from "src/Www";
+import { getMillis } from "taehui-ts/date";
+import { useAvatarStore, useForumStore } from "src/Stores";
+import { toast } from "react-toastify";
+import { useTranslation } from "react-i18next";
+
+export default function usePostAutoEssay(
+ forumID: string | undefined,
+ title: string,
+ text: string,
+) {
+ const { t } = useTranslation();
+
+ const { setAutoEssayID } = useForumStore();
+
+ const { totem } = useAvatarStore();
+
+ const queryClient = useQueryClient();
+
+ return useMutation({
+ mutationFn: async () => {
+ const {
+ data: { autoEssayID },
+ } = await wwwAXIOSNew.post(
+ `/autoEssay/${forumID}`,
+ {
+ title,
+ text,
+ },
+ {
+ headers: {
+ millis: getMillis(),
+ totem,
+ },
+ },
+ );
+
+ return autoEssayID;
+ },
+ onSuccess: async (data) => {
+ toast.success(t("postedAutoEssay"));
+ setAutoEssayID(data);
+ await queryClient.invalidateQueries({ queryKey: ["autoEssay"] });
+ },
+ });
+}
diff --git a/taehui-fe/src/forum/usePostAutoEssays.ts b/taehui-fe/src/forum/usePostAutoEssays.ts
deleted file mode 100644
index 5ab4327..0000000
--- a/taehui-fe/src/forum/usePostAutoEssays.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { useMutation, useQueryClient } from "@tanstack/react-query";
-import { wwwAXIOSNew } from "src/Www";
-import { getMillis } from "taehui-ts/date";
-import { useAvatarStore, useForumStore } from "src/Stores";
-import { toast } from "react-toastify";
-import { useTranslation } from "react-i18next";
-
-export default function usePostAutoEssays(
- forumID: string | undefined,
- title: string,
- text: string,
-) {
- const { t } = useTranslation();
-
- const { setAutoEssayID } = useForumStore();
-
- const { totem } = useAvatarStore();
-
- const queryClient = useQueryClient();
-
- return useMutation({
- mutationFn: async () => {
- const {
- data: { autoEssayID },
- } = await wwwAXIOSNew.post(
- `/autoEssay/${forumID}`,
- {
- title,
- text,
- },
- {
- headers: {
- millis: getMillis(),
- totem,
- },
- },
- );
-
- return autoEssayID;
- },
- onSuccess: async (data) => {
- toast.success(t("postedAutoEssay"));
- setAutoEssayID(data);
- await queryClient.invalidateQueries({ queryKey: ["autoEssays"] });
- },
- });
-}
diff --git a/taehui-fe/src/forum/usePutAutoEssay.ts b/taehui-fe/src/forum/usePutAutoEssay.ts
new file mode 100644
index 0000000..7ad0091
--- /dev/null
+++ b/taehui-fe/src/forum/usePutAutoEssay.ts
@@ -0,0 +1,42 @@
+import { useMutation, useQueryClient } from "@tanstack/react-query";
+import { wwwAXIOSNew } from "src/Www";
+import { getMillis } from "taehui-ts/date";
+import { useAvatarStore, useForumStore } from "src/Stores";
+import { toast } from "react-toastify";
+import { useTranslation } from "react-i18next";
+
+export default function usePutAutoEssay(
+ forumID: string | undefined,
+ title: string,
+ text: string,
+) {
+ const { t } = useTranslation();
+
+ const { autoEssayID } = useForumStore();
+
+ const { totem } = useAvatarStore();
+
+ const queryClient = useQueryClient();
+
+ return useMutation({
+ mutationFn: async () => {
+ await wwwAXIOSNew.put(
+ `/autoEssay/${autoEssayID}`,
+ {
+ title,
+ text,
+ },
+ {
+ headers: {
+ millis: getMillis(),
+ totem,
+ },
+ },
+ );
+ },
+ onSuccess: async () => {
+ toast.success(t("postedAutoEssay"));
+ await queryClient.invalidateQueries({ queryKey: ["autoEssay"] });
+ },
+ });
+}
diff --git a/taehui-fe/src/forum/usePutAutoEssays.ts b/taehui-fe/src/forum/usePutAutoEssays.ts
deleted file mode 100644
index b86195f..0000000
--- a/taehui-fe/src/forum/usePutAutoEssays.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { useMutation, useQueryClient } from "@tanstack/react-query";
-import { wwwAXIOSNew } from "src/Www";
-import { getMillis } from "taehui-ts/date";
-import { useAvatarStore, useForumStore } from "src/Stores";
-import { toast } from "react-toastify";
-import { useTranslation } from "react-i18next";
-
-export default function usePutAutoEssays(
- forumID: string | undefined,
- title: string,
- text: string,
-) {
- const { t } = useTranslation();
-
- const { autoEssayID } = useForumStore();
-
- const { totem } = useAvatarStore();
-
- const queryClient = useQueryClient();
-
- return useMutation({
- mutationFn: async () => {
- await wwwAXIOSNew.put(
- `/autoEssay/${autoEssayID}`,
- {
- title,
- text,
- },
- {
- headers: {
- millis: getMillis(),
- totem,
- },
- },
- );
- },
- onSuccess: async () => {
- toast.success(t("postedAutoEssay"));
- await queryClient.invalidateQueries({ queryKey: ["autoEssays"] });
- },
- });
-}
diff --git a/taehui-fe/src/forum/useWipeAutoEssay.ts b/taehui-fe/src/forum/useWipeAutoEssay.ts
index be0e0b6..907ae0d 100644
--- a/taehui-fe/src/forum/useWipeAutoEssay.ts
+++ b/taehui-fe/src/forum/useWipeAutoEssay.ts
@@ -18,7 +18,7 @@
},
onSuccess: async () => {
setAutoEssayID(undefined);
- await queryClient.invalidateQueries({ queryKey: ["autoEssays"] });
+ await queryClient.invalidateQueries({ queryKey: ["autoEssay"] });
},
});
}
diff --git a/taehui-fe/src/forums/ForumsView.tsx b/taehui-fe/src/forums/ForumsView.tsx
index 24973e7..9059232 100644
--- a/taehui-fe/src/forums/ForumsView.tsx
+++ b/taehui-fe/src/forums/ForumsView.tsx
@@ -12,9 +12,9 @@
type ForumsViewParams = { forumGroup: string };
const { forumGroup } = useParams() as ForumsViewParams;
- const { data: forums, isPending: isPendingForums } = useGetForums(forumGroup);
+ const { data: forums, isFetched: isForumsLoaded } = useGetForums(forumGroup);
- if (isPendingForums) {
+ if (!isForumsLoaded) {
return ;
}
diff --git a/taehui-ts/package.json b/taehui-ts/package.json
index 0efaee4..abd8763 100644
--- a/taehui-ts/package.json
+++ b/taehui-ts/package.json
@@ -23,12 +23,12 @@
"devDependencies": {
"@rollup/plugin-typescript": "^11.1.6",
"@types/qs": "^6.9.12",
- "@types/react": "^18.2.61",
+ "@types/react": "^18.2.64",
"dayjs": "^1.11.10",
- "qs": "^6.11.2",
+ "qs": "^6.12.0",
"react": "^18.2.0",
- "react-router-dom": "^6.22.2",
- "rollup": "^4.12.0",
+ "react-router-dom": "^6.22.3",
+ "rollup": "^4.12.1",
"tslib": "^2.6.2"
},
"peerDependencies": {
diff --git a/taehui-www/package.json b/taehui-www/package.json
index 88b8f00..2bf6369 100644
--- a/taehui-www/package.json
+++ b/taehui-www/package.json
@@ -13,7 +13,7 @@
"mariadb": "^3.2.3",
"taehui-ts": "workspace:^",
"uuid": "^9.0.1",
- "winston": "^3.11.0",
+ "winston": "^3.12.0",
"winston-daily-rotate-file": "^5.0.0"
},
"devDependencies": {