fix
Some checks failed
Deploy / deploy (build, debian, 22, /root/OJDeploy/data/clientnext) (push) Has been cancelled
Deploy / deploy (build:staging, school, 8822, /root/OJ/data/dist) (push) Has been cancelled

This commit is contained in:
2026-05-07 01:46:43 -06:00
parent 67a44d7637
commit 7d8eff4ee8
14 changed files with 238 additions and 290 deletions

482
package-lock.json generated
View File

@@ -46,10 +46,11 @@
}, },
"devDependencies": { "devDependencies": {
"@iconify/vue": "^5.0.1", "@iconify/vue": "^5.0.1",
"@rsbuild/core": "^1.7.5", "@rsbuild/core": "^2.0.5",
"@rsbuild/plugin-vue": "^1.2.7", "@rsbuild/plugin-vue": "^1.2.7",
"@types/canvas-confetti": "^1.9.0", "@types/canvas-confetti": "^1.9.0",
"@types/node": "^25.6.0", "@types/node": "^25.6.0",
"core-js": "^3.49.0",
"prettier": "^3.8.3", "prettier": "^3.8.3",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"unplugin-auto-import": "^21.0.0", "unplugin-auto-import": "^21.0.0",
@@ -900,276 +901,47 @@
"langium": "^4.0.0" "langium": "^4.0.0"
} }
}, },
"node_modules/@module-federation/error-codes": { "node_modules/@napi-rs/wasm-runtime": {
"version": "0.22.0", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
"integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
"dev": true,
"license": "MIT"
},
"node_modules/@module-federation/runtime": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz",
"integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"optional": true,
"dependencies": { "dependencies": {
"@module-federation/error-codes": "0.22.0", "@tybys/wasm-util": "^0.10.1"
"@module-federation/runtime-core": "0.22.0", },
"@module-federation/sdk": "0.22.0" "funding": {
} "type": "github",
}, "url": "https://github.com/sponsors/Brooooooklyn"
"node_modules/@module-federation/runtime-core": { },
"version": "0.22.0", "peerDependencies": {
"resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", "@emnapi/core": "^1.7.1",
"integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", "@emnapi/runtime": "^1.7.1"
"dev": true,
"license": "MIT",
"dependencies": {
"@module-federation/error-codes": "0.22.0",
"@module-federation/sdk": "0.22.0"
}
},
"node_modules/@module-federation/runtime-tools": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz",
"integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@module-federation/runtime": "0.22.0",
"@module-federation/webpack-bundler-runtime": "0.22.0"
}
},
"node_modules/@module-federation/sdk": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz",
"integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==",
"dev": true,
"license": "MIT"
},
"node_modules/@module-federation/webpack-bundler-runtime": {
"version": "0.22.0",
"resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz",
"integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@module-federation/runtime": "0.22.0",
"@module-federation/sdk": "0.22.0"
} }
}, },
"node_modules/@rsbuild/core": { "node_modules/@rsbuild/core": {
"version": "1.7.5", "version": "2.0.5",
"resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.7.5.tgz", "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-2.0.5.tgz",
"integrity": "sha512-i37urpoV4y9NSsGiUOuLdoI42KJ5h4gAZ8EG8Ilmsond3bxoAoOCu7YvC+1pJ7p+r16suVPW8cki891ZKHOoXQ==", "integrity": "sha512-KajO50hbXb32S8MsyDh2f+xKcVeRy9Gfzdcy0JjpMLj22djHugly6jrGo7jH7ls9X6/TDcyCTncSuNK4+D2lTw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@rspack/core": "~1.7.10", "@rspack/core": "~2.0.2",
"@rspack/lite-tapable": "~1.1.0", "@swc/helpers": "^0.5.21"
"@swc/helpers": "^0.5.20",
"core-js": "~3.47.0",
"jiti": "^2.6.1"
}, },
"bin": { "bin": {
"rsbuild": "bin/rsbuild.js" "rsbuild": "bin/rsbuild.js"
}, },
"engines": { "engines": {
"node": ">=18.12.0" "node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rsbuild/core/node_modules/@napi-rs/wasm-runtime": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz",
"integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/core": "^1.5.0",
"@emnapi/runtime": "^1.5.0",
"@tybys/wasm-util": "^0.10.1"
}
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.11.tgz",
"integrity": "sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q==",
"dev": true,
"license": "MIT",
"optionalDependencies": {
"@rspack/binding-darwin-arm64": "1.7.11",
"@rspack/binding-darwin-x64": "1.7.11",
"@rspack/binding-linux-arm64-gnu": "1.7.11",
"@rspack/binding-linux-arm64-musl": "1.7.11",
"@rspack/binding-linux-x64-gnu": "1.7.11",
"@rspack/binding-linux-x64-musl": "1.7.11",
"@rspack/binding-wasm32-wasi": "1.7.11",
"@rspack/binding-win32-arm64-msvc": "1.7.11",
"@rspack/binding-win32-ia32-msvc": "1.7.11",
"@rspack/binding-win32-x64-msvc": "1.7.11"
}
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-darwin-arm64": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.11.tgz",
"integrity": "sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-darwin-x64": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.11.tgz",
"integrity": "sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-arm64-gnu": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.11.tgz",
"integrity": "sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-arm64-musl": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.11.tgz",
"integrity": "sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-x64-gnu": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.11.tgz",
"integrity": "sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-x64-musl": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.11.tgz",
"integrity": "sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-wasm32-wasi": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.11.tgz",
"integrity": "sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ==",
"cpu": [
"wasm32"
],
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@napi-rs/wasm-runtime": "1.0.7"
}
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-win32-arm64-msvc": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.11.tgz",
"integrity": "sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-win32-ia32-msvc": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.11.tgz",
"integrity": "sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/binding-win32-x64-msvc": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.11.tgz",
"integrity": "sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rsbuild/core/node_modules/@rspack/core": {
"version": "1.7.11",
"resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.11.tgz",
"integrity": "sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew==",
"dev": true,
"license": "MIT",
"dependencies": {
"@module-federation/runtime-tools": "0.22.0",
"@rspack/binding": "1.7.11",
"@rspack/lite-tapable": "1.1.0"
},
"engines": {
"node": ">=18.12.0"
}, },
"peerDependencies": { "peerDependencies": {
"@swc/helpers": ">=0.5.1" "core-js": ">= 3.0.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"@swc/helpers": { "core-js": {
"optional": true "optional": true
} }
} }
@@ -1192,6 +964,192 @@
} }
} }
}, },
"node_modules/@rspack/binding": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.0.2.tgz",
"integrity": "sha512-0kZPplW9GWx8mfC6DfsaRY3QBIYPuUs42JfmSM6aSb8tMHZAXQeLeMB8M+h8i4SeI+aFtCgO6UuYGtyWf7+L+A==",
"dev": true,
"license": "MIT",
"optionalDependencies": {
"@rspack/binding-darwin-arm64": "2.0.2",
"@rspack/binding-darwin-x64": "2.0.2",
"@rspack/binding-linux-arm64-gnu": "2.0.2",
"@rspack/binding-linux-arm64-musl": "2.0.2",
"@rspack/binding-linux-x64-gnu": "2.0.2",
"@rspack/binding-linux-x64-musl": "2.0.2",
"@rspack/binding-wasm32-wasi": "2.0.2",
"@rspack/binding-win32-arm64-msvc": "2.0.2",
"@rspack/binding-win32-ia32-msvc": "2.0.2",
"@rspack/binding-win32-x64-msvc": "2.0.2"
}
},
"node_modules/@rspack/binding-darwin-arm64": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.0.2.tgz",
"integrity": "sha512-0o7lbgBBsDlICWdjIH0q3e0BsSco4GRiImHWVfZSVEG+q2+ykZJvSvYCVhPM1Co375Z0S3VMPa/8SjcY1FHwlw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-darwin-x64": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.0.2.tgz",
"integrity": "sha512-tOwxZpoPlTlRs/w6UyUinXJ4TYRVHMlR7+eQxO1R3muKpixvhXQjtvoaY16HuFyTVky5F0IfOoWr3x9FEsgdLg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-linux-arm64-gnu": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.0.2.tgz",
"integrity": "sha512-1ZD4YFhG1rmgqj+W8hfwHyKV8xDxGsc/3KgU0FwmiVEX7JfzhCkgBO/xlCG79kRKSrzuVzt4icO/G3cCKn0pag==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-arm64-musl": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.0.2.tgz",
"integrity": "sha512-/PtTkM/DsDLjeuXTmeJeRfbjCDbcL9jvoVgZrgxYFZ28y2cdLvbChbW9uigOzs5dQEs1CIBQXMTTj7KhdBTuQg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-gnu": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.0.2.tgz",
"integrity": "sha512-bBjsZxMHRaPo6X9SokApm6ucs+UhXtAJFyJJyuk2BH4XJsLeCU9Dz1vMwioeohFbJUUeTASVPm6/BL+RhSaunw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-musl": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.0.2.tgz",
"integrity": "sha512-HjlpInqzabDNkhVsUJpsHPqa9QYVWBViJoyWNjzXCAW0vKMDvwaphyUvokSinX8FGTlZi/sr5UEaHJo6XtQ35g==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-wasm32-wasi": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.0.2.tgz",
"integrity": "sha512-YaRYNFLJRpkGfYjSWR7n9f+nQKtrlmrrffpAn/blc2geHcRvXoBc5SCs1idPtsLhj7H9qWWhs7ucjyHy4csWFg==",
"cpu": [
"wasm32"
],
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/core": "1.10.0",
"@emnapi/runtime": "1.10.0",
"@napi-rs/wasm-runtime": "1.1.4"
}
},
"node_modules/@rspack/binding-win32-arm64-msvc": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.0.2.tgz",
"integrity": "sha512-d/3kTEKq+asLjRFPO96t+wfWiM7DLN76VQEPDD9bc1kdsZXlVJBuvyXfsgK8bbEvKplWXYcSsokhmEnuXrLOpg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-ia32-msvc": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.0.2.tgz",
"integrity": "sha512-161cWineq3RW+Jdm1FAfSpXeUtYWvhB3kAbm46vNT9h/YYz+spwsFMvveAZ1nsVSVL0IC5lDBGUte7yUAY8K2g==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-x64-msvc": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.0.2.tgz",
"integrity": "sha512-y7Q0S1FE+OlkL5GMqLG0PwxrPw6E1r892KhGrGKE1Vdufe5YTEx6xTPxzZ+b7N2KPD7s9G1/iJmWHQxb1+Bjkg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/core": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.0.2.tgz",
"integrity": "sha512-VM3UHOo26uC+4QSqY5tU1ybI7KuXY5rTof8nhFOaBY9SYau0Smvr+hMSAPmrmHwknB6dXT8yaNVxrj7I+qxE1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@rspack/binding": "2.0.2"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
},
"peerDependencies": {
"@module-federation/runtime-tools": "^0.24.1 || ^2.0.0",
"@swc/helpers": ">=0.5.1"
},
"peerDependenciesMeta": {
"@module-federation/runtime-tools": {
"optional": true
},
"@swc/helpers": {
"optional": true
}
}
},
"node_modules/@rspack/lite-tapable": { "node_modules/@rspack/lite-tapable": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz",
@@ -1205,7 +1163,6 @@
"integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.8.0" "tslib": "^2.8.0"
} }
@@ -2582,12 +2539,13 @@
} }
}, },
"node_modules/core-js": { "node_modules/core-js": {
"version": "3.47.0", "version": "3.49.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz",
"integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/core-js" "url": "https://opencollective.com/core-js"
@@ -3746,16 +3704,6 @@
"url": "https://github.com/sponsors/dmonad" "url": "https://github.com/sponsors/dmonad"
} }
}, },
"node_modules/jiti": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
"integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
"dev": true,
"license": "MIT",
"bin": {
"jiti": "lib/jiti-cli.mjs"
}
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "9.0.1", "version": "9.0.1",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",

