添加挑战
This commit is contained in:
5
components.d.ts
vendored
5
components.d.ts
vendored
@@ -8,11 +8,13 @@ export {}
|
|||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
|
Challenge: typeof import('./src/components/Challenge.vue')['default']
|
||||||
Corner: typeof import('./src/components/Corner.vue')['default']
|
Corner: typeof import('./src/components/Corner.vue')['default']
|
||||||
Editor: typeof import('./src/components/Editor.vue')['default']
|
Editor: typeof import('./src/components/Editor.vue')['default']
|
||||||
Editors: typeof import('./src/components/Editors.vue')['default']
|
Editors: typeof import('./src/components/Editors.vue')['default']
|
||||||
Login: typeof import('./src/components/Login.vue')['default']
|
Login: typeof import('./src/components/Login.vue')['default']
|
||||||
NAlert: typeof import('naive-ui')['NAlert']
|
NAlert: typeof import('naive-ui')['NAlert']
|
||||||
|
NameWithFilter: typeof import('./src/components/submissions/NameWithFilter.vue')['default']
|
||||||
NButton: typeof import('naive-ui')['NButton']
|
NButton: typeof import('naive-ui')['NButton']
|
||||||
NCard: typeof import('naive-ui')['NCard']
|
NCard: typeof import('naive-ui')['NCard']
|
||||||
NCode: typeof import('naive-ui')['NCode']
|
NCode: typeof import('naive-ui')['NCode']
|
||||||
@@ -20,6 +22,7 @@ declare module 'vue' {
|
|||||||
NDataTable: typeof import('naive-ui')['NDataTable']
|
NDataTable: typeof import('naive-ui')['NDataTable']
|
||||||
NDialogProvider: typeof import('naive-ui')['NDialogProvider']
|
NDialogProvider: typeof import('naive-ui')['NDialogProvider']
|
||||||
NDropdown: typeof import('naive-ui')['NDropdown']
|
NDropdown: typeof import('naive-ui')['NDropdown']
|
||||||
|
NEmpty: typeof import('naive-ui')['NEmpty']
|
||||||
NFlex: typeof import('naive-ui')['NFlex']
|
NFlex: typeof import('naive-ui')['NFlex']
|
||||||
NForm: typeof import('naive-ui')['NForm']
|
NForm: typeof import('naive-ui')['NForm']
|
||||||
NFormItem: typeof import('naive-ui')['NFormItem']
|
NFormItem: typeof import('naive-ui')['NFormItem']
|
||||||
@@ -44,8 +47,8 @@ declare module 'vue' {
|
|||||||
Preview: typeof import('./src/components/Preview.vue')['default']
|
Preview: typeof import('./src/components/Preview.vue')['default']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
RouterView: typeof import('vue-router')['RouterView']
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
|
Task: typeof import('./src/components/Task.vue')['default']
|
||||||
TaskTitle: typeof import('./src/components/submissions/TaskTitle.vue')['default']
|
TaskTitle: typeof import('./src/components/submissions/TaskTitle.vue')['default']
|
||||||
Tutorial: typeof import('./src/components/Tutorial.vue')['default']
|
|
||||||
UserActions: typeof import('./src/components/dashboard/UserActions.vue')['default']
|
UserActions: typeof import('./src/components/dashboard/UserActions.vue')['default']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
358
package-lock.json
generated
358
package-lock.json
generated
@@ -11,30 +11,30 @@
|
|||||||
"@codemirror/lang-css": "^6.3.1",
|
"@codemirror/lang-css": "^6.3.1",
|
||||||
"@codemirror/lang-html": "^6.4.9",
|
"@codemirror/lang-html": "^6.4.9",
|
||||||
"@codemirror/lang-javascript": "^6.2.3",
|
"@codemirror/lang-javascript": "^6.2.3",
|
||||||
"@fsegurai/codemirror-theme-github-light": "^6.1.2",
|
"@fsegurai/codemirror-theme-github-light": "^6.1.4",
|
||||||
"@vueuse/core": "^13.0.0",
|
"@vueuse/core": "^13.1.0",
|
||||||
"axios": "^1.8.3",
|
"axios": "^1.9.0",
|
||||||
"codemirror": "^6.0.1",
|
"codemirror": "^6.0.1",
|
||||||
"copy-text-to-clipboard": "^3.2.0",
|
"copy-text-to-clipboard": "^3.2.0",
|
||||||
"github-markdown-css": "^5.8.1",
|
"github-markdown-css": "^5.8.1",
|
||||||
"highlight.js": "^11.11.1",
|
"highlight.js": "^11.11.1",
|
||||||
"marked": "^15.0.7",
|
"marked": "^15.0.11",
|
||||||
"marked-alert": "^2.1.2",
|
"marked-alert": "^2.1.2",
|
||||||
"marked-code-preview": "^1.3.7",
|
"marked-code-preview": "^1.3.7",
|
||||||
"marked-highlight": "^2.2.1",
|
"marked-highlight": "^2.2.1",
|
||||||
"naive-ui": "^2.41.0",
|
"naive-ui": "^2.41.0",
|
||||||
"vue": "^3.5.13",
|
"vue": "^3.5.13",
|
||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
"vue-router": "^4.5.0"
|
"vue-router": "^4.5.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify/vue": "^4.3.0",
|
"@iconify/vue": "^4.3.0",
|
||||||
"@rsbuild/core": "^1.2.19",
|
"@rsbuild/core": "^1.3.13",
|
||||||
"@rsbuild/plugin-vue": "^1.0.7",
|
"@rsbuild/plugin-vue": "^1.0.7",
|
||||||
"@vue/tsconfig": "^0.7.0",
|
"@vue/tsconfig": "^0.7.0",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
"typescript": "^5.8.2",
|
"typescript": "^5.8.3",
|
||||||
"unplugin-vue-components": "^28.4.1"
|
"unplugin-vue-components": "^28.5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-string-parser": {
|
"node_modules/@babel/helper-string-parser": {
|
||||||
@@ -233,9 +233,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@fsegurai/codemirror-theme-github-light": {
|
"node_modules/@fsegurai/codemirror-theme-github-light": {
|
||||||
"version": "6.1.2",
|
"version": "6.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/@fsegurai/codemirror-theme-github-light/-/codemirror-theme-github-light-6.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/@fsegurai/codemirror-theme-github-light/-/codemirror-theme-github-light-6.1.4.tgz",
|
||||||
"integrity": "sha512-B/YvJ4mx1EuY5WvN+RrFd3uHoFhXiTZRDmSVEyctb/pQonKpgkblVN+FvLt9iRfVTJkkyBavjXJzT16ClaZcDg==",
|
"integrity": "sha512-jO/P6j+YhlORYT/dpgV4kg+F3FIDt+CLEwPTBfgQ1a/4ts4uHxoAnTy+jWLdumOVe++pnfl4hdDXJNmLIxkPfw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@codemirror/language": "^6.0.0",
|
"@codemirror/language": "^6.0.0",
|
||||||
@@ -400,65 +400,74 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@module-federation/error-codes": {
|
"node_modules/@module-federation/error-codes": {
|
||||||
"version": "0.8.4",
|
"version": "0.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.13.0.tgz",
|
||||||
"integrity": "sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==",
|
"integrity": "sha512-4soAMLr7qcVWuvCsyRmBbiBfuhxmnDeyl+qzjMx8VurQgL+XQDQJapM9RXngNGT4g8FoCq9o7rM5YWNgFFNUiw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@module-federation/runtime": {
|
"node_modules/@module-federation/runtime": {
|
||||||
"version": "0.8.4",
|
"version": "0.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.13.0.tgz",
|
||||||
"integrity": "sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==",
|
"integrity": "sha512-Ne/3AEVWz6LL6G/i41O5MC6YYlg0SatNNqG/0XbuMAfyGM+llRmB6VKt0o2+JR4isxWuPNp97TbUkkfORit6Eg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@module-federation/error-codes": "0.8.4",
|
"@module-federation/error-codes": "0.13.0",
|
||||||
"@module-federation/sdk": "0.8.4"
|
"@module-federation/runtime-core": "0.13.0",
|
||||||
|
"@module-federation/sdk": "0.13.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@module-federation/runtime-core": {
|
||||||
|
"version": "0.13.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.13.0.tgz",
|
||||||
|
"integrity": "sha512-Oj/1p0mfxZ+8EbU7ND4gMvRmikFpIvPCbblOgat9N8ZIVAKYpTimCgMhzg4yRqAwzlGCVwnnW7XZ8UlA+Zqrvg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@module-federation/error-codes": "0.13.0",
|
||||||
|
"@module-federation/sdk": "0.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@module-federation/runtime-tools": {
|
"node_modules/@module-federation/runtime-tools": {
|
||||||
"version": "0.8.4",
|
"version": "0.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.13.0.tgz",
|
||||||
"integrity": "sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==",
|
"integrity": "sha512-6ECWX18yGrQKcmkrQoNPd5VEpxZP1SMaB/Bp55xlpEhsrpn4zHnriQluxDw6xldjSOLl1qbokfxwCwjS2OaEbg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@module-federation/runtime": "0.8.4",
|
"@module-federation/runtime": "0.13.0",
|
||||||
"@module-federation/webpack-bundler-runtime": "0.8.4"
|
"@module-federation/webpack-bundler-runtime": "0.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@module-federation/sdk": {
|
"node_modules/@module-federation/sdk": {
|
||||||
"version": "0.8.4",
|
"version": "0.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.13.0.tgz",
|
||||||
"integrity": "sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==",
|
"integrity": "sha512-JdMZaPD+EQvMJYS+/8/8QjaAHQ3qljogvioXBsAuedcStu/msn5e1Fswc0G34kXY9ixs2hUPZU2cAllfSKWIBQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT"
|
||||||
"dependencies": {
|
|
||||||
"isomorphic-rslog": "0.0.6"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"node_modules/@module-federation/webpack-bundler-runtime": {
|
"node_modules/@module-federation/webpack-bundler-runtime": {
|
||||||
"version": "0.8.4",
|
"version": "0.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.13.0.tgz",
|
||||||
"integrity": "sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==",
|
"integrity": "sha512-ycgAsFeCTo+3GR8JxkhCyg2UZm6Au98ISdLTdVXYphO4UDcO/KjqyJen1LXEslkpCEohDj68Prei2fUHRruK6g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@module-federation/runtime": "0.8.4",
|
"@module-federation/runtime": "0.13.0",
|
||||||
"@module-federation/sdk": "0.8.4"
|
"@module-federation/sdk": "0.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rsbuild/core": {
|
"node_modules/@rsbuild/core": {
|
||||||
"version": "1.2.19",
|
"version": "1.3.13",
|
||||||
"resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.2.19.tgz",
|
"resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.3.13.tgz",
|
||||||
"integrity": "sha512-k76is4HygmbYYMLG2V1d1yQeurHHC+ZEtGs/nwE11y6HmwSndoFhmjOeQbQ2Ul0b2B8HErksqSMtlCxd37YPPQ==",
|
"integrity": "sha512-FIRV1ncOYYLCEGJDL8ZPKyH4J15lJS54KfeGf3Eacy5zUhT+dAkI2+0ZWH/s9NlaXA/vlRq6SJF9Z2Y96dO13Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rspack/core": "1.2.8",
|
"@rspack/core": "1.3.7",
|
||||||
"@rspack/lite-tapable": "~1.0.1",
|
"@rspack/lite-tapable": "~1.0.1",
|
||||||
"@swc/helpers": "^0.5.15",
|
"@swc/helpers": "^0.5.17",
|
||||||
"core-js": "~3.41.0",
|
"core-js": "~3.41.0",
|
||||||
"jiti": "^2.4.2"
|
"jiti": "^2.4.2"
|
||||||
},
|
},
|
||||||
@@ -466,7 +475,7 @@
|
|||||||
"rsbuild": "bin/rsbuild.js"
|
"rsbuild": "bin/rsbuild.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.7.0"
|
"node": ">=16.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rsbuild/plugin-vue": {
|
"node_modules/@rsbuild/plugin-vue": {
|
||||||
@@ -484,27 +493,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding": {
|
"node_modules/@rspack/binding": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.3.7.tgz",
|
||||||
"integrity": "sha512-T3FMB3N9P1AbSAryfkSRJkPtmeSYs/Gj9zUZoPz1ckPEIcWZmpUOQbJylldjbw5waxtCL1haHNbi0pcSvxiaJw==",
|
"integrity": "sha512-jSXLktIGmNNZssxT+fjZ31IyUO7lRoFrFO+XuqKlMpbnHE8yCrpaHE6rLyDPVO4Vnl6xx/df8usUXtZwIc4jrw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@rspack/binding-darwin-arm64": "1.2.8",
|
"@rspack/binding-darwin-arm64": "1.3.7",
|
||||||
"@rspack/binding-darwin-x64": "1.2.8",
|
"@rspack/binding-darwin-x64": "1.3.7",
|
||||||
"@rspack/binding-linux-arm64-gnu": "1.2.8",
|
"@rspack/binding-linux-arm64-gnu": "1.3.7",
|
||||||
"@rspack/binding-linux-arm64-musl": "1.2.8",
|
"@rspack/binding-linux-arm64-musl": "1.3.7",
|
||||||
"@rspack/binding-linux-x64-gnu": "1.2.8",
|
"@rspack/binding-linux-x64-gnu": "1.3.7",
|
||||||
"@rspack/binding-linux-x64-musl": "1.2.8",
|
"@rspack/binding-linux-x64-musl": "1.3.7",
|
||||||
"@rspack/binding-win32-arm64-msvc": "1.2.8",
|
"@rspack/binding-win32-arm64-msvc": "1.3.7",
|
||||||
"@rspack/binding-win32-ia32-msvc": "1.2.8",
|
"@rspack/binding-win32-ia32-msvc": "1.3.7",
|
||||||
"@rspack/binding-win32-x64-msvc": "1.2.8"
|
"@rspack/binding-win32-x64-msvc": "1.3.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-darwin-arm64": {
|
"node_modules/@rspack/binding-darwin-arm64": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.3.7.tgz",
|
||||||
"integrity": "sha512-bDlrlroY3iMlzna/3i1gD6eRmhJW2zRyC3Ov6aR1micshVQ9RteigYZWkjZuQfyC5Z8dCcLUQJVojz+pqp0JXg==",
|
"integrity": "sha512-/5k4H0M7vvu7uorhc0OQKdQ7ybcjcJA//ptfYB646Ca/XY8FI1T/H88prPNrLNu97FGqUT4QWo5AHj01XymfDw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -516,9 +525,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-darwin-x64": {
|
"node_modules/@rspack/binding-darwin-x64": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.3.7.tgz",
|
||||||
"integrity": "sha512-0/qOVbMuzZ+WbtDa4TbH46R4vph/W6MHcXbrXDO+vpdTMFDVJ64DnZXT7aqvGcY+7vTCIGm0GT+6ooR4KaIX8A==",
|
"integrity": "sha512-/eNcZFDHxo5RVmIxgVM5zxCXmufeWpvviWJMDjhycS175nJb6103YWpu6H0lHgbj0GnHM/Q2VjVRFNhaGbXqdA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -530,9 +539,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-linux-arm64-gnu": {
|
"node_modules/@rspack/binding-linux-arm64-gnu": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.3.7.tgz",
|
||||||
"integrity": "sha512-En/SMl45s19iUVb1/ZDFQvFDxIjnlfk7yqV3drMWWAL5HSgksNejaTIFTO52aoohIBbmwuk5wSGcbU0G0IFiPg==",
|
"integrity": "sha512-bSxA4MgGOdSvf/nTqNMuLeeyWS4Okh1iPskGuyAv/Sdf7cGbflUyZe6+w7A9BZEFR0CVTfj3f8kt73N+lu72Kg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -544,9 +553,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-linux-arm64-musl": {
|
"node_modules/@rspack/binding-linux-arm64-musl": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.3.7.tgz",
|
||||||
"integrity": "sha512-N1oZsXfJ9VLLcK7p1PS65cxLYQCZ7iqHW2OP6Ew2+hlz/d1hzngxgzrtZMCXFOHXDvTzVu5ff6jGS2v7+zv2tA==",
|
"integrity": "sha512-i6QK6YodCA5R8/ShRylkyunwvNcRx/Q7af14jSCa7TPOi6pPoDUL2pmwGcJBk1uPc2wjQwAMZzfJjTWNjEyW2Q==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -558,9 +567,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-linux-x64-gnu": {
|
"node_modules/@rspack/binding-linux-x64-gnu": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.3.7.tgz",
|
||||||
"integrity": "sha512-BdPaepoLKuaVwip4QK/nGqNi1xpbCWSxiycPbKRrGqKgt/QGihxxFgiqr4EpWQVIJNIMy4nCsg4arO0+H1KWGQ==",
|
"integrity": "sha512-6AmOHLOv4XAK7Y5cFDBtnetIZ44MqG8Q6wZ20zjql/khTxsRZa/edis/eUppGb8fy5gzi+qqSAznEZ+Qj3LMrQ==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -572,9 +581,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-linux-x64-musl": {
|
"node_modules/@rspack/binding-linux-x64-musl": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.3.7.tgz",
|
||||||
"integrity": "sha512-GFv0Bod268OcXIcjeLoPlK0oz8rClEIxIRFkz+ejhbvfCwRJ+Fd+EKaaKQTBfZQujPqc0h2GctIF25nN5pFTmA==",
|
"integrity": "sha512-rPt0c9UHp5AxWHhjziEtd2uwiWyzM4UZLFJV6hawBWOoIQf2uLSl3fp0HTqxpslfTh3uo5ymhHN/bV48m5THzg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -586,9 +595,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-win32-arm64-msvc": {
|
"node_modules/@rspack/binding-win32-arm64-msvc": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.3.7.tgz",
|
||||||
"integrity": "sha512-aEU+uJdbvJJGrzzAsjbjrPeNbG/bcG8JoXK2kSsUB+/sWHTIkHX0AQ3oX3aV/lcLKgZWrUxLAfLoCXEnIHMEyQ==",
|
"integrity": "sha512-+Db7NGBzad1dCcSm94uARkIIhbVv1+BXAl1duLBnYQMfqsu/pirsInE9wbp7WVUbSl2hmdRi9MYgWACjoReo4g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -600,9 +609,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-win32-ia32-msvc": {
|
"node_modules/@rspack/binding-win32-ia32-msvc": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.3.7.tgz",
|
||||||
"integrity": "sha512-GHYzNOSoiLyG9elLTmMqADJMQzjll+co4irp5AgZ+KHG9EVq0qEHxDqDIJxZnUA15U8JDvCgo6YAo3T0BFEL0Q==",
|
"integrity": "sha512-VPqqC0U6FolGoonmZYBBiFyWjQ4+X+e/l/t4QZP2DRonlpE418+MdCxq2ldVGgvtxwERNlz61zxEX9yh/8KOfw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"ia32"
|
"ia32"
|
||||||
],
|
],
|
||||||
@@ -614,9 +623,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/binding-win32-x64-msvc": {
|
"node_modules/@rspack/binding-win32-x64-msvc": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.3.7.tgz",
|
||||||
"integrity": "sha512-EigKLhKLH1kfv1e/ZgXuSKlIjkbyneJtiLbNDz7EeEVFGV1XMM6bsCea1sb2WOxsPYiOX4Q5JmR1j1KGrZS/LA==",
|
"integrity": "sha512-zi9tKxlq85lSYTb1sbEluLjZlkbjuoJoy2TaNzVlfNkmiJ6EiqBbyCWoPPBJRP6HQ9pG25W0y4NWKp7iVhiBvg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -628,28 +637,24 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@rspack/core": {
|
"node_modules/@rspack/core": {
|
||||||
"version": "1.2.8",
|
"version": "1.3.7",
|
||||||
"resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.3.7.tgz",
|
||||||
"integrity": "sha512-ppj3uQQtkhgrYDLrUqb33YbpNEZCpAudpfVuOHGsvUrAnu1PijbfJJymoA5ZvUhM+HNMvPI5D1ie97TXyb0UVg==",
|
"integrity": "sha512-InXnEmImLKkxzkY7XaAozycjMvS5myf/o3zu1rw5tNq3ONxWvW0QOHVTcrF0FbeKQ/jCOFSfdaoFjbXjdUs38w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@module-federation/runtime-tools": "0.8.4",
|
"@module-federation/runtime-tools": "0.13.0",
|
||||||
"@rspack/binding": "1.2.8",
|
"@rspack/binding": "1.3.7",
|
||||||
"@rspack/lite-tapable": "1.0.1",
|
"@rspack/lite-tapable": "1.0.1",
|
||||||
"caniuse-lite": "^1.0.30001702"
|
"caniuse-lite": "^1.0.30001715"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=16.0.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@rspack/tracing": "^1.x",
|
|
||||||
"@swc/helpers": ">=0.5.1"
|
"@swc/helpers": ">=0.5.1"
|
||||||
},
|
},
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
"@rspack/tracing": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@swc/helpers": {
|
"@swc/helpers": {
|
||||||
"optional": true
|
"optional": true
|
||||||
}
|
}
|
||||||
@@ -666,9 +671,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@swc/helpers": {
|
"node_modules/@swc/helpers": {
|
||||||
"version": "0.5.15",
|
"version": "0.5.17",
|
||||||
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz",
|
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
|
||||||
"integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==",
|
"integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -874,14 +879,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/core": {
|
"node_modules/@vueuse/core": {
|
||||||
"version": "13.0.0",
|
"version": "13.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@vueuse/core/-/core-13.1.0.tgz",
|
||||||
"integrity": "sha512-rkgb4a8/0b234lMGCT29WkCjPfsX0oxrIRR7FDndRoW3FsaC9NBzefXg/9TLhAgwM11f49XnutshM4LzJBrQ5g==",
|
"integrity": "sha512-PAauvdRXZvTWXtGLg8cPUFjiZEddTqmogdwYpnn60t08AA5a8Q4hZokBnpTOnVNqySlFlTcRYIC8OqreV4hv3Q==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/web-bluetooth": "^0.0.21",
|
"@types/web-bluetooth": "^0.0.21",
|
||||||
"@vueuse/metadata": "13.0.0",
|
"@vueuse/metadata": "13.1.0",
|
||||||
"@vueuse/shared": "13.0.0"
|
"@vueuse/shared": "13.1.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
@@ -891,18 +896,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/metadata": {
|
"node_modules/@vueuse/metadata": {
|
||||||
"version": "13.0.0",
|
"version": "13.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.1.0.tgz",
|
||||||
"integrity": "sha512-TRNksqmvtvqsuHf7bbgH9OSXEV2b6+M3BSN4LR5oxWKykOFT9gV78+C2/0++Pq9KCp9KQ1OQDPvGlWNQpOb2Mw==",
|
"integrity": "sha512-+TDd7/a78jale5YbHX9KHW3cEDav1lz1JptwDvep2zSG8XjCsVE+9mHIzjTOaPbHUAk5XiE4jXLz51/tS+aKQw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@vueuse/shared": {
|
"node_modules/@vueuse/shared": {
|
||||||
"version": "13.0.0",
|
"version": "13.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-13.1.0.tgz",
|
||||||
"integrity": "sha512-9MiHhAPw+sqCF/RLo8V6HsjRqEdNEWVpDLm2WBRW2G/kSQjb8X901sozXpSCaeLG0f7TEfMrT4XNaA5m1ez7Dg==",
|
"integrity": "sha512-IVS/qRRjhPTZ6C2/AM3jieqXACGwFZwWTdw5sNTSKk2m/ZpkuuN+ri+WCVUP8TqaKwJYt/KuMwmXspMAw8E6ew==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/antfu"
|
"url": "https://github.com/sponsors/antfu"
|
||||||
@@ -1087,9 +1092,9 @@
|
|||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/acorn": {
|
"node_modules/acorn": {
|
||||||
"version": "8.14.0",
|
"version": "8.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
|
||||||
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
|
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -1212,9 +1217,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.8.3",
|
"version": "1.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
|
||||||
"integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
|
"integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.6",
|
"follow-redirects": "^1.15.6",
|
||||||
@@ -1302,9 +1307,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001706",
|
"version": "1.0.30001715",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz",
|
||||||
"integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==",
|
"integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1429,9 +1434,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/confbox": {
|
"node_modules/confbox": {
|
||||||
"version": "0.1.8",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
|
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
|
||||||
"integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
|
"integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@@ -1712,6 +1717,13 @@
|
|||||||
"integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==",
|
"integrity": "sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/exsolve": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/fast-deep-equal": {
|
"node_modules/fast-deep-equal": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
@@ -2022,16 +2034,6 @@
|
|||||||
"node": ">=0.12.0"
|
"node": ">=0.12.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/isomorphic-rslog": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.17.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jest-worker": {
|
"node_modules/jest-worker": {
|
||||||
"version": "27.5.1",
|
"version": "27.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
|
||||||
@@ -2107,14 +2109,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/local-pkg": {
|
"node_modules/local-pkg": {
|
||||||
"version": "1.0.0",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz",
|
||||||
"integrity": "sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==",
|
"integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mlly": "^1.7.3",
|
"mlly": "^1.7.4",
|
||||||
"pkg-types": "^1.3.0"
|
"pkg-types": "^2.0.1",
|
||||||
|
"quansync": "^0.2.8"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
@@ -2145,9 +2148,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/marked": {
|
"node_modules/marked": {
|
||||||
"version": "15.0.7",
|
"version": "15.0.11",
|
||||||
"resolved": "https://registry.npmjs.org/marked/-/marked-15.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/marked/-/marked-15.0.11.tgz",
|
||||||
"integrity": "sha512-dgLIeKGLx5FwziAnsk4ONoGwHwGPJzselimvlVskE9XLN4Orv9u2VA3GWw/lYUqjfA0rUT/6fqKwfZJapP9BEg==",
|
"integrity": "sha512-1BEXAU2euRCG3xwgLVT1y0xbJEld1XOrmRJpUwRCcy7rxhSCwMrmEu9LXoPhHSCJG41V7YcQ2mjKRr5BA3ITIA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
"marked": "bin/marked.js"
|
"marked": "bin/marked.js"
|
||||||
@@ -2236,6 +2239,25 @@
|
|||||||
"ufo": "^1.5.4"
|
"ufo": "^1.5.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/mlly/node_modules/confbox": {
|
||||||
|
"version": "0.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
|
||||||
|
"integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/mlly/node_modules/pkg-types": {
|
||||||
|
"version": "1.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
|
||||||
|
"integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"confbox": "^0.1.8",
|
||||||
|
"mlly": "^1.7.4",
|
||||||
|
"pathe": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/moo": {
|
"node_modules/moo": {
|
||||||
"version": "0.5.2",
|
"version": "0.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
|
||||||
@@ -2358,15 +2380,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pkg-types": {
|
"node_modules/pkg-types": {
|
||||||
"version": "1.3.1",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz",
|
||||||
"integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
|
"integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"confbox": "^0.1.8",
|
"confbox": "^0.2.1",
|
||||||
"mlly": "^1.7.4",
|
"exsolve": "^1.0.1",
|
||||||
"pathe": "^2.0.1"
|
"pathe": "^2.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
@@ -2419,6 +2441,23 @@
|
|||||||
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/quansync": {
|
||||||
|
"version": "0.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz",
|
||||||
|
"integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://github.com/sponsors/antfu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://github.com/sponsors/sxzz"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/randombytes": {
|
"node_modules/randombytes": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||||
@@ -2679,9 +2718,9 @@
|
|||||||
"license": "0BSD"
|
"license": "0BSD"
|
||||||
},
|
},
|
||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "5.8.2",
|
"version": "5.8.3",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
|
||||||
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
|
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -2693,9 +2732,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ufo": {
|
"node_modules/ufo": {
|
||||||
"version": "1.5.4",
|
"version": "1.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
|
||||||
"integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
|
"integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@@ -2707,13 +2746,14 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/unplugin": {
|
"node_modules/unplugin": {
|
||||||
"version": "2.2.0",
|
"version": "2.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.2.tgz",
|
||||||
"integrity": "sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==",
|
"integrity": "sha512-3n7YA46rROb3zSj8fFxtxC/PqoyvYQ0llwz9wtUPUutr9ig09C8gGo5CWCwHrUzlqC1LLR43kxp5vEIyH1ac1w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"acorn": "^8.14.0",
|
"acorn": "^8.14.1",
|
||||||
|
"picomatch": "^4.0.2",
|
||||||
"webpack-virtual-modules": "^0.6.2"
|
"webpack-virtual-modules": "^0.6.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2738,19 +2778,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/unplugin-vue-components": {
|
"node_modules/unplugin-vue-components": {
|
||||||
"version": "28.4.1",
|
"version": "28.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-28.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-28.5.0.tgz",
|
||||||
"integrity": "sha512-niGSc0vJD9ueAnsqcfAldmtpkppZ09B6p2G1dL7X5S8KPdgbk1P+txPwaaDCe7N+eZh2VG1aAypLXkuJs3OSUg==",
|
"integrity": "sha512-o7fMKU/uI8NiP+E0W62zoduuguWqB0obTfHFtbr1AP2uo2lhUPnPttWUE92yesdiYfo9/0hxIrj38FMc1eaySg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": "^3.6.0",
|
"chokidar": "^3.6.0",
|
||||||
"debug": "^4.4.0",
|
"debug": "^4.4.0",
|
||||||
"local-pkg": "^1.0.0",
|
"local-pkg": "^1.1.1",
|
||||||
"magic-string": "^0.30.17",
|
"magic-string": "^0.30.17",
|
||||||
"mlly": "^1.7.4",
|
"mlly": "^1.7.4",
|
||||||
"tinyglobby": "^0.2.12",
|
"tinyglobby": "^0.2.12",
|
||||||
"unplugin": "^2.2.0",
|
"unplugin": "^2.3.2",
|
||||||
"unplugin-utils": "^0.2.4"
|
"unplugin-utils": "^0.2.4"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -2889,9 +2929,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/vue-router": {
|
"node_modules/vue-router": {
|
||||||
"version": "4.5.0",
|
"version": "4.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz",
|
||||||
"integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
|
"integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/devtools-api": "^6.6.4"
|
"@vue/devtools-api": "^6.6.4"
|
||||||
|
|||||||
16
package.json
16
package.json
@@ -12,29 +12,29 @@
|
|||||||
"@codemirror/lang-css": "^6.3.1",
|
"@codemirror/lang-css": "^6.3.1",
|
||||||
"@codemirror/lang-html": "^6.4.9",
|
"@codemirror/lang-html": "^6.4.9",
|
||||||
"@codemirror/lang-javascript": "^6.2.3",
|
"@codemirror/lang-javascript": "^6.2.3",
|
||||||
"@fsegurai/codemirror-theme-github-light": "^6.1.2",
|
"@fsegurai/codemirror-theme-github-light": "^6.1.4",
|
||||||
"@vueuse/core": "^13.0.0",
|
"@vueuse/core": "^13.1.0",
|
||||||
"axios": "^1.8.3",
|
"axios": "^1.9.0",
|
||||||
"codemirror": "^6.0.1",
|
"codemirror": "^6.0.1",
|
||||||
"copy-text-to-clipboard": "^3.2.0",
|
"copy-text-to-clipboard": "^3.2.0",
|
||||||
"github-markdown-css": "^5.8.1",
|
"github-markdown-css": "^5.8.1",
|
||||||
"highlight.js": "^11.11.1",
|
"highlight.js": "^11.11.1",
|
||||||
"marked": "^15.0.7",
|
"marked": "^15.0.11",
|
||||||
"marked-alert": "^2.1.2",
|
"marked-alert": "^2.1.2",
|
||||||
"marked-code-preview": "^1.3.7",
|
"marked-code-preview": "^1.3.7",
|
||||||
"marked-highlight": "^2.2.1",
|
"marked-highlight": "^2.2.1",
|
||||||
"naive-ui": "^2.41.0",
|
"naive-ui": "^2.41.0",
|
||||||
"vue": "^3.5.13",
|
"vue": "^3.5.13",
|
||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
"vue-router": "^4.5.0"
|
"vue-router": "^4.5.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify/vue": "^4.3.0",
|
"@iconify/vue": "^4.3.0",
|
||||||
"@rsbuild/core": "^1.2.19",
|
"@rsbuild/core": "^1.3.13",
|
||||||
"@rsbuild/plugin-vue": "^1.0.7",
|
"@rsbuild/plugin-vue": "^1.0.7",
|
||||||
"@vue/tsconfig": "^0.7.0",
|
"@vue/tsconfig": "^0.7.0",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
"typescript": "^5.8.2",
|
"typescript": "^5.8.3",
|
||||||
"unplugin-vue-components": "^28.4.1"
|
"unplugin-vue-components": "^28.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/components/Challenge.vue
Normal file
14
src/components/Challenge.vue
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<template>
|
||||||
|
<div class="container" v-if="taskTab === TASK_TYPE.Challenge">
|
||||||
|
<n-empty>暂无挑战,敬请期待</n-empty>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { taskTab } from "../store/task"
|
||||||
|
import { TASK_TYPE } from "../utils/const"
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.container {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<n-flex align="center" class="corner">
|
<n-flex align="center" class="corner">
|
||||||
<n-button quaternary v-if="!show" @click="showTutorial">教程</n-button>
|
<n-button quaternary v-if="!show" @click="showTutorial">
|
||||||
|
打开{{ TASK_LABEL[taskTab] }}
|
||||||
|
</n-button>
|
||||||
<template v-if="user.loaded && authed">
|
<template v-if="user.loaded && authed">
|
||||||
<n-button
|
<n-button
|
||||||
quaternary
|
quaternary
|
||||||
@@ -38,12 +40,12 @@ import { Icon } from "@iconify/vue"
|
|||||||
import { authed, roleNormal, roleSuper, user } from "../store/user"
|
import { authed, roleNormal, roleSuper, user } from "../store/user"
|
||||||
import { loginModal } from "../store/modal"
|
import { loginModal } from "../store/modal"
|
||||||
import { show, tutorialSize, step } from "../store/tutorial"
|
import { show, tutorialSize, step } from "../store/tutorial"
|
||||||
import { taskId } from "../store/task"
|
import { taskId, taskTab } from "../store/task"
|
||||||
import { html, css, js } from "../store/editors"
|
import { html, css, js } from "../store/editors"
|
||||||
import { Account, Submission } from "../api"
|
import { Account, Submission } from "../api"
|
||||||
import { Role } from "../utils/type"
|
import { Role } from "../utils/type"
|
||||||
import { router } from "../router"
|
import { router } from "../router"
|
||||||
import { ADMIN_URL } from "../utils/const"
|
import { ADMIN_URL, TASK_LABEL } from "../utils/const"
|
||||||
|
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,13 @@
|
|||||||
<n-flex align="center" justify="space-between" class="title">
|
<n-flex align="center" justify="space-between" class="title">
|
||||||
<n-flex align="center">
|
<n-flex align="center">
|
||||||
<Icon icon="twemoji:open-book" :width="20"></Icon>
|
<Icon icon="twemoji:open-book" :width="20"></Icon>
|
||||||
<n-tabs style="width: 140px" type="segment" animated>
|
<n-tabs
|
||||||
|
style="width: 140px"
|
||||||
|
type="segment"
|
||||||
|
animated
|
||||||
|
:value="taskTab"
|
||||||
|
@update:value="changeTab"
|
||||||
|
>
|
||||||
<n-tab name="tutorial" tab="教程"></n-tab>
|
<n-tab name="tutorial" tab="教程"></n-tab>
|
||||||
<n-tab name="challenge" tab="挑战"></n-tab>
|
<n-tab name="challenge" tab="挑战"></n-tab>
|
||||||
</n-tabs>
|
</n-tabs>
|
||||||
@@ -20,7 +26,12 @@
|
|||||||
<n-button
|
<n-button
|
||||||
text
|
text
|
||||||
v-if="authed && roleSuper"
|
v-if="authed && roleSuper"
|
||||||
@click="$router.push({ name: 'tutorial', params: { display: step } })"
|
@click="
|
||||||
|
$router.push({
|
||||||
|
name: taskTab,
|
||||||
|
params: taskTab === TASK_TYPE.Tutorial ? { display: step } : {},
|
||||||
|
})
|
||||||
|
"
|
||||||
>
|
>
|
||||||
<Icon :width="16" icon="lucide:edit"></Icon>
|
<Icon :width="16" icon="lucide:edit"></Icon>
|
||||||
</n-button>
|
</n-button>
|
||||||
@@ -29,7 +40,13 @@
|
|||||||
</n-button>
|
</n-button>
|
||||||
</n-flex>
|
</n-flex>
|
||||||
</n-flex>
|
</n-flex>
|
||||||
<div class="markdown-body" v-html="content" ref="$content"></div>
|
<div
|
||||||
|
v-if="taskTab === TASK_TYPE.Tutorial"
|
||||||
|
class="markdown-body"
|
||||||
|
v-html="content"
|
||||||
|
ref="$content"
|
||||||
|
/>
|
||||||
|
<Challenge v-else />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
@@ -41,46 +58,65 @@ import { css, html, js, tab } from "../store/editors"
|
|||||||
import { Tutorial } from "../api"
|
import { Tutorial } from "../api"
|
||||||
import { step } from "../store/tutorial"
|
import { step } from "../store/tutorial"
|
||||||
import { authed, roleSuper } from "../store/user"
|
import { authed, roleSuper } from "../store/user"
|
||||||
import { useStorage } from "@vueuse/core"
|
import { taskId, taskTab } from "../store/task"
|
||||||
import { STORAGE_KEY } from "../utils/const"
|
import { useRoute, useRouter } from "vue-router"
|
||||||
import { taskId } from "../store/task"
|
import { TASK_TYPE } from "../utils/const"
|
||||||
|
import Challenge from "./Challenge.vue"
|
||||||
|
|
||||||
const displays = ref<number[]>([])
|
const route = useRoute()
|
||||||
const content = useStorage(STORAGE_KEY.CONTENT, "")
|
const router = useRouter()
|
||||||
|
const tutorialIds = ref<number[]>([])
|
||||||
|
const content = ref("")
|
||||||
const $content = useTemplateRef<any>("$content")
|
const $content = useTemplateRef<any>("$content")
|
||||||
|
|
||||||
defineEmits(["hide"])
|
defineEmits(["hide"])
|
||||||
|
|
||||||
const hideNav = computed(() => displays.value.length <= 1)
|
const hideNav = computed(
|
||||||
|
() => taskTab.value === TASK_TYPE.Challenge || tutorialIds.value.length <= 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
function changeTab(v: TASK_TYPE) {
|
||||||
|
taskTab.value = v
|
||||||
|
const query = { task: v } as any
|
||||||
|
if (v === TASK_TYPE.Tutorial) query.step = step.value
|
||||||
|
router.push({ query })
|
||||||
|
}
|
||||||
|
|
||||||
const prevDisabled = computed(() => {
|
const prevDisabled = computed(() => {
|
||||||
const i = displays.value.indexOf(step.value)
|
const i = tutorialIds.value.indexOf(step.value)
|
||||||
return i <= 0
|
return i <= 0
|
||||||
})
|
})
|
||||||
|
|
||||||
const nextDisabled = computed(() => {
|
const nextDisabled = computed(() => {
|
||||||
const i = displays.value.indexOf(step.value)
|
const i = tutorialIds.value.indexOf(step.value)
|
||||||
return i === displays.value.length - 1
|
return i === tutorialIds.value.length - 1
|
||||||
})
|
})
|
||||||
|
|
||||||
function prev() {
|
function prev() {
|
||||||
const i = displays.value.indexOf(step.value)
|
const i = tutorialIds.value.indexOf(step.value)
|
||||||
step.value = displays.value[i - 1]
|
step.value = tutorialIds.value[i - 1]
|
||||||
|
router.push({ query: { task: taskTab.value, step: step.value } })
|
||||||
}
|
}
|
||||||
|
|
||||||
function next() {
|
function next() {
|
||||||
const i = displays.value.indexOf(step.value)
|
const i = tutorialIds.value.indexOf(step.value)
|
||||||
step.value = displays.value[i + 1]
|
step.value = tutorialIds.value[i + 1]
|
||||||
|
router.push({ query: { task: taskTab.value, step: step.value } })
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getContent() {
|
async function getContent() {
|
||||||
displays.value = await Tutorial.listDisplay()
|
tutorialIds.value = await Tutorial.listDisplay()
|
||||||
if (!displays.value.length) {
|
if (!tutorialIds.value.length) {
|
||||||
content.value = "暂无教程"
|
content.value = "暂无教程"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!displays.value.includes(step.value)) {
|
if (route.query.step) {
|
||||||
step.value = displays.value[0]
|
step.value = Number(route.query.step)
|
||||||
|
} else {
|
||||||
|
step.value = 1
|
||||||
|
}
|
||||||
|
if (!tutorialIds.value.includes(step.value)) {
|
||||||
|
step.value = tutorialIds.value[0]
|
||||||
}
|
}
|
||||||
const data = await Tutorial.get(step.value)
|
const data = await Tutorial.get(step.value)
|
||||||
taskId.value = data.task_ptr
|
taskId.value = data.task_ptr
|
||||||
@@ -136,14 +172,15 @@ function modifyLink() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function render() {
|
async function init() {
|
||||||
|
taskTab.value = route.query.task as TASK_TYPE
|
||||||
await getContent()
|
await getContent()
|
||||||
addButton()
|
addButton()
|
||||||
modifyLink()
|
modifyLink()
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(render)
|
onMounted(init)
|
||||||
watch(step, render)
|
watch(step, init)
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.container {
|
.container {
|
||||||
1
src/components/submissions/NameWithFilter.vue
Normal file
1
src/components/submissions/NameWithFilter.vue
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<template></template>
|
||||||
@@ -16,15 +16,25 @@
|
|||||||
>
|
>
|
||||||
挑战
|
挑战
|
||||||
</n-tag>
|
</n-tag>
|
||||||
<n-button text>{{ props.submission.task_title }}</n-button>
|
<n-button text @click="open">{{ props.submission.task_title }}</n-button>
|
||||||
</n-flex>
|
</n-flex>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { useRouter } from "vue-router"
|
||||||
import type { SubmissionOut } from "../../utils/type"
|
import type { SubmissionOut } from "../../utils/type"
|
||||||
|
import { submission } from "../../store/submission"
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
submission: SubmissionOut
|
submission: SubmissionOut
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = defineProps<Props>()
|
const props = defineProps<Props>()
|
||||||
|
|
||||||
|
const router = useRouter()
|
||||||
|
function open() {
|
||||||
|
router.push({
|
||||||
|
name: "home",
|
||||||
|
query: { [submission.value.task_type]: submission.value.task_id },
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
1
src/pages/Challenge.vue
Normal file
1
src/pages/Challenge.vue
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<template>Dashboard Challenge</template>
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<n-flex class="container" :wrap="false">
|
<n-flex class="container" :wrap="false">
|
||||||
<n-flex vertical class="menu">
|
<n-flex vertical class="menu">
|
||||||
<n-button secondary @click="$router.push({ name: 'home' })">
|
<n-button secondary @click="goHome"> 返回 </n-button>
|
||||||
返回
|
|
||||||
</n-button>
|
|
||||||
<n-button
|
<n-button
|
||||||
v-for="item in menu"
|
v-for="item in menu"
|
||||||
:key="item.label"
|
:key="item.label"
|
||||||
@@ -19,16 +17,31 @@
|
|||||||
</n-flex>
|
</n-flex>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import { useRouter } from "vue-router"
|
||||||
|
import { taskTab } from "../store/task"
|
||||||
import { step } from "../store/tutorial"
|
import { step } from "../store/tutorial"
|
||||||
|
import { TASK_TYPE } from "../utils/const"
|
||||||
|
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
const menu = [
|
const menu = [
|
||||||
{
|
{
|
||||||
label: "教程",
|
label: "教程",
|
||||||
route: { name: "tutorial", params: { display: step.value } },
|
route: { name: "tutorial", params: { display: step.value } },
|
||||||
},
|
},
|
||||||
|
{ label: "挑战", route: { name: "challenge" } },
|
||||||
{ label: "用户", route: { name: "user-manage", params: { page: 1 } } },
|
{ label: "用户", route: { name: "user-manage", params: { page: 1 } } },
|
||||||
{ label: "提交", route: { name: "submissions", params: { page: 1 } } },
|
{ label: "提交", route: { name: "submissions", params: { page: 1 } } },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
function goHome() {
|
||||||
|
const query = { task: taskTab.value } as any
|
||||||
|
if (taskTab.value === TASK_TYPE.Tutorial) query.step = step.value
|
||||||
|
router.push({
|
||||||
|
name: "home",
|
||||||
|
query,
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.container {
|
.container {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
max="900px"
|
max="900px"
|
||||||
>
|
>
|
||||||
<template #1>
|
<template #1>
|
||||||
<Tutorial @hide="hide" />
|
<Task @hide="hide" />
|
||||||
</template>
|
</template>
|
||||||
<template #2>
|
<template #2>
|
||||||
<n-split direction="vertical" min="200px">
|
<n-split direction="vertical" min="200px">
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
import { useMagicKeys, whenever } from "@vueuse/core"
|
import { useMagicKeys, whenever } from "@vueuse/core"
|
||||||
import Editors from "../components/Editors.vue"
|
import Editors from "../components/Editors.vue"
|
||||||
import Preview from "../components/Preview.vue"
|
import Preview from "../components/Preview.vue"
|
||||||
import Tutorial from "../components/Tutorial.vue"
|
import Task from "../components/Task.vue"
|
||||||
import { show, tutorialSize } from "../store/tutorial"
|
import { show, tutorialSize } from "../store/tutorial"
|
||||||
import { html, css, js } from "../store/editors"
|
import { html, css, js } from "../store/editors"
|
||||||
|
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ onUnmounted(() => {
|
|||||||
id: "",
|
id: "",
|
||||||
userid: 0,
|
userid: 0,
|
||||||
username: "",
|
username: "",
|
||||||
|
task_id: 0,
|
||||||
task_title: "",
|
task_title: "",
|
||||||
task_type: "tutorial",
|
task_type: "tutorial",
|
||||||
score: 0,
|
score: 0,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ const routes = [
|
|||||||
path: "/submission/:id",
|
path: "/submission/:id",
|
||||||
name: "submission",
|
name: "submission",
|
||||||
component: () => import("./pages/Submission.vue"),
|
component: () => import("./pages/Submission.vue"),
|
||||||
props: true
|
props: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/dashboard",
|
path: "/dashboard",
|
||||||
@@ -26,7 +26,12 @@ const routes = [
|
|||||||
{
|
{
|
||||||
path: "tutorial/:display",
|
path: "tutorial/:display",
|
||||||
name: "tutorial",
|
name: "tutorial",
|
||||||
component: () => import("./pages/Markdown.vue"),
|
component: () => import("./pages/Tutorial.vue"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "challenge",
|
||||||
|
name: "challenge",
|
||||||
|
component: () => import("./pages/Challenge.vue"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "user-manage/:page",
|
path: "user-manage/:page",
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ export const submission = ref<SubmissionAll>({
|
|||||||
id: "",
|
id: "",
|
||||||
userid: 0,
|
userid: 0,
|
||||||
username: "",
|
username: "",
|
||||||
|
task_id: 0,
|
||||||
task_title: "",
|
task_title: "",
|
||||||
task_type: "tutorial",
|
task_type: "tutorial",
|
||||||
score: 0.0,
|
score: 0.0,
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
import { ref } from "vue"
|
import { ref } from "vue"
|
||||||
|
import { TASK_TYPE } from "../utils/const"
|
||||||
|
|
||||||
|
export const taskTab = ref(TASK_TYPE.Tutorial)
|
||||||
export const taskId = ref(0)
|
export const taskId = ref(0)
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import { ref } from "vue"
|
import { ref } from "vue"
|
||||||
import { useStorage } from "@vueuse/core"
|
|
||||||
import { STORAGE_KEY } from "../utils/const"
|
|
||||||
|
|
||||||
export const step = useStorage(STORAGE_KEY.STEP, 1)
|
export const step = ref(1)
|
||||||
|
|
||||||
export const show = ref(true)
|
export const show = ref(true)
|
||||||
export const tutorialSize = ref(2 / 5)
|
export const tutorialSize = ref(2 / 5)
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ export const alertVariants = [
|
|||||||
|
|
||||||
export const STORAGE_KEY = {
|
export const STORAGE_KEY = {
|
||||||
LOGIN: "web-isloggedin",
|
LOGIN: "web-isloggedin",
|
||||||
STEP: "web-turtorial-step",
|
|
||||||
CONTENT: "web-turtorial-content",
|
|
||||||
HTML: "web-html",
|
HTML: "web-html",
|
||||||
CSS: "web-css",
|
CSS: "web-css",
|
||||||
JS: "web-js",
|
JS: "web-js",
|
||||||
@@ -46,3 +44,13 @@ export const BASE_URL =
|
|||||||
import.meta.env.MODE === "development"
|
import.meta.env.MODE === "development"
|
||||||
? "http://localhost:8000/api"
|
? "http://localhost:8000/api"
|
||||||
: "https://web.xuyue.cc/api"
|
: "https://web.xuyue.cc/api"
|
||||||
|
|
||||||
|
export enum TASK_TYPE {
|
||||||
|
Tutorial = "tutorial",
|
||||||
|
Challenge = "challenge",
|
||||||
|
}
|
||||||
|
|
||||||
|
export const TASK_LABEL = {
|
||||||
|
[TASK_TYPE.Tutorial]: "教程",
|
||||||
|
[TASK_TYPE.Challenge]: "挑战",
|
||||||
|
} as const
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ export interface SubmissionAll {
|
|||||||
id: string
|
id: string
|
||||||
userid: number
|
userid: number
|
||||||
username: string
|
username: string
|
||||||
|
task_id: number
|
||||||
task_type: string
|
task_type: string
|
||||||
task_title: string
|
task_title: string
|
||||||
score: number
|
score: number
|
||||||
|
|||||||
Reference in New Issue
Block a user