upload data change

This commit is contained in:
xion 2025-03-29 20:56:03 +08:00
parent d8d78d184b
commit 80d16b5f76
5 changed files with 135 additions and 411 deletions

348
pnpm-lock.yaml generated
View File

@ -204,8 +204,8 @@ importers:
specifier: ^8.14.1
version: 8.14.1
sequelize:
specifier: ^6.37.6
version: 6.37.6(pg@8.14.1)
specifier: ^6.37.7
version: 6.37.7(pg@8.14.1)
socket.io:
specifier: ^4.8.1
version: 4.8.1
@ -218,22 +218,22 @@ importers:
version: 0.0.6
'@rollup/plugin-alias':
specifier: ^5.1.1
version: 5.1.1(rollup@4.36.0)
version: 5.1.1(rollup@4.38.0)
'@rollup/plugin-commonjs':
specifier: ^28.0.3
version: 28.0.3(rollup@4.36.0)
version: 28.0.3(rollup@4.38.0)
'@rollup/plugin-json':
specifier: ^6.1.0
version: 6.1.0(rollup@4.36.0)
version: 6.1.0(rollup@4.38.0)
'@rollup/plugin-node-resolve':
specifier: ^16.0.1
version: 16.0.1(rollup@4.36.0)
version: 16.0.1(rollup@4.38.0)
'@rollup/plugin-replace':
specifier: ^6.0.2
version: 6.0.2(rollup@4.36.0)
version: 6.0.2(rollup@4.38.0)
'@rollup/plugin-typescript':
specifier: ^12.1.2
version: 12.1.2(rollup@4.36.0)(tslib@2.8.1)(typescript@5.8.2)
version: 12.1.2(rollup@4.38.0)(tslib@2.8.1)(typescript@5.8.2)
'@types/archiver':
specifier: ^6.0.3
version: 6.0.3
@ -250,8 +250,8 @@ importers:
specifier: ^4.17.12
version: 4.17.12
'@types/node':
specifier: ^22.13.11
version: 22.13.11
specifier: ^22.13.14
version: 22.13.14
'@types/react':
specifier: ^19.0.12
version: 19.0.12
@ -271,17 +271,17 @@ importers:
specifier: latest
version: 6.0.1
rollup:
specifier: ^4.36.0
version: 4.36.0
specifier: ^4.38.0
version: 4.38.0
rollup-plugin-copy:
specifier: ^3.5.0
version: 3.5.0
rollup-plugin-dts:
specifier: ^6.2.1
version: 6.2.1(rollup@4.36.0)(typescript@5.8.2)
version: 6.2.1(rollup@4.38.0)(typescript@5.8.2)
rollup-plugin-esbuild:
specifier: ^6.2.1
version: 6.2.1(esbuild@0.25.0)(rollup@4.36.0)
version: 6.2.1(esbuild@0.25.0)(rollup@4.38.0)
tape:
specifier: ^5.9.0
version: 5.9.0
@ -635,131 +635,66 @@ packages:
rollup:
optional: true
'@rollup/rollup-android-arm-eabi@4.36.0':
resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm-eabi@4.38.0':
resolution: {integrity: sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.36.0':
resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==}
cpu: [arm64]
os: [android]
'@rollup/rollup-android-arm64@4.38.0':
resolution: {integrity: sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.36.0':
resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-arm64@4.38.0':
resolution: {integrity: sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.36.0':
resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.38.0':
resolution: {integrity: sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.36.0':
resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-arm64@4.38.0':
resolution: {integrity: sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.36.0':
resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.38.0':
resolution: {integrity: sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.36.0':
resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-gnueabihf@4.38.0':
resolution: {integrity: sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.36.0':
resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.38.0':
resolution: {integrity: sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.36.0':
resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.38.0':
resolution: {integrity: sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.36.0':
resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.38.0':
resolution: {integrity: sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.36.0':
resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.38.0':
resolution: {integrity: sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.36.0':
resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.38.0':
resolution: {integrity: sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.36.0':
resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.38.0':
resolution: {integrity: sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==}
cpu: [riscv64]
@ -770,61 +705,31 @@ packages:
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.36.0':
resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.38.0':
resolution: {integrity: sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.36.0':
resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.38.0':
resolution: {integrity: sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.36.0':
resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.38.0':
resolution: {integrity: sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.36.0':
resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-arm64-msvc@4.38.0':
resolution: {integrity: sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.36.0':
resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.38.0':
resolution: {integrity: sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.36.0':
resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==}
cpu: [x64]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.38.0':
resolution: {integrity: sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==}
cpu: [x64]
@ -884,9 +789,6 @@ packages:
'@types/node-forge@1.3.11':
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
'@types/node@22.13.11':
resolution: {integrity: sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==}
'@types/node@22.13.14':
resolution: {integrity: sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==}
@ -2327,11 +2229,6 @@ packages:
esbuild: '>=0.18.0'
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
rollup@4.36.0:
resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
rollup@4.38.0:
resolution: {integrity: sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@ -2384,39 +2281,6 @@ packages:
resolution: {integrity: sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==}
engines: {node: '>= 10.0.0'}
sequelize@6.37.6:
resolution: {integrity: sha512-4Slqjqpktofs7AVqWviFOInzP9w8ZRQDhF+DnRtm4WKIdIATpyzGgedyseP3xbgpBxapvfQcJv6CeIdZe4ZL2A==}
engines: {node: '>=10.0.0'}
peerDependencies:
ibm_db: '*'
mariadb: '*'
mysql2: '*'
oracledb: '*'
pg: '*'
pg-hstore: '*'
snowflake-sdk: '*'
sqlite3: '*'
tedious: '*'
peerDependenciesMeta:
ibm_db:
optional: true
mariadb:
optional: true
mysql2:
optional: true
oracledb:
optional: true
pg:
optional: true
pg-hstore:
optional: true
snowflake-sdk:
optional: true
sqlite3:
optional: true
tedious:
optional: true
sequelize@6.37.7:
resolution: {integrity: sha512-mCnh83zuz7kQxxJirtFD7q6Huy6liPanI67BSlbzSYgVNl5eXVdE2CN1FuAeZwG1SNpGsNRCV+bJAVVnykZAFA==}
engines: {node: '>=10.0.0'}
@ -3152,26 +3016,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@rollup/plugin-alias@5.1.1(rollup@4.36.0)':
optionalDependencies:
rollup: 4.36.0
'@rollup/plugin-alias@5.1.1(rollup@4.38.0)':
optionalDependencies:
rollup: 4.38.0
'@rollup/plugin-commonjs@28.0.3(rollup@4.36.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.36.0)
commondir: 1.0.1
estree-walker: 2.0.2
fdir: 6.3.0(picomatch@4.0.2)
is-reference: 1.2.1
magic-string: 0.30.11
picomatch: 4.0.2
optionalDependencies:
rollup: 4.36.0
'@rollup/plugin-commonjs@28.0.3(rollup@4.38.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.38.0)
@ -3184,28 +3032,12 @@ snapshots:
optionalDependencies:
rollup: 4.38.0
'@rollup/plugin-json@6.1.0(rollup@4.36.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.36.0)
optionalDependencies:
rollup: 4.36.0
'@rollup/plugin-json@6.1.0(rollup@4.38.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.38.0)
optionalDependencies:
rollup: 4.38.0
'@rollup/plugin-node-resolve@16.0.1(rollup@4.36.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.36.0)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-module: 1.0.0
resolve: 1.22.8
optionalDependencies:
rollup: 4.36.0
'@rollup/plugin-node-resolve@16.0.1(rollup@4.38.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.38.0)
@ -3216,13 +3048,6 @@ snapshots:
optionalDependencies:
rollup: 4.38.0
'@rollup/plugin-replace@6.0.2(rollup@4.36.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.36.0)
magic-string: 0.30.11
optionalDependencies:
rollup: 4.36.0
'@rollup/plugin-replace@6.0.2(rollup@4.38.0)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.38.0)
@ -3230,15 +3055,6 @@ snapshots:
optionalDependencies:
rollup: 4.38.0
'@rollup/plugin-typescript@12.1.2(rollup@4.36.0)(tslib@2.8.1)(typescript@5.8.2)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.36.0)
resolve: 1.22.8
typescript: 5.8.2
optionalDependencies:
rollup: 4.36.0
tslib: 2.8.1
'@rollup/plugin-typescript@12.1.2(rollup@4.38.0)(tslib@2.8.1)(typescript@5.8.2)':
dependencies:
'@rollup/pluginutils': 5.1.2(rollup@4.38.0)
@ -3248,14 +3064,6 @@ snapshots:
rollup: 4.38.0
tslib: 2.8.1
'@rollup/pluginutils@5.1.2(rollup@4.36.0)':
dependencies:
'@types/estree': 1.0.6
estree-walker: 2.0.2
picomatch: 4.0.2
optionalDependencies:
rollup: 4.36.0
'@rollup/pluginutils@5.1.2(rollup@4.38.0)':
dependencies:
'@types/estree': 1.0.6
@ -3264,120 +3072,63 @@ snapshots:
optionalDependencies:
rollup: 4.38.0
'@rollup/rollup-android-arm-eabi@4.36.0':
optional: true
'@rollup/rollup-android-arm-eabi@4.38.0':
optional: true
'@rollup/rollup-android-arm64@4.36.0':
optional: true
'@rollup/rollup-android-arm64@4.38.0':
optional: true
'@rollup/rollup-darwin-arm64@4.36.0':
optional: true
'@rollup/rollup-darwin-arm64@4.38.0':
optional: true
'@rollup/rollup-darwin-x64@4.36.0':
optional: true
'@rollup/rollup-darwin-x64@4.38.0':
optional: true
'@rollup/rollup-freebsd-arm64@4.36.0':
optional: true
'@rollup/rollup-freebsd-arm64@4.38.0':
optional: true
'@rollup/rollup-freebsd-x64@4.36.0':
optional: true
'@rollup/rollup-freebsd-x64@4.38.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.36.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.38.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.36.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.38.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.36.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.38.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.36.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.38.0':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.36.0':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.38.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.36.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.38.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.36.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.38.0':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.38.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.36.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.38.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.36.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.38.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.36.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.38.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.36.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.38.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.36.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.38.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.36.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.38.0':
optional: true
@ -3437,10 +3188,6 @@ snapshots:
dependencies:
'@types/node': 22.13.14
'@types/node@22.13.11':
dependencies:
undici-types: 6.20.0
'@types/node@22.13.14':
dependencies:
undici-types: 6.20.0
@ -5006,14 +4753,6 @@ snapshots:
globby: 10.0.1
is-plain-object: 3.0.1
rollup-plugin-dts@6.2.1(rollup@4.36.0)(typescript@5.8.2):
dependencies:
magic-string: 0.30.17
rollup: 4.36.0
typescript: 5.8.2
optionalDependencies:
'@babel/code-frame': 7.26.2
rollup-plugin-dts@6.2.1(rollup@4.38.0)(typescript@5.8.2):
dependencies:
magic-string: 0.30.17
@ -5022,17 +4761,6 @@ snapshots:
optionalDependencies:
'@babel/code-frame': 7.26.2
rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.36.0):
dependencies:
debug: 4.4.0
es-module-lexer: 1.6.0
esbuild: 0.25.0
get-tsconfig: 4.10.0
rollup: 4.36.0
unplugin-utils: 0.2.4
transitivePeerDependencies:
- supports-color
rollup-plugin-esbuild@6.2.1(esbuild@0.25.0)(rollup@4.38.0):
dependencies:
debug: 4.4.0
@ -5044,31 +4772,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
rollup@4.36.0:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.36.0
'@rollup/rollup-android-arm64': 4.36.0
'@rollup/rollup-darwin-arm64': 4.36.0
'@rollup/rollup-darwin-x64': 4.36.0
'@rollup/rollup-freebsd-arm64': 4.36.0
'@rollup/rollup-freebsd-x64': 4.36.0
'@rollup/rollup-linux-arm-gnueabihf': 4.36.0
'@rollup/rollup-linux-arm-musleabihf': 4.36.0
'@rollup/rollup-linux-arm64-gnu': 4.36.0
'@rollup/rollup-linux-arm64-musl': 4.36.0
'@rollup/rollup-linux-loongarch64-gnu': 4.36.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.36.0
'@rollup/rollup-linux-riscv64-gnu': 4.36.0
'@rollup/rollup-linux-s390x-gnu': 4.36.0
'@rollup/rollup-linux-x64-gnu': 4.36.0
'@rollup/rollup-linux-x64-musl': 4.36.0
'@rollup/rollup-win32-arm64-msvc': 4.36.0
'@rollup/rollup-win32-ia32-msvc': 4.36.0
'@rollup/rollup-win32-x64-msvc': 4.36.0
fsevents: 2.3.3
rollup@4.38.0:
dependencies:
'@types/estree': 1.0.7
@ -5139,29 +4842,6 @@ snapshots:
sequelize-pool@7.1.0: {}
sequelize@6.37.6(pg@8.14.1):
dependencies:
'@types/debug': 4.1.12
'@types/validator': 13.12.2
debug: 4.4.0
dottie: 2.0.6
inflection: 1.13.4
lodash: 4.17.21
moment: 2.30.1
moment-timezone: 0.5.45
pg-connection-string: 2.7.0
retry-as-promised: 7.0.4
semver: 7.7.1
sequelize-pool: 7.1.0
toposort-class: 1.0.1
uuid: 8.3.2
validator: 13.12.0
wkx: 0.5.0
optionalDependencies:
pg: 8.14.1
transitivePeerDependencies:
- supports-color
sequelize@6.37.7(pg@8.14.1):
dependencies:
'@types/debug': 4.1.12

View File

@ -23,6 +23,7 @@ router.post('/api/s1/resources/upload/chunk', async (req, res) => {
if (!tokenUser) return;
const url = new URL(req.url || '', 'http://localhost');
const share = !!url.searchParams.get('public');
const noCheckAppFiles = !!url.searchParams.get('noCheckAppFiles');
// 使用 formidable 解析 multipart/form-data
const form = new IncomingForm({
multiples: false, // 改为单文件上传
@ -133,7 +134,7 @@ router.post('/api/s1/resources/upload/chunk', async (req, res) => {
// Clean up the final file
fs.unlinkSync(finalFilePath);
if (!noCheckAppFiles) {
// Notify the app
const r = await app.call({
path: 'app',
@ -152,7 +153,12 @@ router.post('/api/s1/resources/upload/chunk', async (req, res) => {
code: r.code,
data: {
app: r.body,
resource: `${downloadBase}/${minioPath}`,
upload: [
{
name: relativePath,
path: `${downloadBase}/${minioPath}`,
},
],
},
};
if (r.message) {
@ -161,6 +167,15 @@ router.post('/api/s1/resources/upload/chunk', async (req, res) => {
console.log('upload data', data);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(data));
} else {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(
JSON.stringify({
message: 'Chunk uploaded successfully',
data: { chunkIndex, totalChunks },
}),
);
}
} else {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(

View File

@ -20,7 +20,13 @@ router.get('/api/s1/resources/upload', async (req, res) => {
// /api/s1/resources/upload
router.post('/api/s1/resources/upload', async (req, res) => {
const { tokenUser, token } = await checkAuth(req, res);
if (!tokenUser) return;
if (!tokenUser) {
res.end(error('Token is invalid.'));
return;
}
const url = new URL(req.url || '', 'http://localhost');
const share = !!url.searchParams.get('public');
const noCheckAppFiles = !!url.searchParams.get('noCheckAppFiles');
// 使用 formi dable 解析 multipart/form-data
const form = new IncomingForm({
multiples: true, // 支持多文件上传
@ -96,17 +102,24 @@ router.post('/api/s1/resources/upload', async (req, res) => {
const minioPath = `${username || tokenUser.username}/${appKey}/${version}${directory ? `/${directory}` : ''}/${relativePath}`;
// 上传到 MinIO 并保留文件夹结构
const isHTML = relativePath.endsWith('.html');
const metadata: any = {};
if (share) {
metadata.share = 'public';
}
await minioClient.fPutObject(bucketName, minioPath, tempPath, {
'Content-Type': getContentType(relativePath),
'app-source': 'user-app',
'Cache-Control': isHTML ? 'no-cache' : 'max-age=31536000, immutable', // 缓存一年
...metadata,
});
uploadResults.push({
name: relativePath,
path: minioPath,
});
fs.unlinkSync(tempPath); // 删除临时文件
} // 受控
}
if (!noCheckAppFiles) {
// 受控
const r = await app.call({
path: 'app',
key: 'uploadFiles',
@ -122,7 +135,10 @@ router.post('/api/s1/resources/upload', async (req, res) => {
});
const data: any = {
code: r.code,
data: r.body,
data: {
app: r.body,
upload: uploadResults,
},
};
if (r.message) {
data.message = r.message;
@ -130,5 +146,17 @@ router.post('/api/s1/resources/upload', async (req, res) => {
console.log('upload data', data);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(data));
} else {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(
JSON.stringify({
code: 200,
data: {
detect: [],
upload: uploadResults,
},
}),
);
}
});
});

View File

@ -1,56 +1,57 @@
import { app } from '@/app.ts'
import { User } from '@/models/user.ts'
import { app } from '@/app.ts';
import { User } from '@/models/user.ts';
app
.route({
path: 'user',
key: 'getUpdateInfo',
middleware: ['auth']
middleware: ['auth'],
})
.define(async (ctx) => {
const tokenUser = ctx.state?.tokenUser || {}
const user = await User.findByPk(tokenUser.id)
const tokenUser = ctx.state?.tokenUser || {};
const user = await User.findByPk(tokenUser.id);
if (!user) {
ctx.throw(500, 'user not found')
ctx.throw(500, 'user not found');
}
ctx.body = {
nickname: user.nickname,
avatar: user.avatar,
data: user.data
}
data: user.data,
};
})
.addTo(app)
.addTo(app);
app
.route('user', 'updateInfo', {
middleware: ['auth']
middleware: ['auth'],
})
.define(async (ctx) => {
const { nickname, avatar, data } = ctx.query.data || {}
const tokenUser = ctx.state?.tokenUser || {}
const { id } = tokenUser
const user = await User.findByPk(id)
let updateData: any = {}
const { nickname, avatar, data } = ctx.query.data || {};
const tokenUser = ctx.state?.tokenUser || {};
const { id, uid } = tokenUser;
const user = await User.findByPk(id);
let updateData: any = {};
if (!user) {
ctx.throw(500, 'user not found')
ctx.throw(500, 'user not found');
}
if (nickname) {
updateData.nickname = nickname
updateData.nickname = nickname;
}
if (avatar) {
updateData.avatar = avatar
updateData.avatar = avatar;
}
await user.update(
{
...updateData,
data: {
...user.data,
...data
}
...data,
},
},
{
fields: ['nickname', 'avatar', 'data']
}
)
ctx.body = await user.getInfo()
fields: ['nickname', 'avatar', 'data'],
},
);
user.setTokenUser(tokenUser);
ctx.body = await user.getInfo();
})
.addTo(app)
.addTo(app);

@ -1 +1 @@
Subproject commit 1cce7e1193d39f4fc067e528e8348e9a871c6f04
Subproject commit 0c36328ac3e728e7978cca03bb187fb4e841f6d8