View File

@@ -48,10 +48,11 @@
}, },
"devDependencies": { "devDependencies": {
"@iconify/vue": "^5.0.1", "@iconify/vue": "^5.0.1",
"@rsbuild/core": "^1.7.5", "@rsbuild/core": "^2.0.5",
"@rsbuild/plugin-vue": "^1.2.7", "@rsbuild/plugin-vue": "^1.2.7",
"@types/canvas-confetti": "^1.9.0", "@types/canvas-confetti": "^1.9.0",
"@types/node": "^25.6.0", "@types/node": "^25.6.0",
"core-js": "^3.49.0",
"prettier": "^3.8.3", "prettier": "^3.8.3",
"typescript": "^6.0.3", "typescript": "^6.0.3",
"unplugin-auto-import": "^21.0.0", "unplugin-auto-import": "^21.0.0",

View File

@@ -74,10 +74,9 @@ const config: ReturnType<typeof defineConfig> = defineConfig(({ envMode }) => {
}, },
define: publicVars, define: publicVars,
}, },
performance: { output: {
chunkSplit: { target: "web",
strategy: "split-by-module", polyfill: "usage",
},
}, },
resolve: { resolve: {
alias: { alias: {
@@ -98,4 +97,4 @@ const config: ReturnType<typeof defineConfig> = defineConfig(({ envMode }) => {
} }
}) })
export default config export default config

