diff --git a/eslint.config.js b/eslint.config.js index a853d1f..fff7d7a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -24,7 +24,7 @@ import antfu from '@antfu/eslint-config'; -export default antfu( +const lintConfig = antfu( { lessOpinionated: true, @@ -59,3 +59,5 @@ export default antfu( }, }, ); + +export default lintConfig; diff --git a/package.json b/package.json index feacc6c..7bd615d 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,13 @@ "preview": "vite preview" }, "dependencies": { - "@ant-design/icons": "^6.0.0", + "@ant-design/icons": "^5.6.1", "@ant-design/v5-patch-for-react-19": "^1.0.3", + "@tanstack/react-query": "^5.84.1", "@tanstack/react-router": "^1.130.9", "@tanstack/react-router-devtools": "^1.130.9", "antd": "^5.26.7", + "axios": "^1.11.0", "crypto-js": "^4.2.0", "dayjs": "^1.11.13", "destr": "^2.0.5", @@ -28,8 +30,10 @@ "@antfu/eslint-config": "^5.0.0", "@eslint-react/eslint-plugin": "^1.52.3", "@eslint/js": "^9.30.1", + "@tanstack/eslint-plugin-query": "^5.83.1", "@tanstack/router-plugin": "^1.130.9", "@types/crypto-js": "^4.2.2", + "@types/node": "^24.1.0", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^4.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 459f309..dcde53e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,14 @@ importers: .: dependencies: '@ant-design/icons': - specifier: ^6.0.0 - version: 6.0.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^5.6.1 + version: 5.6.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@ant-design/v5-patch-for-react-19': specifier: ^1.0.3 version: 1.0.3(antd@5.26.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@tanstack/react-query': + specifier: ^5.84.1 + version: 5.84.1(react@19.1.1) '@tanstack/react-router': specifier: ^1.130.9 version: 1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -23,6 +26,9 @@ importers: antd: specifier: ^5.26.7 version: 5.26.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + axios: + specifier: ^1.11.0 + version: 1.11.0 crypto-js: specifier: ^4.2.0 version: 4.2.0 @@ -51,12 +57,18 @@ importers: '@eslint/js': specifier: ^9.30.1 version: 9.32.0 + '@tanstack/eslint-plugin-query': + specifier: ^5.83.1 + version: 5.83.1(eslint@9.32.0)(typescript@5.8.3) '@tanstack/router-plugin': specifier: ^1.130.9 - version: 1.130.9(@tanstack/react-router@1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@7.0.6(tsx@4.20.3)(yaml@2.8.0)) + version: 1.130.9(@tanstack/react-router@1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0)) '@types/crypto-js': specifier: ^4.2.2 version: 4.2.2 + '@types/node': + specifier: ^24.1.0 + version: 24.1.0 '@types/react': specifier: ^19.1.8 version: 19.1.8 @@ -65,7 +77,7 @@ importers: version: 19.1.6(@types/react@19.1.8) '@vitejs/plugin-react': specifier: ^4.6.0 - version: 4.7.0(vite@7.0.6(tsx@4.20.3)(yaml@2.8.0)) + version: 4.7.0(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0)) compressing: specifier: ^1.10.3 version: 1.10.3 @@ -95,7 +107,7 @@ importers: version: 8.38.0(eslint@9.32.0)(typescript@5.8.3) vite: specifier: ^7.0.4 - version: 7.0.6(tsx@4.20.3)(yaml@2.8.0) + version: 7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0) packages: @@ -106,9 +118,6 @@ packages: '@ant-design/colors@7.2.1': resolution: {integrity: sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==} - '@ant-design/colors@8.0.0': - resolution: {integrity: sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw==} - '@ant-design/cssinjs-utils@1.1.3': resolution: {integrity: sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==} peerDependencies: @@ -125,10 +134,6 @@ packages: resolution: {integrity: sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==} engines: {node: '>=8.x'} - '@ant-design/fast-color@3.0.0': - resolution: {integrity: sha512-eqvpP7xEDm2S7dUzl5srEQCBTXZMmY3ekf97zI+M2DHOYyKdJGH0qua0JACHTqbkRnD/KHFQP9J1uMJ/XWVzzA==} - engines: {node: '>=8.x'} - '@ant-design/icons-svg@4.4.2': resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} @@ -139,13 +144,6 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' - '@ant-design/icons@6.0.0': - resolution: {integrity: sha512-o0aCCAlHc1o4CQcapAwWzHeaW2x9F49g7P3IDtvtNXgHowtRWYb7kiubt8sQPFvfVIVU/jLw2hzeSlNt0FU+Uw==} - engines: {node: '>=8'} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - '@ant-design/react-slick@1.1.2': resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==} peerDependencies: @@ -746,12 +744,6 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - '@rc-component/util@1.2.2': - resolution: {integrity: sha512-p3zQr9Wu8BKncqmuW23olzBoAFsN8PYMS9FaI4JwJLwknH7DvfHAr1fwbfl9aAWw4Jva64ucpenbgG4fznLUSw==} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' - '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} @@ -872,10 +864,23 @@ packages: peerDependencies: eslint: '>=9.0.0' + '@tanstack/eslint-plugin-query@5.83.1': + resolution: {integrity: sha512-tdkpPFfzkTksN9BIlT/qjixSAtKrsW6PUVRwdKWaOcag7DrD1vpki3UzzdfMQGDRGeg1Ue1Dg+rcl5FJGembNg==} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + '@tanstack/history@1.129.7': resolution: {integrity: sha512-I3YTkbe4RZQN54Qw4+IUhOjqG2DdbG2+EBWuQfew4MEk0eddLYAQVa50BZVww4/D2eh5I9vEk2Fd1Y0Wty7pug==} engines: {node: '>=12'} + '@tanstack/query-core@5.83.1': + resolution: {integrity: sha512-OG69LQgT7jSp+5pPuCfzltq/+7l2xoweggjme9vlbCPa/d7D7zaqv5vN/S82SzSYZ4EDLTxNO1PWrv49RAS64Q==} + + '@tanstack/react-query@5.84.1': + resolution: {integrity: sha512-zo7EUygcWJMQfFNWDSG7CBhy8irje/XY0RDVKKV4IQJAysb+ZJkkJPcnQi+KboyGUgT+SQebRFoTqLuTtfoDLw==} + peerDependencies: + react: ^18 || ^19 + '@tanstack/react-router-devtools@1.130.9': resolution: {integrity: sha512-5eF5M4F+Mzg+2rxyE3EBF8sTCBkRHswoRXw3V8i7i3+c7C80j9SOYgYar/WHcA3IkBUSgVf6HCd38yxB0Vbvsg==} engines: {node: '>=12'} @@ -979,6 +984,9 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@24.1.0': + resolution: {integrity: sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==} + '@types/react-dom@19.1.6': resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==} peerDependencies: @@ -1124,10 +1132,16 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + axios@1.11.0: + resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} + babel-dead-code-elimination@1.0.10: resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} @@ -1240,6 +1254,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} @@ -1315,6 +1333,10 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -1359,6 +1381,10 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + es-toolkit@1.39.8: resolution: {integrity: sha512-A8QO9TfF+rltS8BXpdu8OS+rpGgEdnRhqIVxO/ZmNvnXBYgOdSsxukT55ELyP94gZIntWJ+Li9QRrT2u1Kitpg==} @@ -1731,10 +1757,23 @@ packages: flushwritable@1.0.0: resolution: {integrity: sha512-3VELfuWCLVzt5d2Gblk8qcqFro6nuwvxwMzHaENVDHI7rxcBRtMCwTk/E9FXcgh+82DSpavPNDueA9+RxXJoFg==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -1881,9 +1920,6 @@ packages: eslint: '*' typescript: '>=4.7.4' - is-mobile@5.0.0: - resolution: {integrity: sha512-Tz/yndySvLAEXh+Uk8liFCxOwVH6YutuR74utvOcu7I9Di+DwM0mtdPVZNaVvvBUM2OXxne/NhOs1zAO7riusQ==} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2115,6 +2151,14 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -2259,6 +2303,9 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + pump@3.0.3: resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} @@ -2763,6 +2810,9 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -2908,10 +2958,6 @@ snapshots: dependencies: '@ant-design/fast-color': 2.0.6 - '@ant-design/colors@8.0.0': - dependencies: - '@ant-design/fast-color': 3.0.0 - '@ant-design/cssinjs-utils@1.1.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: '@ant-design/cssinjs': 1.24.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -2936,8 +2982,6 @@ snapshots: dependencies: '@babel/runtime': 7.28.2 - '@ant-design/fast-color@3.0.0': {} - '@ant-design/icons-svg@4.4.2': {} '@ant-design/icons@5.6.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': @@ -2950,15 +2994,6 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@ant-design/icons@6.0.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - '@ant-design/colors': 8.0.0 - '@ant-design/icons-svg': 4.4.2 - '@rc-component/util': 1.2.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - classnames: 2.5.1 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - '@ant-design/react-slick@1.1.2(react@19.1.1)': dependencies: '@babel/runtime': 7.28.2 @@ -3619,13 +3654,6 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@rc-component/util@1.2.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': - dependencies: - is-mobile: 5.0.0 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - react-is: 18.3.1 - '@rolldown/pluginutils@1.0.0-beta.27': {} '@rollup/rollup-android-arm-eabi@4.46.1': @@ -3698,8 +3726,23 @@ snapshots: estraverse: 5.3.0 picomatch: 4.0.3 + '@tanstack/eslint-plugin-query@5.83.1(eslint@9.32.0)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0)(typescript@5.8.3) + eslint: 9.32.0 + transitivePeerDependencies: + - supports-color + - typescript + '@tanstack/history@1.129.7': {} + '@tanstack/query-core@5.83.1': {} + + '@tanstack/react-query@5.84.1(react@19.1.1)': + dependencies: + '@tanstack/query-core': 5.83.1 + react: 19.1.1 + '@tanstack/react-router-devtools@1.130.9(@tanstack/react-router@1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.130.9)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.7)(tiny-invariant@1.3.3)': dependencies: '@tanstack/react-router': 1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -3763,7 +3806,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.130.9(@tanstack/react-router@1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@7.0.6(tsx@4.20.3)(yaml@2.8.0))': + '@tanstack/router-plugin@1.130.9(@tanstack/react-router@1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) @@ -3781,7 +3824,7 @@ snapshots: zod: 3.25.76 optionalDependencies: '@tanstack/react-router': 1.130.9(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - vite: 7.0.6(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -3837,6 +3880,10 @@ snapshots: '@types/ms@2.1.0': {} + '@types/node@24.1.0': + dependencies: + undici-types: 7.8.0 + '@types/react-dom@19.1.6(@types/react@19.1.8)': dependencies: '@types/react': 19.1.8 @@ -3940,7 +3987,7 @@ snapshots: '@typescript-eslint/types': 8.38.0 eslint-visitor-keys: 4.2.1 - '@vitejs/plugin-react@4.7.0(vite@7.0.6(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-react@4.7.0(vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) @@ -3948,7 +3995,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.0.6(tsx@4.20.3)(yaml@2.8.0) + vite: 7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -4083,10 +4130,20 @@ snapshots: dependencies: tslib: 2.8.1 + asynckit@0.4.0: {} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 + axios@1.11.0: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + babel-dead-code-elimination@1.0.10: dependencies: '@babel/core': 7.28.0 @@ -4204,6 +4261,10 @@ snapshots: color-name@1.1.4: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comment-parser@1.4.1: {} compare-versions@6.1.1: {} @@ -4272,6 +4333,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + delayed-stream@1.0.0: {} + dequal@2.0.3: {} destr@2.0.5: {} @@ -4309,6 +4372,13 @@ snapshots: dependencies: es-errors: 1.3.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es-toolkit@1.39.8: {} esbuild@0.25.8: @@ -4829,10 +4899,20 @@ snapshots: flushwritable@1.0.0: {} + follow-redirects@1.15.11: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + format@0.2.2: {} fs-constants@1.0.0: {} @@ -4957,8 +5037,6 @@ snapshots: transitivePeerDependencies: - supports-color - is-mobile@5.0.0: {} - is-number@7.0.0: {} is-typed-array@1.1.15: @@ -5359,6 +5437,12 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + min-indent@1.0.1: {} minimatch@3.1.2: @@ -5488,6 +5572,8 @@ snapshots: process-nextick-args@2.0.1: {} + proxy-from-env@1.1.0: {} + pump@3.0.3: dependencies: end-of-stream: 1.4.5 @@ -6087,6 +6173,8 @@ snapshots: ufo@1.6.1: {} + undici-types@7.8.0: {} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 @@ -6128,7 +6216,7 @@ snapshots: util-deprecate@1.0.2: {} - vite@7.0.6(tsx@4.20.3)(yaml@2.8.0): + vite@7.0.6(@types/node@24.1.0)(tsx@4.20.3)(yaml@2.8.0): dependencies: esbuild: 0.25.8 fdir: 6.4.6(picomatch@4.0.3) @@ -6137,6 +6225,7 @@ snapshots: rollup: 4.46.1 tinyglobby: 0.2.14 optionalDependencies: + '@types/node': 24.1.0 fsevents: 2.3.3 tsx: 4.20.3 yaml: 2.8.0 diff --git a/src/main.tsx b/src/main.tsx index 6d727e4..24b2901 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,3 +1,4 @@ +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { createRouter, RouterProvider } from '@tanstack/react-router'; import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; @@ -9,6 +10,8 @@ import 'antd/dist/reset.css'; const router = createRouter({ routeTree }); +const queryClient = new QueryClient(); + declare module '@tanstack/react-router' { interface Register { router: typeof router; @@ -19,7 +22,9 @@ const rootElement = document.getElementById('root')!; if (!rootElement.innerHTML) { createRoot(rootElement).render( - + + + , ); } diff --git a/tsconfig.app.json b/tsconfig.app.json index 38e7899..3c90ecb 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -10,6 +10,10 @@ /* Bundler mode */ "moduleResolution": "bundler", + + "paths": { + "@/*": ["./src/*"] + }, "allowImportingTsExtensions": true, /* Linting */ diff --git a/vite.config.ts b/vite.config.ts index bb165ee..c0e6b51 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,6 +2,7 @@ import type { ProxyOptions } from 'vite'; import { tanstackRouter } from '@tanstack/router-plugin/vite'; import react from '@vitejs/plugin-react'; +import { fileURLToPath, URL } from 'node:url'; import { defineConfig } from 'vite'; const apiProxyList: [string, string][] = [ @@ -33,6 +34,11 @@ export default defineConfig((/* { command, mode } */) => { }), react(), ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, server: { port: 9763, proxy: viteProxy,