Compare commits
9 Commits
59f3747496
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ecb91f5ca8 | |||
| 7d8eff4ee8 | |||
| 67a44d7637 | |||
| b05423bd89 | |||
| 99603ce87e | |||
| 4c9d379d0c | |||
| da75f50798 | |||
| ed3e9322b2 | |||
| 97917164ea |
1
.browserslistrc
Normal file
1
.browserslistrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
chrome >= 90
|
||||||
2
.github/workflows/deploy.yml
vendored
2
.github/workflows/deploy.yml
vendored
@@ -29,7 +29,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 24
|
node-version: 24
|
||||||
cache: npm
|
cache: npm
|
||||||
- run: npm ci
|
- run: npm install
|
||||||
- run: npm run ${{ matrix.build_command }}
|
- run: npm run ${{ matrix.build_command }}
|
||||||
env:
|
env:
|
||||||
CI: false
|
CI: false
|
||||||
|
|||||||
584
package-lock.json
generated
584
package-lock.json
generated
@@ -8,7 +8,7 @@
|
|||||||
"name": "oj-next",
|
"name": "oj-next",
|
||||||
"version": "1.8.0",
|
"version": "1.8.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/autocomplete": "^6.20.1",
|
"@codemirror/autocomplete": "^6.20.2",
|
||||||
"@codemirror/lang-cpp": "^6.0.3",
|
"@codemirror/lang-cpp": "^6.0.3",
|
||||||
"@codemirror/lang-python": "^6.2.1",
|
"@codemirror/lang-python": "^6.2.1",
|
||||||
"@vue-flow/background": "^1.3.2",
|
"@vue-flow/background": "^1.3.2",
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"pinia": "^3.0.4",
|
"pinia": "^3.0.4",
|
||||||
"skulpt": "^1.2.0",
|
"skulpt": "^1.2.0",
|
||||||
"vue": "^3.5.33",
|
"vue": "^3.5.34",
|
||||||
"vue-chartjs": "^5.3.3",
|
"vue-chartjs": "^5.3.3",
|
||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
"vue-router": "^5.0.6",
|
"vue-router": "^5.0.6",
|
||||||
@@ -45,11 +45,12 @@
|
|||||||
"yjs": "^13.6.30"
|
"yjs": "^13.6.30"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify/vue": "^5.0.0",
|
"@iconify/vue": "^5.0.1",
|
||||||
"@rsbuild/core": "^2.0.3",
|
"@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",
|
||||||
@@ -113,9 +114,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.29.2",
|
"version": "7.29.3",
|
||||||
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.2.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz",
|
||||||
"integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
|
"integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/types": "^7.29.0"
|
"@babel/types": "^7.29.0"
|
||||||
@@ -193,9 +194,9 @@
|
|||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/@codemirror/autocomplete": {
|
"node_modules/@codemirror/autocomplete": {
|
||||||
"version": "6.20.1",
|
"version": "6.20.2",
|
||||||
"resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz",
|
"resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.2.tgz",
|
||||||
"integrity": "sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A==",
|
"integrity": "sha512-G5FPkgIiLjOgZMjqVjvuKQ1rGPtHogLldJr33eFJdVLtmwY+giGrlv/ewljLz6b9BSQLkjxuwBc6g6omDM+YxQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/language": "^6.0.0",
|
"@codemirror/language": "^6.0.0",
|
||||||
@@ -636,9 +637,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@iconify/vue": {
|
"node_modules/@iconify/vue": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.1",
|
||||||
"resolved": "https://registry.npmmirror.com/@iconify/vue/-/vue-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-5.0.1.tgz",
|
||||||
"integrity": "sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg==",
|
"integrity": "sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -648,7 +649,7 @@
|
|||||||
"url": "https://github.com/sponsors/cyberalien"
|
"url": "https://github.com/sponsors/cyberalien"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"vue": ">=3"
|
"vue": ">=3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jridgewell/gen-mapping": {
|
"node_modules/@jridgewell/gen-mapping": {
|
||||||
@@ -900,34 +901,9 @@
|
|||||||
"langium": "^4.0.0"
|
"langium": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rsbuild/core": {
|
"node_modules/@napi-rs/wasm-runtime": {
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rsbuild/core/-/core-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-2myp7jUgGen50saxW8OJD/eMVKp7HnuBN5MUzwRb6mDbRZZVpoorfI4LQqiGSBNjGLB6jltvx/R2yHmcmnchwg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@rspack/core": "~2.0.1",
|
|
||||||
"@swc/helpers": "^0.5.21"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"rsbuild": "bin/rsbuild.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^20.19.0 || >=22.12.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"core-js": ">= 3.0.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"core-js": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@napi-rs/wasm-runtime": {
|
|
||||||
"version": "1.1.4",
|
"version": "1.1.4",
|
||||||
"resolved": "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
|
||||||
"integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
|
"integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -944,188 +920,28 @@
|
|||||||
"@emnapi/runtime": "^1.7.1"
|
"@emnapi/runtime": "^1.7.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding": {
|
"node_modules/@rsbuild/core": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding/-/binding-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-2.0.5.tgz",
|
||||||
"integrity": "sha512-ynV1gw4KqFtQ0P+ZZh76SUj49wBb2FuHW3zSmHverHWuxBhzvrZS6/dZ+fCFQG8bTTPtrPz0RQUTN3uEDbPVBQ==",
|
"integrity": "sha512-KajO50hbXb32S8MsyDh2f+xKcVeRy9Gfzdcy0JjpMLj22djHugly6jrGo7jH7ls9X6/TDcyCTncSuNK4+D2lTw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optionalDependencies": {
|
"peer": true,
|
||||||
"@rspack/binding-darwin-arm64": "2.0.1",
|
|
||||||
"@rspack/binding-darwin-x64": "2.0.1",
|
|
||||||
"@rspack/binding-linux-arm64-gnu": "2.0.1",
|
|
||||||
"@rspack/binding-linux-arm64-musl": "2.0.1",
|
|
||||||
"@rspack/binding-linux-x64-gnu": "2.0.1",
|
|
||||||
"@rspack/binding-linux-x64-musl": "2.0.1",
|
|
||||||
"@rspack/binding-wasm32-wasi": "2.0.1",
|
|
||||||
"@rspack/binding-win32-arm64-msvc": "2.0.1",
|
|
||||||
"@rspack/binding-win32-ia32-msvc": "2.0.1",
|
|
||||||
"@rspack/binding-win32-x64-msvc": "2.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-darwin-arm64": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-CGFO5zmajD1Itch1lxAI7+gvKiagzyqXopHv/jHG9Su2WWQ2/Nhn2/rkSpdp6ptE9ri6+6tCOOahf099/v/Xog==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-darwin-x64": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-2vvBNBoS09/PurupBwSrlTZd8283o00B8v20ncsNUdEff41uCR/hzIrYoTIVWnVST+Gt5O1+cfcfORp397lajg==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"darwin"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-arm64-gnu": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-uvNXk6ahE3AH3h2avnd1Mgno68YQpS4cfX1OkOGWIC/roL+NrOP2XVXV4yfVAoydPALDO7AfbIfN0QdmBK3rsA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-arm64-musl": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-S/a6uN9PiZ5O/PjSqyIXhuRC1lVzeJkJV69NeLk5sIEUiDQ/aQGZG97uN+tluwpbo1tPbLJkdHYETfjspOX4Pg==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-x64-gnu": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-C13Kk0OkZiocZVj187Sf753UH6pDXnuEu6vzUvi3qv9ltibG1ki0H2Y8isXBYL2cHQOV+hk0g1S6/4z3TTB97A==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-linux-x64-musl": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-TQsiBFpEDGkuvK9tNdGj/Uc+AIytzqhxXH/1jKU6M24cWB1DTw/Cx7DdrkCBDyq3129K3POLdujvbWCGqBzQUw==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"linux"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-wasm32-wasi": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-wk3gyUgBW/ayP49bI54bkY8+EQnfBHxdoe9dz3oobSTZQc8AOWwmUUDEPltW8rUvPOM6dfHECTOUMnfaf2f5yA==",
|
|
||||||
"cpu": [
|
|
||||||
"wasm32"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@emnapi/core": "1.10.0",
|
"@rspack/core": "~2.0.2",
|
||||||
"@emnapi/runtime": "1.10.0",
|
"@swc/helpers": "^0.5.21"
|
||||||
"@napi-rs/wasm-runtime": "1.1.4"
|
},
|
||||||
}
|
"bin": {
|
||||||
},
|
"rsbuild": "bin/rsbuild.js"
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-win32-arm64-msvc": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-rHjLcy3VcAC3+x+PxH+gwhwv6tPe0JdXTNT5eAOs9wgZIM6T9p4wre49+K4Qy98+Fb7TTbLX0ObUitlOkGwTSA==",
|
|
||||||
"cpu": [
|
|
||||||
"arm64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-win32-ia32-msvc": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-Ad1vVqMBBnd4T8rsORngu9sl2kyRTlS4kMlvFudjzl1X2UFArEDBe0YVGNN7ZvahM12CErUx2WiN8Sd8pb+qXQ==",
|
|
||||||
"cpu": [
|
|
||||||
"ia32"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/binding-win32-x64-msvc": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-oPM2Jtm7HOlmxl/aBfleAVlL6t9VeHx6WvEets7BBJMInemFXAQd4CErRqybf7rXutACzLeUWBOue4Jpd1/ykw==",
|
|
||||||
"cpu": [
|
|
||||||
"x64"
|
|
||||||
],
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"optional": true,
|
|
||||||
"os": [
|
|
||||||
"win32"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"node_modules/@rsbuild/core/node_modules/@rspack/core": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@rspack/core/-/core-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-lgfZiExh8kDR/3obgi3RQKwKG5av1Xf5qDN1aVde777W9pbmx0Pqvrww1qtNvJ+gobEjbrrn5HEZWYGe0VLmcA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@rspack/binding": "2.0.1"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^20.19.0 || >=22.12.0"
|
"node": "^20.19.0 || >=22.12.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@module-federation/runtime-tools": "^0.24.1 || ^2.0.0",
|
"core-js": ">= 3.0.0"
|
||||||
"@swc/helpers": ">=0.5.1"
|
|
||||||
},
|
},
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
"@module-federation/runtime-tools": {
|
"core-js": {
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@swc/helpers": {
|
|
||||||
"optional": true
|
"optional": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1148,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",
|
||||||
@@ -1157,11 +1159,10 @@
|
|||||||
},
|
},
|
||||||
"node_modules/@swc/helpers": {
|
"node_modules/@swc/helpers": {
|
||||||
"version": "0.5.21",
|
"version": "0.5.21",
|
||||||
"resolved": "https://registry.npmmirror.com/@swc/helpers/-/helpers-0.5.21.tgz",
|
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz",
|
||||||
"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"
|
||||||
}
|
}
|
||||||
@@ -1174,7 +1175,7 @@
|
|||||||
},
|
},
|
||||||
"node_modules/@tybys/wasm-util": {
|
"node_modules/@tybys/wasm-util": {
|
||||||
"version": "0.10.2",
|
"version": "0.10.2",
|
||||||
"resolved": "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
|
||||||
"integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
|
"integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -1834,13 +1835,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-core": {
|
"node_modules/@vue/compiler-core": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.34.tgz",
|
||||||
"integrity": "sha512-3PZLQwFw4Za3TC8t0FvTy3wI16Kt+pmwcgNZca4Pj9iWL2E72a/gZlpBtAJvEdDMdCxdG/qq0C7PN0bsJuv0Rw==",
|
"integrity": "sha512-s9cLyK5mLcvZ4Agva5QgRsQyLKvts9WbU9DB6NqiZkkGEdwmcEiylj5Jbwkp680drF/NNCV8OlAJSe+yMLxaJw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/parser": "^7.29.2",
|
"@babel/parser": "^7.29.3",
|
||||||
"@vue/shared": "3.5.33",
|
"@vue/shared": "3.5.34",
|
||||||
"entities": "^7.0.1",
|
"entities": "^7.0.1",
|
||||||
"estree-walker": "^2.0.2",
|
"estree-walker": "^2.0.2",
|
||||||
"source-map-js": "^1.2.1"
|
"source-map-js": "^1.2.1"
|
||||||
@@ -1865,29 +1866,29 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-dom": {
|
"node_modules/@vue/compiler-dom": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.34.tgz",
|
||||||
"integrity": "sha512-PXq0yrfCLzzL07rbXO4awtXY1Z06LG2eu6Adg3RJFa/j3Cii217XxxLXG22N330gw7GmALCY0Z8RgXEviwgpjA==",
|
"integrity": "sha512-EbF/T++k0e2MMZlJsBhzK8Sgwt0HcIPOhzn1CTB/lv6sQcyk+OWf8YeiLxZp3ro7MbbLcAfAJ6sEvjFWuNgUCw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-core": "3.5.33",
|
"@vue/compiler-core": "3.5.34",
|
||||||
"@vue/shared": "3.5.33"
|
"@vue/shared": "3.5.34"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-sfc": {
|
"node_modules/@vue/compiler-sfc": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.34.tgz",
|
||||||
"integrity": "sha512-UTUvRO9cY+rROrx/pvN9P5Z7FgA6QGfokUCfhQE4EnmUj3rVnK+CHI0LsEO1pg+I7//iRYMUfcNcCPe7tg0CoA==",
|
"integrity": "sha512-D/ihr6uZeIt6r+pVZf46RWT1fAsLFMbUP7k8G1VkiiWexriED9GrX3echHd4Abbt17zjlfiFJ8z7a3BxZOPNjg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/parser": "^7.29.2",
|
"@babel/parser": "^7.29.3",
|
||||||
"@vue/compiler-core": "3.5.33",
|
"@vue/compiler-core": "3.5.34",
|
||||||
"@vue/compiler-dom": "3.5.33",
|
"@vue/compiler-dom": "3.5.34",
|
||||||
"@vue/compiler-ssr": "3.5.33",
|
"@vue/compiler-ssr": "3.5.34",
|
||||||
"@vue/shared": "3.5.33",
|
"@vue/shared": "3.5.34",
|
||||||
"estree-walker": "^2.0.2",
|
"estree-walker": "^2.0.2",
|
||||||
"magic-string": "^0.30.21",
|
"magic-string": "^0.30.21",
|
||||||
"postcss": "^8.5.10",
|
"postcss": "^8.5.14",
|
||||||
"source-map-js": "^1.2.1"
|
"source-map-js": "^1.2.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1898,13 +1899,13 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@vue/compiler-ssr": {
|
"node_modules/@vue/compiler-ssr": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.34.tgz",
|
||||||
"integrity": "sha512-IErjYdnj1qIupG5xxiVIYiiRvDhGWV4zuh/RCrwfYpuL+HWQzeU6lCk/nF9r7olWMnjKxCAkOctT2qFWFkzb1A==",
|
"integrity": "sha512-cDtTHKibkThKGHH1SP+WdccquNRYQDFH6rRjQCqT9G2ltFAfoR5pUftpab/z+aM5mW9HLLVQW7hfKKQe/1GBeQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-dom": "3.5.33",
|
"@vue/compiler-dom": "3.5.34",
|
||||||
"@vue/shared": "3.5.33"
|
"@vue/shared": "3.5.34"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/devtools-api": {
|
"node_modules/@vue/devtools-api": {
|
||||||
@@ -1941,53 +1942,53 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/reactivity": {
|
"node_modules/@vue/reactivity": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.34.tgz",
|
||||||
"integrity": "sha512-p8UfIqyIhb0rYGlSgSBV+lPhF2iUSBcRy7enhTmPqKWadHy9kcOFYF1AejYBP9P+avnd3OBbD49DU4pLWX/94A==",
|
"integrity": "sha512-y9XDjCEuBp+98k+UL5dbYkh57AHU4o6cxZedOPXw3bmrZZYLQsVHguGurq7hVrPCSrQtrnz1f9dssyFr+dMXfQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/shared": "3.5.33"
|
"@vue/shared": "3.5.34"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/runtime-core": {
|
"node_modules/@vue/runtime-core": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.34.tgz",
|
||||||
"integrity": "sha512-UpFF45RI9//a7rvq7RdOQblb4tup7hHG9QsmIrxkFQLzQ7R8/iNQ5LE15NhLZ1/WcHMU2b47u6P33CPUelHyIQ==",
|
"integrity": "sha512-mKeBYvu8tcMSLhypAHBmriUFfWXKTCF/23Z4jiCoYK3UtWepkliViNLuR90V9XOyD62mUxs9p1jsrpK3CCGIzw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/reactivity": "3.5.33",
|
"@vue/reactivity": "3.5.34",
|
||||||
"@vue/shared": "3.5.33"
|
"@vue/shared": "3.5.34"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/runtime-dom": {
|
"node_modules/@vue/runtime-dom": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.34.tgz",
|
||||||
"integrity": "sha512-IOxMsAOwquhfITgmOgaPYl7/j8gKUxUFoflRc+u4LxyD3+783xne8vNta1PONVCvCV9A0w7hkyEepINDqfO0tw==",
|
"integrity": "sha512-e8kZzERmCwUnBRVsgSQlAfrfU2rGoy0FFKPBXSlfEjc/O3KfA7QP0t1/2ZylrbchjmIKB4dPTd07A6WPr0eOrg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/reactivity": "3.5.33",
|
"@vue/reactivity": "3.5.34",
|
||||||
"@vue/runtime-core": "3.5.33",
|
"@vue/runtime-core": "3.5.34",
|
||||||
"@vue/shared": "3.5.33",
|
"@vue/shared": "3.5.34",
|
||||||
"csstype": "^3.2.3"
|
"csstype": "^3.2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/server-renderer": {
|
"node_modules/@vue/server-renderer": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.34.tgz",
|
||||||
"integrity": "sha512-0xylq/8/h44lVG0pZFknv1XIdEgymq2E9n59uTWJBG+dIgiT0TMCSsxrN7nO16Z0MU0MPjFcguBbZV8Itk52Hw==",
|
"integrity": "sha512-nHxmJoTrKsmrkbILRhkC9gY1G3moZbJTqCzDd7DOOzG5KH9oeJ0Unqrff5f9v0pW//jES05ZkJcNtfE8JjOIew==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-ssr": "3.5.33",
|
"@vue/compiler-ssr": "3.5.34",
|
||||||
"@vue/shared": "3.5.33"
|
"@vue/shared": "3.5.34"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"vue": "3.5.33"
|
"vue": "3.5.34"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vue/shared": {
|
"node_modules/@vue/shared": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.34.tgz",
|
||||||
"integrity": "sha512-5vR2QIlmaLG77Ygd4pMP6+SGQ5yox9VhtnbDWTy9DzMzdmeLxZ1QqxrywEZ9sa1AVubfIJyaCG3ytyWU81ufcQ==",
|
"integrity": "sha512-24uqU4OIiX29ryC3MeWid/Xf2fa2EFRUVLb77nRhk+UrTVrh/XiGtFAFmJBAtBRbjwNdsPRP+jj/OL27Eg1NDA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/core": {
|
"node_modules/@vueuse/core": {
|
||||||
@@ -2537,6 +2538,19 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/core-js": {
|
||||||
|
"version": "3.49.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz",
|
||||||
|
"integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/core-js"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/cose-base": {
|
"node_modules/cose-base": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz",
|
||||||
@@ -4056,6 +4070,19 @@
|
|||||||
"uuid": "^11.1.0"
|
"uuid": "^11.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/mermaid/node_modules/uuid": {
|
||||||
|
"version": "11.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz",
|
||||||
|
"integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==",
|
||||||
|
"funding": [
|
||||||
|
"https://github.com/sponsors/broofa",
|
||||||
|
"https://github.com/sponsors/ctavan"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"uuid": "dist/esm/bin/uuid"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/mime-db": {
|
"node_modules/mime-db": {
|
||||||
"version": "1.52.0",
|
"version": "1.52.0",
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||||
@@ -4956,19 +4983,6 @@
|
|||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/uuid": {
|
|
||||||
"version": "14.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz",
|
|
||||||
"integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==",
|
|
||||||
"funding": [
|
|
||||||
"https://github.com/sponsors/broofa",
|
|
||||||
"https://github.com/sponsors/ctavan"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"bin": {
|
|
||||||
"uuid": "dist-node/bin/uuid"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/vdirs": {
|
"node_modules/vdirs": {
|
||||||
"version": "0.1.8",
|
"version": "0.1.8",
|
||||||
"resolved": "https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz",
|
"resolved": "https://registry.npmmirror.com/vdirs/-/vdirs-0.1.8.tgz",
|
||||||
@@ -5043,17 +5057,17 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/vue": {
|
"node_modules/vue": {
|
||||||
"version": "3.5.33",
|
"version": "3.5.34",
|
||||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.33.tgz",
|
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.34.tgz",
|
||||||
"integrity": "sha512-1AgChhx5w3ALgT4oK3acm2Es/7jyZhWSVUfs3rOBlGQC0rjEDkS7G4lWlJJGGNQD+BV3reCwbQrOe1mPNwKHBQ==",
|
"integrity": "sha512-WdLBG9gm02OgJIG9axd5Hpx0TFLdzVgfG2evFFu8Rur5O/IoGc5cMjnjh3tPL6GnRGsYvUhBSKVPYVcxRKpMCA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/compiler-dom": "3.5.33",
|
"@vue/compiler-dom": "3.5.34",
|
||||||
"@vue/compiler-sfc": "3.5.33",
|
"@vue/compiler-sfc": "3.5.34",
|
||||||
"@vue/runtime-dom": "3.5.33",
|
"@vue/runtime-dom": "3.5.34",
|
||||||
"@vue/server-renderer": "3.5.33",
|
"@vue/server-renderer": "3.5.34",
|
||||||
"@vue/shared": "3.5.33"
|
"@vue/shared": "3.5.34"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"typescript": "*"
|
"typescript": "*"
|
||||||
|
|||||||
17
package.json
17
package.json
@@ -9,16 +9,8 @@
|
|||||||
"build:test": "rsbuild build --env-mode=test",
|
"build:test": "rsbuild build --env-mode=test",
|
||||||
"fmt": "prettier --write src *.ts"
|
"fmt": "prettier --write src *.ts"
|
||||||
},
|
},
|
||||||
"overrides": {
|
|
||||||
"dompurify": "3.4.2",
|
|
||||||
"lodash": "4.18.1",
|
|
||||||
"lodash-es": "4.18.1",
|
|
||||||
"picomatch": "4.0.4",
|
|
||||||
"uuid": "14.0.0",
|
|
||||||
"yaml": "2.8.4"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/autocomplete": "^6.20.1",
|
"@codemirror/autocomplete": "^6.20.2",
|
||||||
"@codemirror/lang-cpp": "^6.0.3",
|
"@codemirror/lang-cpp": "^6.0.3",
|
||||||
"@codemirror/lang-python": "^6.2.1",
|
"@codemirror/lang-python": "^6.2.1",
|
||||||
"@vue-flow/background": "^1.3.2",
|
"@vue-flow/background": "^1.3.2",
|
||||||
@@ -46,7 +38,7 @@
|
|||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"pinia": "^3.0.4",
|
"pinia": "^3.0.4",
|
||||||
"skulpt": "^1.2.0",
|
"skulpt": "^1.2.0",
|
||||||
"vue": "^3.5.33",
|
"vue": "^3.5.34",
|
||||||
"vue-chartjs": "^5.3.3",
|
"vue-chartjs": "^5.3.3",
|
||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
"vue-router": "^5.0.6",
|
"vue-router": "^5.0.6",
|
||||||
@@ -55,11 +47,12 @@
|
|||||||
"yjs": "^13.6.30"
|
"yjs": "^13.6.30"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify/vue": "^5.0.0",
|
"@iconify/vue": "^5.0.1",
|
||||||
"@rsbuild/core": "^2.0.3",
|
"@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",
|
||||||
|
|||||||
@@ -24,16 +24,6 @@ const config: ReturnType<typeof defineConfig> = defineConfig(({ envMode }) => {
|
|||||||
return {
|
return {
|
||||||
plugins: [pluginVue()],
|
plugins: [pluginVue()],
|
||||||
tools: {
|
tools: {
|
||||||
swc: {
|
|
||||||
detectSyntax: false,
|
|
||||||
jsc: {
|
|
||||||
parser: {
|
|
||||||
decorators: true,
|
|
||||||
syntax: "typescript",
|
|
||||||
tsx: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
rspack: {
|
rspack: {
|
||||||
plugins: [
|
plugins: [
|
||||||
AutoImport({
|
AutoImport({
|
||||||
@@ -84,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: {
|
||||||
@@ -96,6 +85,7 @@ const config: ReturnType<typeof defineConfig> = defineConfig(({ envMode }) => {
|
|||||||
admin: "./src/admin",
|
admin: "./src/admin",
|
||||||
shared: "./src/shared",
|
shared: "./src/shared",
|
||||||
},
|
},
|
||||||
|
dedupe: ["slate", "slate-dom", "slate-react", "is-hotkey"],
|
||||||
},
|
},
|
||||||
server: {
|
server: {
|
||||||
port: 5173,
|
port: 5173,
|
||||||
|
|||||||
@@ -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") {
|
||||||
|
|||||||
@@ -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") {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -136,7 +136,6 @@ async function getProblemDetail() {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
const { data } = await getProblem(props.problemID)
|
const { data } = await getProblem(props.problemID)
|
||||||
toggleReady(true)
|
|
||||||
problem.value.id = data.id
|
problem.value.id = data.id
|
||||||
problem.value._id = data._id
|
problem.value._id = data._id
|
||||||
problem.value.title = data.title
|
problem.value.title = data.title
|
||||||
@@ -189,6 +188,7 @@ async function getProblemDetail() {
|
|||||||
})
|
})
|
||||||
// 标签
|
// 标签
|
||||||
tags.value.select = data.tags
|
tags.value.select = data.tags
|
||||||
|
toggleReady(true)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error("获取题目失败")
|
message.error("获取题目失败")
|
||||||
router.push({ name: "admin problem list" })
|
router.push({ name: "admin problem list" })
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -10,6 +10,26 @@ body {
|
|||||||
--md-theme-color: var(--n-text-color) !important;
|
--md-theme-color: var(--n-text-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-surface {
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 18px;
|
||||||
|
overflow: auto;
|
||||||
|
border: 1px solid rgba(148, 163, 184, 0.24);
|
||||||
|
border-radius: 8px;
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(148, 163, 184, 0.08) 1px, transparent 1px),
|
||||||
|
linear-gradient(90deg, rgba(148, 163, 184, 0.08) 1px, transparent 1px),
|
||||||
|
linear-gradient(135deg, #ffffff 0%, #f8fafc 52%, #eef6ff 100%);
|
||||||
|
background-size:
|
||||||
|
24px 24px,
|
||||||
|
24px 24px,
|
||||||
|
auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-surface > svg {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
::view-transition-old(root),
|
::view-transition-old(root),
|
||||||
::view-transition-new(root) {
|
::view-transition-new(root) {
|
||||||
animation: none;
|
animation: none;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -72,15 +72,19 @@ export function useMermaidConverter() {
|
|||||||
// 添加样式定义来区分不同类型的节点
|
// 添加样式定义来区分不同类型的节点
|
||||||
mermaid += "\n"
|
mermaid += "\n"
|
||||||
mermaid +=
|
mermaid +=
|
||||||
" classDef startEnd fill:#e1f5fe,stroke:#01579b,stroke-width:2px\n"
|
" classDef startNode fill:#dcfce7,stroke:#16a34a,stroke-width:2.5px,color:#0f172a\n"
|
||||||
mermaid +=
|
mermaid +=
|
||||||
" classDef input fill:#e3f2fd,stroke:#1976d2,stroke-width:2px\n"
|
" classDef endNode fill:#fee2e2,stroke:#dc2626,stroke-width:2.5px,color:#0f172a\n"
|
||||||
mermaid +=
|
mermaid +=
|
||||||
" classDef output fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px\n"
|
" classDef input fill:#dbeafe,stroke:#2563eb,stroke-width:2.5px,color:#0f172a\n"
|
||||||
mermaid +=
|
mermaid +=
|
||||||
" classDef process fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px\n"
|
" classDef output fill:#ede9fe,stroke:#7c3aed,stroke-width:2.5px,color:#0f172a\n"
|
||||||
mermaid +=
|
mermaid +=
|
||||||
" classDef decision fill:#fff3e0,stroke:#e65100,stroke-width:2px\n"
|
" classDef process fill:#f0f9ff,stroke:#0284c7,stroke-width:2.5px,color:#0f172a\n"
|
||||||
|
mermaid +=
|
||||||
|
" classDef decision fill:#fef3c7,stroke:#d97706,stroke-width:2.5px,color:#0f172a\n"
|
||||||
|
mermaid +=
|
||||||
|
" classDef loop fill:#fae8ff,stroke:#c026d3,stroke-width:2.5px,color:#0f172a\n"
|
||||||
mermaid += "\n"
|
mermaid += "\n"
|
||||||
|
|
||||||
// 为节点应用样式
|
// 为节点应用样式
|
||||||
@@ -90,8 +94,10 @@ export function useMermaidConverter() {
|
|||||||
|
|
||||||
switch (originalType) {
|
switch (originalType) {
|
||||||
case "start":
|
case "start":
|
||||||
|
mermaid += ` class ${nodeId} startNode\n`
|
||||||
|
break
|
||||||
case "end":
|
case "end":
|
||||||
mermaid += ` class ${nodeId} startEnd\n`
|
mermaid += ` class ${nodeId} endNode\n`
|
||||||
break
|
break
|
||||||
case "input":
|
case "input":
|
||||||
mermaid += ` class ${nodeId} input\n`
|
mermaid += ` class ${nodeId} input\n`
|
||||||
@@ -100,9 +106,11 @@ export function useMermaidConverter() {
|
|||||||
mermaid += ` class ${nodeId} output\n`
|
mermaid += ` class ${nodeId} output\n`
|
||||||
break
|
break
|
||||||
case "decision":
|
case "decision":
|
||||||
case "loop":
|
|
||||||
mermaid += ` class ${nodeId} decision\n`
|
mermaid += ` class ${nodeId} decision\n`
|
||||||
break
|
break
|
||||||
|
case "loop":
|
||||||
|
mermaid += ` class ${nodeId} loop\n`
|
||||||
|
break
|
||||||
default:
|
default:
|
||||||
mermaid += ` class ${nodeId} process\n`
|
mermaid += ` class ${nodeId} process\n`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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({
|
||||||
|
|||||||
@@ -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,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -1,5 +1,236 @@
|
|||||||
import { getRandomId } from "utils/functions"
|
import { getRandomId } from "utils/functions"
|
||||||
|
|
||||||
|
const mermaidThemeVariables = {
|
||||||
|
primaryColor: "#e0f2fe",
|
||||||
|
primaryTextColor: "#0f172a",
|
||||||
|
primaryBorderColor: "#0284c7",
|
||||||
|
lineColor: "#64748b",
|
||||||
|
secondaryColor: "#f5f3ff",
|
||||||
|
tertiaryColor: "#ecfdf5",
|
||||||
|
background: "#ffffff",
|
||||||
|
mainBkg: "#f8fafc",
|
||||||
|
secondBkg: "#eef2ff",
|
||||||
|
tertiaryBkg: "#f0fdfa",
|
||||||
|
nodeBorder: "#2563eb",
|
||||||
|
clusterBkg: "#f8fafc",
|
||||||
|
clusterBorder: "#cbd5e1",
|
||||||
|
edgeLabelBackground: "#ffffff",
|
||||||
|
fontFamily:
|
||||||
|
'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
|
||||||
|
}
|
||||||
|
|
||||||
|
const semanticNodeClasses = [
|
||||||
|
"startNode",
|
||||||
|
"endNode",
|
||||||
|
"startEnd",
|
||||||
|
"input",
|
||||||
|
"output",
|
||||||
|
"process",
|
||||||
|
"decision",
|
||||||
|
"loop",
|
||||||
|
]
|
||||||
|
|
||||||
|
const displayStyleId = "oj-mermaid-display-style"
|
||||||
|
|
||||||
|
const mermaidDisplayStyle = `
|
||||||
|
.oj-mermaid-flowchart {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node rect,
|
||||||
|
.oj-mermaid-flowchart g.node polygon,
|
||||||
|
.oj-mermaid-flowchart g.node ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node circle,
|
||||||
|
.oj-mermaid-flowchart g.node path {
|
||||||
|
stroke-width: 2.5px !important;
|
||||||
|
filter: drop-shadow(0 6px 12px rgba(15, 23, 42, 0.12));
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.startNode rect,
|
||||||
|
.oj-mermaid-flowchart g.node.startNode polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.startNode ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.startNode circle,
|
||||||
|
.oj-mermaid-flowchart g.node.startNode path,
|
||||||
|
.oj-mermaid-flowchart g.node.startEnd rect,
|
||||||
|
.oj-mermaid-flowchart g.node.startEnd polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.startEnd ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.startEnd circle,
|
||||||
|
.oj-mermaid-flowchart g.node.startEnd path {
|
||||||
|
fill: #dcfce7 !important;
|
||||||
|
stroke: #16a34a !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.endNode rect,
|
||||||
|
.oj-mermaid-flowchart g.node.endNode polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.endNode ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.endNode circle,
|
||||||
|
.oj-mermaid-flowchart g.node.endNode path {
|
||||||
|
fill: #fee2e2 !important;
|
||||||
|
stroke: #dc2626 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.input rect,
|
||||||
|
.oj-mermaid-flowchart g.node.input polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.input ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.input circle,
|
||||||
|
.oj-mermaid-flowchart g.node.input path {
|
||||||
|
fill: #dbeafe !important;
|
||||||
|
stroke: #2563eb !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.output rect,
|
||||||
|
.oj-mermaid-flowchart g.node.output polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.output ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.output circle,
|
||||||
|
.oj-mermaid-flowchart g.node.output path {
|
||||||
|
fill: #ede9fe !important;
|
||||||
|
stroke: #7c3aed !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.process rect,
|
||||||
|
.oj-mermaid-flowchart g.node.process polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.process ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.process circle,
|
||||||
|
.oj-mermaid-flowchart g.node.process path {
|
||||||
|
fill: #f0f9ff !important;
|
||||||
|
stroke: #0284c7 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.decision rect,
|
||||||
|
.oj-mermaid-flowchart g.node.decision polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.decision ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.decision circle,
|
||||||
|
.oj-mermaid-flowchart g.node.decision path {
|
||||||
|
fill: #fef3c7 !important;
|
||||||
|
stroke: #d97706 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.loop rect,
|
||||||
|
.oj-mermaid-flowchart g.node.loop polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.loop ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.loop circle,
|
||||||
|
.oj-mermaid-flowchart g.node.loop path {
|
||||||
|
fill: #fae8ff !important;
|
||||||
|
stroke: #c026d3 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-0 rect,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-0 polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-0 ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-0 circle,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-0 path {
|
||||||
|
fill: #dbeafe !important;
|
||||||
|
stroke: #2563eb !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-1 rect,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-1 polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-1 ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-1 circle,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-1 path {
|
||||||
|
fill: #ccfbf1 !important;
|
||||||
|
stroke: #0d9488 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-2 rect,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-2 polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-2 ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-2 circle,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-2 path {
|
||||||
|
fill: #ede9fe !important;
|
||||||
|
stroke: #7c3aed !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-3 rect,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-3 polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-3 ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-3 circle,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-3 path {
|
||||||
|
fill: #ffe4e6 !important;
|
||||||
|
stroke: #e11d48 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-4 rect,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-4 polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-4 ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-4 circle,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-4 path {
|
||||||
|
fill: #fef3c7 !important;
|
||||||
|
stroke: #d97706 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-5 rect,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-5 polygon,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-5 ellipse,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-5 circle,
|
||||||
|
.oj-mermaid-flowchart g.node.oj-node-palette-5 path {
|
||||||
|
fill: #dcfce7 !important;
|
||||||
|
stroke: #16a34a !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart g.node .label,
|
||||||
|
.oj-mermaid-flowchart g.node .nodeLabel,
|
||||||
|
.oj-mermaid-flowchart g.node .nodeLabel p,
|
||||||
|
.oj-mermaid-flowchart g.node .label span {
|
||||||
|
color: #0f172a !important;
|
||||||
|
fill: #0f172a !important;
|
||||||
|
font-weight: 650 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart .edgePaths path.path,
|
||||||
|
.oj-mermaid-flowchart .flowchart-link {
|
||||||
|
stroke: #64748b !important;
|
||||||
|
stroke-width: 2.4px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart marker path,
|
||||||
|
.oj-mermaid-flowchart .marker {
|
||||||
|
fill: #64748b !important;
|
||||||
|
stroke: #64748b !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart .edgeLabel rect,
|
||||||
|
.oj-mermaid-flowchart .edgeLabel .labelBkg {
|
||||||
|
fill: rgba(255, 255, 255, 0.94) !important;
|
||||||
|
stroke: #cbd5e1 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.oj-mermaid-flowchart .edgeLabel,
|
||||||
|
.oj-mermaid-flowchart .edgeLabel span,
|
||||||
|
.oj-mermaid-flowchart .edgeLabel p {
|
||||||
|
color: #334155 !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const svgNamespace = "http://www.w3.org/2000/svg"
|
||||||
|
|
||||||
|
function applyFlowchartDisplayStyle(container: HTMLElement) {
|
||||||
|
container.classList.add("oj-mermaid-surface")
|
||||||
|
|
||||||
|
const svg = container.querySelector("svg")
|
||||||
|
if (!svg) return
|
||||||
|
|
||||||
|
svg.classList.add("oj-mermaid-flowchart")
|
||||||
|
|
||||||
|
const nodes = Array.from(svg.querySelectorAll<SVGGElement>("g.node"))
|
||||||
|
nodes.forEach((node, index) => {
|
||||||
|
const hasSemanticClass = semanticNodeClasses.some((className) =>
|
||||||
|
node.classList.contains(className),
|
||||||
|
)
|
||||||
|
if (!hasSemanticClass) {
|
||||||
|
node.classList.add(`oj-node-palette-${index % 6}`)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
svg.querySelector(`#${displayStyleId}`)?.remove()
|
||||||
|
const style = document.createElementNS(svgNamespace, "style")
|
||||||
|
style.setAttribute("id", displayStyleId)
|
||||||
|
style.textContent = mermaidDisplayStyle
|
||||||
|
svg.insertBefore(style, svg.firstChild)
|
||||||
|
}
|
||||||
|
|
||||||
export function useMermaid() {
|
export function useMermaid() {
|
||||||
// 渲染状态
|
// 渲染状态
|
||||||
const renderError = ref<string | null>(null)
|
const renderError = ref<string | null>(null)
|
||||||
@@ -15,7 +246,8 @@ export function useMermaid() {
|
|||||||
mermaid.initialize({
|
mermaid.initialize({
|
||||||
startOnLoad: false,
|
startOnLoad: false,
|
||||||
securityLevel: "strict",
|
securityLevel: "strict",
|
||||||
theme: "default",
|
theme: "base",
|
||||||
|
themeVariables: mermaidThemeVariables,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return mermaid
|
return mermaid
|
||||||
@@ -37,6 +269,7 @@ export function useMermaid() {
|
|||||||
const id = `mermaid-${getRandomId()}`
|
const id = `mermaid-${getRandomId()}`
|
||||||
const { svg } = await mermaid.render(id, mermaidCode)
|
const { svg } = await mermaid.render(id, mermaidCode)
|
||||||
container.innerHTML = svg
|
container.innerHTML = svg
|
||||||
|
applyFlowchartDisplayStyle(container)
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
renderError.value =
|
renderError.value =
|
||||||
|
|||||||
Reference in New Issue
Block a user