View File

@@ -54,7 +54,7 @@ async function submit() {
const api = { const api = {
"admin announcement create": createAnnouncement, "admin announcement create": createAnnouncement,
"admin announcement edit": editAnnouncement, "admin announcement edit": editAnnouncement,
}[<string>route.name] }[route.name as string]
try { try {
await api!(announcement) await api!(announcement)
if (route.name === "admin announcement create") { if (route.name === "admin announcement create") {

View File

@@ -97,7 +97,7 @@ async function submit() {
const api = { const api = {
"admin contest create": createContest, "admin contest create": createContest,
"admin contest edit": editContest, "admin contest edit": editContest,
}[<string>route.name] }[route.name as string]
try { try {
await api!(contest) await api!(contest)
if (route.name === "admin contest create") { if (route.name === "admin contest create") {

View File

@@ -33,7 +33,7 @@ const columns: DataTableColumn<AdminProblemFiltered>[] = [
render: (row) => render: (row) =>
h(AddButton, { h(AddButton, {
problemID: row.id, problemID: row.id,
contestID: <string>route.params.contestID, contestID: route.params.contestID as string,
onAdded: () => emit("change"), onAdded: () => emit("change"),
}), }),
width: 60, width: 60,

View File

@@ -44,7 +44,7 @@ const title = computed(
"admin problem edit": "编辑题目", "admin problem edit": "编辑题目",
"admin contest problem create": "新建比赛题目", "admin contest problem create": "新建比赛题目",
"admin contest problem edit": "编辑比赛题目", "admin contest problem edit": "编辑比赛题目",
})[<string>route.name], })[route.name as string],
) )
const isAIGenerating = ref(false) const isAIGenerating = ref(false)
@@ -358,7 +358,7 @@ async function submit() {
"admin problem edit": editProblem, "admin problem edit": editProblem,
"admin contest problem create": createContestProblem, "admin contest problem create": createContestProblem,
"admin contest problem edit": editContestProblem, "admin contest problem edit": editContestProblem,
}[<string>route.name] }[route.name as string]
if ( if (
route.name === "admin contest problem create" || route.name === "admin contest problem create" ||
route.name === "admin contest problem edit" route.name === "admin contest problem edit"

View File

@@ -23,7 +23,7 @@ const title = computed(
({ ({
"admin problem list": "题目列表", "admin problem list": "题目列表",
"admin contest problem list": "比赛题目列表", "admin contest problem list": "比赛题目列表",
})[<string>route.name], })[route.name as string],
) )
const isContestProblemList = computed( const isContestProblemList = computed(
() => route.name === "admin contest problem list", () => route.name === "admin contest problem list",

View File

@@ -50,7 +50,7 @@ const columns: DataTableColumn<Submission>[] = [
text: true, text: true,
type: "info", type: "info",
onClick: () => { onClick: () => {
showCodePanel(row.id, <string>route.params.problemID ?? "") showCodePanel(row.id, (route.params.problemID as string) ?? "")
}, },
}, },
() => row.id.slice(0, 12), () => row.id.slice(0, 12),
@@ -116,8 +116,8 @@ async function listSubmissions() {
...query, ...query,
myself: "1", myself: "1",
offset, offset,
problem_id: <string>route.params.problemID ?? "", problem_id: (route.params.problemID as string) ?? "",
contest_id: <string>route.params.contestID ?? "", contest_id: (route.params.contestID as string) ?? "",
}) })
submissions.value = res.data.results submissions.value = res.data.results
total.value = res.data.total total.value = res.data.total
@@ -125,7 +125,7 @@ async function listSubmissions() {
async function getRankOfThisProblem() { async function getRankOfThisProblem() {
loading.value = true loading.value = true
const res = await getRankOfProblem(<string>route.params.problemID ?? "") const res = await getRankOfProblem((route.params.problemID as string) ?? "")
loading.value = false loading.value = false
class_name.value = res.data.class_name class_name.value = res.data.class_name

View File

@@ -24,8 +24,8 @@ const codeStore = useCodeStore()
const problemStore = useProblemStore() const problemStore = useProblemStore()
const { problem } = storeToRefs(problemStore) const { problem } = storeToRefs(problemStore)
const route = useRoute() const route = useRoute()
const contestID = <string>route.params.contestID ?? "" const contestID = (route.params.contestID as string) ?? ""
const problemSetId = <string>route.params.problemSetId ?? "" const problemSetId = (route.params.problemSetId as string) ?? ""
const router = useRouter() const router = useRouter()
const [commentPanel] = useToggle() const [commentPanel] = useToggle()

View File

@@ -81,7 +81,7 @@ async function copyToProblem() {
} }
const contestID = submission.value!.contest const contestID = submission.value!.contest
const problemSetId = <string>route.params.problemSetId ?? "" const problemSetId = (route.params.problemSetId as string) ?? ""
if (contestID) { if (contestID) {
// 竞赛题目 // 竞赛题目
router.push({ router.push({

View File

@@ -103,7 +103,7 @@ async function listSubmissions() {
...query, ...query,
offset, offset,
problem_id: query.problem, problem_id: query.problem,
contest_id: <string>route.params.contestID ?? "", contest_id: (route.params.contestID as string) ?? "",
language: query.language, language: query.language,
today: query.today, today: query.today,
}) })

View File

@@ -93,7 +93,7 @@ function groupBadgesByIcon(badges: UserBadgeType[]): GroupedBadge[] {
async function init() { async function init() {
toggle(true) toggle(true)
try { try {
const res = await getProfile(<string>route.query.name) const res = await getProfile(route.query.name as string)
profile.value = res.data profile.value = res.data
const acm = res.data.acm_problems_status.problems || {} const acm = res.data.acm_problems_status.problems || {}
const oi = res.data.oi_problems_status.problems || {} const oi = res.data.oi_problems_status.problems || {}
@@ -114,7 +114,7 @@ async function init() {
} }
if (route.query.name) { if (route.query.name) {
promises.push(getUserBadges(<string>route.query.name)) promises.push(getUserBadges(route.query.name as string))
} else { } else {
promises.push(getUserBadges()) promises.push(getUserBadges())
} }

View File

@@ -26,7 +26,7 @@ import { useBreakpoints } from "shared/composables/breakpoints"
const route = useRoute() const route = useRoute()
const { isMobile } = useBreakpoints() const { isMobile } = useBreakpoints()
const hiddenICP = computed(() => const hiddenICP = computed(() =>
["problem", "contest problem"].includes(<string>route.name), ["problem", "contest problem"].includes(route.name as string),
) )
function goICP() { function goICP() {