diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..a5a7217
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,5 @@
+# Classworks KV 默认服务器域名
+VITE_DEFAULT_KV_SERVER=https://kv.wuyuan.dev
+
+# Classworks KV 授权服务器域名
+VITE_DEFAULT_AUTH_SERVER=https://kv.houlang.cloud
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 4c54ffe..de72770 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -32,6 +32,10 @@ jobs:
node-version: "20.x"
- name: Build
+ env:
+ VITE_APP_ID: d158067f53627d2b98babe8bffd2fd7d
+ VITE_DEFAULT_KV_SERVER: https://kv.wuyuan.dev
+ VITE_DEFAULT_AUTH_SERVER: https://kv.houlang.cloud
run: |
npm install
npm run build
diff --git a/.gitignore b/.gitignore
index 1139e42..6ad341f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -172,4 +172,3 @@ dist
vite.config.*.timestamp-*.mjs
*.timestamp-*
-kv-admin
\ No newline at end of file
diff --git a/package.json b/package.json
index 01e1b34..9a2b20a 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "Classworks",
+ "name": "classworks",
"private": true,
"type": "module",
"version": "0.0.0",
@@ -14,17 +14,21 @@
"@examaware-cs/player": "^1.0.2",
"@mdi/font": "7.4.47",
"@microsoft/clarity": "^1.0.0",
+ "@vueuse/core": "^13.9.0",
"axios": "^1.11.0",
"idb": "^8.0.3",
"js-base64": "^3.7.8",
"js-yaml": "^4.1.0",
+ "lucide-vue-next": "^0.545.0",
+ "marked": "^16.4.0",
"pinyin-pro": "^3.27.0",
"ratelimit-header-parser": "^0.1.0",
"roboto-fontface": "*",
- "tdesign-vue-next": "^1.17.1",
+ "socket.io-client": "^4.8.1",
"typewriter-effect": "^2.21.0",
"uuid": "^9.0.1",
"vue": "^3.5.20",
+ "vue-sonner": "^2.0.9",
"vuetify": "^3.9.6"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 47676e0..44074de 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -20,6 +20,9 @@ importers:
'@microsoft/clarity':
specifier: ^1.0.0
version: 1.0.0
+ '@vueuse/core':
+ specifier: ^13.9.0
+ version: 13.9.0(vue@3.5.20)
axios:
specifier: ^1.11.0
version: 1.11.0
@@ -32,6 +35,12 @@ importers:
js-yaml:
specifier: ^4.1.0
version: 4.1.0
+ lucide-vue-next:
+ specifier: ^0.545.0
+ version: 0.545.0(vue@3.5.20)
+ marked:
+ specifier: ^16.4.0
+ version: 16.4.0
pinyin-pro:
specifier: ^3.27.0
version: 3.27.0
@@ -41,9 +50,9 @@ importers:
roboto-fontface:
specifier: '*'
version: 0.10.0
- tdesign-vue-next:
- specifier: ^1.17.1
- version: 1.17.1(vue@3.5.20)
+ socket.io-client:
+ specifier: ^4.8.1
+ version: 4.8.1
typewriter-effect:
specifier: ^2.21.0
version: 2.21.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -53,6 +62,9 @@ importers:
vue:
specifier: ^3.5.20
version: 3.5.20
+ vue-sonner:
+ specifier: ^2.0.9
+ version: 2.0.9
vuetify:
specifier: ^3.9.6
version: 3.9.6(vite-plugin-vuetify@2.1.2)(vue@3.5.20)
@@ -65,25 +77,25 @@ importers:
version: 1.0.0
'@vitejs/plugin-vue':
specifier: ^5.2.3
- version: 5.2.3(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)
+ version: 5.2.3(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)
eslint:
specifier: ^9.14.0
- version: 9.15.0(jiti@2.4.2)
+ version: 9.15.0(jiti@2.6.1)
eslint-plugin-import:
specifier: ^2.29.1
- version: 2.31.0(eslint@9.15.0(jiti@2.4.2))
+ version: 2.31.0(eslint@9.15.0(jiti@2.6.1))
eslint-plugin-n:
specifier: ^16.6.2
- version: 16.6.2(eslint@9.15.0(jiti@2.4.2))
+ version: 16.6.2(eslint@9.15.0(jiti@2.6.1))
eslint-plugin-node:
specifier: ^11.1.0
- version: 11.1.0(eslint@9.15.0(jiti@2.4.2))
+ version: 11.1.0(eslint@9.15.0(jiti@2.6.1))
eslint-plugin-promise:
specifier: ^6.4.0
- version: 6.6.0(eslint@9.15.0(jiti@2.4.2))
+ version: 6.6.0(eslint@9.15.0(jiti@2.6.1))
eslint-plugin-vue:
specifier: ^9.30.0
- version: 9.31.0(eslint@9.15.0(jiti@2.4.2))
+ version: 9.31.0(eslint@9.15.0(jiti@2.6.1))
pinia:
specifier: ^3.0.3
version: 3.0.3(vue@3.5.20)
@@ -95,10 +107,10 @@ importers:
version: 1.86.3
unplugin-auto-import:
specifier: ^19.1.2
- version: 19.1.2
+ version: 19.1.2(@vueuse/core@13.9.0(vue@3.5.20))
unplugin-fonts:
specifier: ^1.3.1
- version: 1.3.1(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))
+ version: 1.3.1(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))
unplugin-vue-components:
specifier: ^28.4.1
version: 28.4.1(@babel/parser@7.28.3)(vue@3.5.20)
@@ -107,16 +119,16 @@ importers:
version: 0.12.0(vue-router@4.5.1(vue@3.5.20))(vue@3.5.20)
vite:
specifier: ^5.4.17
- version: 5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
+ version: 5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
vite-plugin-pwa:
specifier: ^1.0.3
- version: 1.0.3(@vite-pwa/assets-generator@1.0.0)(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(workbox-build@7.3.0)(workbox-window@7.3.0)
+ version: 1.0.3(@vite-pwa/assets-generator@1.0.0)(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(workbox-build@7.3.0)(workbox-window@7.3.0)
vite-plugin-vue-layouts:
specifier: ^0.11.0
- version: 0.11.0(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue-router@4.5.1(vue@3.5.20))(vue@3.5.20)
+ version: 0.11.0(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue-router@4.5.1(vue@3.5.20))(vue@3.5.20)
vite-plugin-vuetify:
specifier: ^2.1.2
- version: 2.1.2(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)(vuetify@3.9.6)
+ version: 2.1.2(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)(vuetify@3.9.6)
vue-router:
specifier: ^4.5.1
version: 4.5.1(vue@3.5.20)
@@ -212,18 +224,10 @@ packages:
resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-string-parser@7.25.9':
- resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@7.25.9':
- resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
- engines: {node: '>=6.9.0'}
-
'@babel/helper-validator-identifier@7.27.1':
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
@@ -240,16 +244,6 @@ packages:
resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.26.2':
- resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/parser@7.27.0':
- resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
'@babel/parser@7.28.3':
resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==}
engines: {node: '>=6.0.0'}
@@ -632,14 +626,6 @@ packages:
resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.26.0':
- resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.27.0':
- resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==}
- engines: {node: '>=6.9.0'}
-
'@babel/types@7.28.2':
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
engines: {node: '>=6.9.0'}
@@ -977,6 +963,9 @@ packages:
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
@@ -1239,6 +1228,9 @@ packages:
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+ '@socket.io/component-emitter@3.1.2':
+ resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
+
'@surma/rollup-plugin-off-main-thread@2.2.3':
resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==}
@@ -1278,6 +1270,9 @@ packages:
'@types/validator@13.15.3':
resolution: {integrity: sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==}
+ '@types/web-bluetooth@0.0.21':
+ resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
+
'@vite-pwa/assets-generator@1.0.0':
resolution: {integrity: sha512-tWRF/tsqGkND5+dDVnJz7DzQkIRjtTRRYvA3y6l4FwTwK47OK72p1X7ResSz6T7PimIZMuFd+arsB8NRIG+Sww==}
engines: {node: '>=16.14.0'}
@@ -1299,27 +1294,15 @@ packages:
vue:
optional: true
- '@vue/compiler-core@3.5.13':
- resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
-
'@vue/compiler-core@3.5.20':
resolution: {integrity: sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg==}
- '@vue/compiler-dom@3.5.13':
- resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
-
'@vue/compiler-dom@3.5.20':
resolution: {integrity: sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ==}
- '@vue/compiler-sfc@3.5.13':
- resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
-
'@vue/compiler-sfc@3.5.20':
resolution: {integrity: sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw==}
- '@vue/compiler-ssr@3.5.13':
- resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
-
'@vue/compiler-ssr@3.5.20':
resolution: {integrity: sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA==}
@@ -1349,9 +1332,6 @@ packages:
peerDependencies:
vue: 3.5.20
- '@vue/shared@3.5.13':
- resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
-
'@vue/shared@3.5.20':
resolution: {integrity: sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA==}
@@ -1361,6 +1341,19 @@ packages:
vue: ^3.0.0
vuetify: ^3.0.0
+ '@vueuse/core@13.9.0':
+ resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==}
+ peerDependencies:
+ vue: ^3.5.0
+
+ '@vueuse/metadata@13.9.0':
+ resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==}
+
+ '@vueuse/shared@13.9.0':
+ resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==}
+ peerDependencies:
+ vue: ^3.5.0
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -1425,12 +1418,8 @@ packages:
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
- ast-kit@1.3.1:
- resolution: {integrity: sha512-3bIRV4s/cNAee2rKjuvYdoG+0CMqtOIgCvWrJL6zG8R0fDyMwYzStspX5JqXPbdMzM+qxHZ6g2rMHKhr3HkPlQ==}
- engines: {node: '>=16.14.0'}
-
- ast-kit@1.4.2:
- resolution: {integrity: sha512-lvGehj1XsrIoQrD5CfPduIzQbcpuX2EPjlk/vDMDQF9U9HLRB6WwMTdighj5n52hdhh8xg9VgPTU7Q25MuJ/rw==}
+ ast-kit@1.4.3:
+ resolution: {integrity: sha512-MdJqjpodkS5J149zN0Po+HPshkTdUyrvF7CKTafUgv69vBSPtncrj+3IiUgqdd7ElIEkbeXCsEouBUwLrw9Ilg==}
engines: {node: '>=16.14.0'}
ast-walker-scope@0.6.2:
@@ -1715,6 +1704,10 @@ packages:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
@@ -1731,6 +1724,13 @@ packages:
electron-to-chromium@1.5.132:
resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==}
+ engine.io-client@6.6.3:
+ resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==}
+
+ engine.io-parser@5.2.3:
+ resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==}
+ engines: {node: '>=10.0.0'}
+
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
@@ -2379,6 +2379,10 @@ packages:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
+ jiti@2.6.1:
+ resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
+ hasBin: true
+
js-base64@3.7.8:
resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==}
@@ -2444,6 +2448,70 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
+ lightningcss-darwin-arm64@1.30.1:
+ resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.30.1:
+ resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.30.1:
+ resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.30.1:
+ resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.30.1:
+ resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-arm64-musl@1.30.1:
+ resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-x64-gnu@1.30.1:
+ resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-linux-x64-musl@1.30.1:
+ resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-win32-arm64-msvc@1.30.1:
+ resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.30.1:
+ resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.30.1:
+ resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
+ engines: {node: '>= 12.0.0'}
+
local-pkg@1.1.1:
resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==}
engines: {node: '>=14'}
@@ -2474,6 +2542,11 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ lucide-vue-next@0.545.0:
+ resolution: {integrity: sha512-UXOQYVdJ2dmwkC0jawC9D5efCw/vyogTKvPx7gJ8ZzhrDblcP5oUt44CyMgjX1WJX7gG5XxGdB5FrT/sYM637Q==}
+ peerDependencies:
+ vue: '>=3.0.1'
+
magic-string-ast@0.7.1:
resolution: {integrity: sha512-ub9iytsEbT7Yw/Pd29mSo/cNQpaEu67zR1VVcXDiYjSFwzeBxNdTd0FMnSslLQXiRj8uGPzwsaoefrMD5XAmdw==}
engines: {node: '>=16.14.0'}
@@ -2481,12 +2554,14 @@ packages:
magic-string@0.25.9:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
- magic-string@0.30.12:
- resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
-
magic-string@0.30.17:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+ marked@16.4.0:
+ resolution: {integrity: sha512-CTPAcRBq57cn3R8n3hwc2REddc28hjR7RzDXQ+lXLmMJYqn20BaI2cGw6QjgZGIgVfp2Wdfw4aMzgNteQ6qJgQ==}
+ engines: {node: '>= 20'}
+ hasBin: true
+
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
@@ -2534,11 +2609,6 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@@ -2628,9 +2698,6 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
-
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
@@ -2677,10 +2744,6 @@ packages:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
- postcss@8.4.49:
- resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
- engines: {node: ^10 || ^12 || >=14}
-
postcss@8.5.3:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14}
@@ -3050,6 +3113,14 @@ packages:
smob@1.5.0:
resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==}
+ socket.io-client@4.8.1:
+ resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==}
+ engines: {node: '>=10.0.0'}
+
+ socket.io-parser@4.2.4:
+ resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==}
+ engines: {node: '>=10.0.0'}
+
sortablejs@1.15.6:
resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==}
@@ -3435,6 +3506,20 @@ packages:
peerDependencies:
vue: ^3.2.0
+ vue-sonner@2.0.9:
+ resolution: {integrity: sha512-i6BokNlNDL93fpzNxN/LZSn6D6MzlO+i3qXt6iVZne3x1k7R46d5HlFB4P8tYydhgqOrRbIZEsnRd3kG7qGXyw==}
+ peerDependencies:
+ '@nuxt/kit': ^4.0.3
+ '@nuxt/schema': ^4.0.3
+ nuxt: ^4.0.3
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+ '@nuxt/schema':
+ optional: true
+ nuxt:
+ optional: true
+
vue@3.5.20:
resolution: {integrity: sha512-2sBz0x/wis5TkF1XZ2vH25zWq3G1bFEPOfkBcx2ikowmphoQsPH6X0V3mmPCXA2K1N/XGTnifVyDQP4GfDDeQw==}
peerDependencies:
@@ -3552,16 +3637,32 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ ws@8.17.1:
+ resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
xml-name-validator@4.0.0:
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
engines: {node: '>=12'}
+ xmlhttprequest-ssl@2.1.2:
+ resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==}
+ engines: {node: '>=0.4.0'}
+
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- yaml@2.7.1:
- resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==}
- engines: {node: '>= 14'}
+ yaml@2.8.1:
+ resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==}
+ engines: {node: '>= 14.6'}
hasBin: true
yocto-queue@0.1.0:
@@ -3715,12 +3816,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helper-string-parser@7.25.9': {}
-
'@babel/helper-string-parser@7.27.1': {}
- '@babel/helper-validator-identifier@7.25.9': {}
-
'@babel/helper-validator-identifier@7.27.1': {}
'@babel/helper-validator-option@7.25.9': {}
@@ -3738,14 +3835,6 @@ snapshots:
'@babel/template': 7.27.0
'@babel/types': 7.28.2
- '@babel/parser@7.26.2':
- dependencies:
- '@babel/types': 7.26.0
-
- '@babel/parser@7.27.0':
- dependencies:
- '@babel/types': 7.27.0
-
'@babel/parser@7.28.3':
dependencies:
'@babel/types': 7.28.2
@@ -4228,16 +4317,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/types@7.26.0':
- dependencies:
- '@babel/helper-string-parser': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
-
- '@babel/types@7.27.0':
- dependencies:
- '@babel/helper-string-parser': 7.25.9
- '@babel/helper-validator-identifier': 7.25.9
-
'@babel/types@7.28.2':
dependencies:
'@babel/helper-string-parser': 7.27.1
@@ -4321,9 +4400,9 @@ snapshots:
'@esbuild/win32-x64@0.21.5':
optional: true
- '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@2.4.2))':
+ '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@2.6.1))':
dependencies:
- eslint: 9.15.0(jiti@2.4.2)
+ eslint: 9.15.0(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
@@ -4462,7 +4541,7 @@ snapshots:
'@jridgewell/gen-mapping@0.3.8':
dependencies:
'@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.25
'@jridgewell/resolve-uri@3.1.2': {}
@@ -4476,10 +4555,12 @@ snapshots:
'@jridgewell/sourcemap-codec@1.5.0': {}
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/sourcemap-codec': 1.5.5
'@mdi/font@7.4.47': {}
@@ -4674,6 +4755,8 @@ snapshots:
'@rtsao/scc@1.1.0': {}
+ '@socket.io/component-emitter@3.1.2': {}
+
'@surma/rollup-plugin-off-main-thread@2.2.3':
dependencies:
ejs: 3.1.10
@@ -4707,6 +4790,8 @@ snapshots:
'@types/validator@13.15.3': {}
+ '@types/web-bluetooth@0.0.21': {}
+
'@vite-pwa/assets-generator@1.0.0':
dependencies:
cac: 6.7.14
@@ -4716,15 +4801,15 @@ snapshots:
sharp-ico: 0.1.5
unconfig: 7.3.1
- '@vitejs/plugin-vue@5.2.3(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)':
+ '@vitejs/plugin-vue@5.2.3(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)':
dependencies:
- vite: 5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
+ vite: 5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
vue: 3.5.20
'@vue-macros/common@1.16.1(vue@3.5.20)':
dependencies:
- '@vue/compiler-sfc': 3.5.13
- ast-kit: 1.4.2
+ '@vue/compiler-sfc': 3.5.20
+ ast-kit: 1.4.3
local-pkg: 1.1.1
magic-string-ast: 0.7.1
pathe: 2.0.3
@@ -4732,14 +4817,6 @@ snapshots:
optionalDependencies:
vue: 3.5.20
- '@vue/compiler-core@3.5.13':
- dependencies:
- '@babel/parser': 7.26.2
- '@vue/shared': 3.5.13
- entities: 4.5.0
- estree-walker: 2.0.2
- source-map-js: 1.2.1
-
'@vue/compiler-core@3.5.20':
dependencies:
'@babel/parser': 7.28.3
@@ -4748,28 +4825,11 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.5.13':
- dependencies:
- '@vue/compiler-core': 3.5.13
- '@vue/shared': 3.5.13
-
'@vue/compiler-dom@3.5.20':
dependencies:
'@vue/compiler-core': 3.5.20
'@vue/shared': 3.5.20
- '@vue/compiler-sfc@3.5.13':
- dependencies:
- '@babel/parser': 7.26.2
- '@vue/compiler-core': 3.5.13
- '@vue/compiler-dom': 3.5.13
- '@vue/compiler-ssr': 3.5.13
- '@vue/shared': 3.5.13
- estree-walker: 2.0.2
- magic-string: 0.30.12
- postcss: 8.4.49
- source-map-js: 1.2.1
-
'@vue/compiler-sfc@3.5.20':
dependencies:
'@babel/parser': 7.28.3
@@ -4782,11 +4842,6 @@ snapshots:
postcss: 8.5.6
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.5.13':
- dependencies:
- '@vue/compiler-dom': 3.5.13
- '@vue/shared': 3.5.13
-
'@vue/compiler-ssr@3.5.20':
dependencies:
'@vue/compiler-dom': 3.5.20
@@ -4834,8 +4889,6 @@ snapshots:
'@vue/shared': 3.5.20
vue: 3.5.20
- '@vue/shared@3.5.13': {}
-
'@vue/shared@3.5.20': {}
'@vuetify/loader-shared@2.1.1(vue@3.5.20)(vuetify@3.9.6)':
@@ -4844,6 +4897,19 @@ snapshots:
vue: 3.5.20
vuetify: 3.9.6(vite-plugin-vuetify@2.1.2)(vue@3.5.20)
+ '@vueuse/core@13.9.0(vue@3.5.20)':
+ dependencies:
+ '@types/web-bluetooth': 0.0.21
+ '@vueuse/metadata': 13.9.0
+ '@vueuse/shared': 13.9.0(vue@3.5.20)
+ vue: 3.5.20
+
+ '@vueuse/metadata@13.9.0': {}
+
+ '@vueuse/shared@13.9.0(vue@3.5.20)':
+ dependencies:
+ vue: 3.5.20
+
acorn-jsx@5.3.2(acorn@8.14.0):
dependencies:
acorn: 8.14.0
@@ -4940,20 +5006,15 @@ snapshots:
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
- ast-kit@1.3.1:
+ ast-kit@1.4.3:
dependencies:
- '@babel/parser': 7.27.0
- pathe: 1.1.2
-
- ast-kit@1.4.2:
- dependencies:
- '@babel/parser': 7.27.0
+ '@babel/parser': 7.28.3
pathe: 2.0.3
ast-walker-scope@0.6.2:
dependencies:
- '@babel/parser': 7.27.0
- ast-kit: 1.3.1
+ '@babel/parser': 7.28.3
+ ast-kit: 1.4.3
async-function@1.0.0: {}
@@ -5233,6 +5294,9 @@ snapshots:
detect-libc@2.0.3: {}
+ detect-libc@2.1.2:
+ optional: true
+
doctrine@2.1.0:
dependencies:
esutils: 2.0.3
@@ -5249,6 +5313,20 @@ snapshots:
electron-to-chromium@1.5.132: {}
+ engine.io-client@6.6.3:
+ dependencies:
+ '@socket.io/component-emitter': 3.1.2
+ debug: 4.3.7
+ engine.io-parser: 5.2.3
+ ws: 8.17.1
+ xmlhttprequest-ssl: 2.1.2
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ engine.io-parser@5.2.3: {}
+
entities@4.5.0: {}
es-abstract@1.23.5:
@@ -5431,9 +5509,9 @@ snapshots:
escape-string-regexp@5.0.0: {}
- eslint-compat-utils@0.5.1(eslint@9.15.0(jiti@2.4.2)):
+ eslint-compat-utils@0.5.1(eslint@9.15.0(jiti@2.6.1)):
dependencies:
- eslint: 9.15.0(jiti@2.4.2)
+ eslint: 9.15.0(jiti@2.6.1)
semver: 7.6.3
eslint-import-resolver-node@0.3.9:
@@ -5444,29 +5522,29 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.15.0(jiti@2.4.2)):
+ eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.15.0(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- eslint: 9.15.0(jiti@2.4.2)
+ eslint: 9.15.0(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-es-x@7.8.0(eslint@9.15.0(jiti@2.4.2)):
+ eslint-plugin-es-x@7.8.0(eslint@9.15.0(jiti@2.6.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.2))
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
- eslint: 9.15.0(jiti@2.4.2)
- eslint-compat-utils: 0.5.1(eslint@9.15.0(jiti@2.4.2))
+ eslint: 9.15.0(jiti@2.6.1)
+ eslint-compat-utils: 0.5.1(eslint@9.15.0(jiti@2.6.1))
- eslint-plugin-es@3.0.1(eslint@9.15.0(jiti@2.4.2)):
+ eslint-plugin-es@3.0.1(eslint@9.15.0(jiti@2.6.1)):
dependencies:
- eslint: 9.15.0(jiti@2.4.2)
+ eslint: 9.15.0(jiti@2.6.1)
eslint-utils: 2.1.0
regexpp: 3.2.0
- eslint-plugin-import@2.31.0(eslint@9.15.0(jiti@2.4.2)):
+ eslint-plugin-import@2.31.0(eslint@9.15.0(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -5475,9 +5553,9 @@ snapshots:
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.15.0(jiti@2.4.2)
+ eslint: 9.15.0(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.15.0(jiti@2.4.2))
+ eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.15.0(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -5493,12 +5571,12 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-n@16.6.2(eslint@9.15.0(jiti@2.4.2)):
+ eslint-plugin-n@16.6.2(eslint@9.15.0(jiti@2.6.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.2))
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.6.1))
builtins: 5.1.0
- eslint: 9.15.0(jiti@2.4.2)
- eslint-plugin-es-x: 7.8.0(eslint@9.15.0(jiti@2.4.2))
+ eslint: 9.15.0(jiti@2.6.1)
+ eslint-plugin-es-x: 7.8.0(eslint@9.15.0(jiti@2.6.1))
get-tsconfig: 4.8.1
globals: 13.24.0
ignore: 5.3.2
@@ -5508,30 +5586,30 @@ snapshots:
resolve: 1.22.8
semver: 7.6.3
- eslint-plugin-node@11.1.0(eslint@9.15.0(jiti@2.4.2)):
+ eslint-plugin-node@11.1.0(eslint@9.15.0(jiti@2.6.1)):
dependencies:
- eslint: 9.15.0(jiti@2.4.2)
- eslint-plugin-es: 3.0.1(eslint@9.15.0(jiti@2.4.2))
+ eslint: 9.15.0(jiti@2.6.1)
+ eslint-plugin-es: 3.0.1(eslint@9.15.0(jiti@2.6.1))
eslint-utils: 2.1.0
ignore: 5.3.2
minimatch: 3.1.2
resolve: 1.22.8
semver: 6.3.1
- eslint-plugin-promise@6.6.0(eslint@9.15.0(jiti@2.4.2)):
+ eslint-plugin-promise@6.6.0(eslint@9.15.0(jiti@2.6.1)):
dependencies:
- eslint: 9.15.0(jiti@2.4.2)
+ eslint: 9.15.0(jiti@2.6.1)
- eslint-plugin-vue@9.31.0(eslint@9.15.0(jiti@2.4.2)):
+ eslint-plugin-vue@9.31.0(eslint@9.15.0(jiti@2.6.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.2))
- eslint: 9.15.0(jiti@2.4.2)
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.6.1))
+ eslint: 9.15.0(jiti@2.6.1)
globals: 13.24.0
natural-compare: 1.4.0
nth-check: 2.1.1
postcss-selector-parser: 6.1.2
semver: 7.6.3
- vue-eslint-parser: 9.4.3(eslint@9.15.0(jiti@2.4.2))
+ vue-eslint-parser: 9.4.3(eslint@9.15.0(jiti@2.6.1))
xml-name-validator: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -5556,9 +5634,9 @@ snapshots:
eslint-visitor-keys@4.2.0: {}
- eslint@9.15.0(jiti@2.4.2):
+ eslint@9.15.0(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.2))
+ '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.19.0
'@eslint/core': 0.9.0
@@ -5593,7 +5671,7 @@ snapshots:
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
- jiti: 2.4.2
+ jiti: 2.6.1
transitivePeerDependencies:
- supports-color
@@ -6076,6 +6154,9 @@ snapshots:
jiti@2.4.2: {}
+ jiti@2.6.1:
+ optional: true
+
js-base64@3.7.8: {}
js-tokens@4.0.0: {}
@@ -6125,6 +6206,52 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
+ lightningcss-darwin-arm64@1.30.1:
+ optional: true
+
+ lightningcss-darwin-x64@1.30.1:
+ optional: true
+
+ lightningcss-freebsd-x64@1.30.1:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.30.1:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.30.1:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.30.1:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.30.1:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.30.1:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.30.1:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.30.1:
+ optional: true
+
+ lightningcss@1.30.1:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-darwin-arm64: 1.30.1
+ lightningcss-darwin-x64: 1.30.1
+ lightningcss-freebsd-x64: 1.30.1
+ lightningcss-linux-arm-gnueabihf: 1.30.1
+ lightningcss-linux-arm64-gnu: 1.30.1
+ lightningcss-linux-arm64-musl: 1.30.1
+ lightningcss-linux-x64-gnu: 1.30.1
+ lightningcss-linux-x64-musl: 1.30.1
+ lightningcss-win32-arm64-msvc: 1.30.1
+ lightningcss-win32-x64-msvc: 1.30.1
+ optional: true
+
local-pkg@1.1.1:
dependencies:
mlly: 1.7.4
@@ -6153,6 +6280,10 @@ snapshots:
dependencies:
yallist: 3.1.1
+ lucide-vue-next@0.545.0(vue@3.5.20):
+ dependencies:
+ vue: 3.5.20
+
magic-string-ast@0.7.1:
dependencies:
magic-string: 0.30.17
@@ -6161,14 +6292,12 @@ snapshots:
dependencies:
sourcemap-codec: 1.4.8
- magic-string@0.30.12:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
-
magic-string@0.30.17:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
+ marked@16.4.0: {}
+
math-intrinsics@1.1.0: {}
merge2@1.4.1: {}
@@ -6209,8 +6338,6 @@ snapshots:
nanoid@3.3.11: {}
- nanoid@3.3.7: {}
-
natural-compare@1.4.0: {}
node-addon-api@7.1.1:
@@ -6306,8 +6433,6 @@ snapshots:
path-parse@1.0.7: {}
- pathe@1.1.2: {}
-
pathe@2.0.3: {}
perfect-debounce@1.0.0: {}
@@ -6346,12 +6471,6 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss@8.4.49:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
postcss@8.5.3:
dependencies:
nanoid: 3.3.11
@@ -6766,6 +6885,24 @@ snapshots:
smob@1.5.0: {}
+ socket.io-client@4.8.1:
+ dependencies:
+ '@socket.io/component-emitter': 3.1.2
+ debug: 4.3.7
+ engine.io-client: 6.6.3
+ socket.io-parser: 4.2.4
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ socket.io-parser@4.2.4:
+ dependencies:
+ '@socket.io/component-emitter': 3.1.2
+ debug: 4.3.7
+ transitivePeerDependencies:
+ - supports-color
+
sortablejs@1.15.6: {}
source-map-js@1.2.1: {}
@@ -7074,7 +7211,7 @@ snapshots:
universalify@2.0.1: {}
- unplugin-auto-import@19.1.2:
+ unplugin-auto-import@19.1.2(@vueuse/core@13.9.0(vue@3.5.20)):
dependencies:
local-pkg: 1.1.1
magic-string: 0.30.17
@@ -7082,12 +7219,14 @@ snapshots:
unimport: 4.1.3
unplugin: 2.2.2
unplugin-utils: 0.2.4
+ optionalDependencies:
+ '@vueuse/core': 13.9.0(vue@3.5.20)
- unplugin-fonts@1.3.1(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)):
+ unplugin-fonts@1.3.1(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)):
dependencies:
fast-glob: 3.3.2
unplugin: 2.0.0-beta.1
- vite: 5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
+ vite: 5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
unplugin-utils@0.2.4:
dependencies:
@@ -7112,7 +7251,7 @@ snapshots:
unplugin-vue-router@0.12.0(vue-router@4.5.1(vue@3.5.20))(vue@3.5.20):
dependencies:
- '@babel/types': 7.27.0
+ '@babel/types': 7.28.2
'@vue-macros/common': 1.16.1(vue@3.5.20)
ast-walker-scope: 0.6.2
chokidar: 4.0.3
@@ -7126,7 +7265,7 @@ snapshots:
scule: 1.3.0
unplugin: 2.2.2
unplugin-utils: 0.2.4
- yaml: 2.7.1
+ yaml: 2.8.1
optionalDependencies:
vue-router: 4.5.1(vue@3.5.20)
transitivePeerDependencies:
@@ -7164,12 +7303,12 @@ snapshots:
varint@6.0.0: {}
- vite-plugin-pwa@1.0.3(@vite-pwa/assets-generator@1.0.0)(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(workbox-build@7.3.0)(workbox-window@7.3.0):
+ vite-plugin-pwa@1.0.3(@vite-pwa/assets-generator@1.0.0)(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(workbox-build@7.3.0)(workbox-window@7.3.0):
dependencies:
debug: 4.4.0
pretty-bytes: 6.1.1
tinyglobby: 0.2.12
- vite: 5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
+ vite: 5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
workbox-build: 7.3.0
workbox-window: 7.3.0
optionalDependencies:
@@ -7177,42 +7316,43 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vite-plugin-vue-layouts@0.11.0(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue-router@4.5.1(vue@3.5.20))(vue@3.5.20):
+ vite-plugin-vue-layouts@0.11.0(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue-router@4.5.1(vue@3.5.20))(vue@3.5.20):
dependencies:
debug: 4.3.7
fast-glob: 3.3.2
- vite: 5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
+ vite: 5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
vue: 3.5.20
vue-router: 4.5.1(vue@3.5.20)
transitivePeerDependencies:
- supports-color
- vite-plugin-vuetify@2.1.2(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)(vuetify@3.9.6):
+ vite-plugin-vuetify@2.1.2(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)(vuetify@3.9.6):
dependencies:
'@vuetify/loader-shared': 2.1.1(vue@3.5.20)(vuetify@3.9.6)
debug: 4.4.0
upath: 2.0.1
- vite: 5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
+ vite: 5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0)
vue: 3.5.20
vuetify: 3.9.6(vite-plugin-vuetify@2.1.2)(vue@3.5.20)
transitivePeerDependencies:
- supports-color
- vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0):
+ vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0):
dependencies:
esbuild: 0.21.5
postcss: 8.5.3
rollup: 4.39.0
optionalDependencies:
fsevents: 2.3.3
+ lightningcss: 1.30.1
sass: 1.86.3
sass-embedded: 1.86.3
terser: 5.39.0
- vue-eslint-parser@9.4.3(eslint@9.15.0(jiti@2.4.2)):
+ vue-eslint-parser@9.4.3(eslint@9.15.0(jiti@2.6.1)):
dependencies:
debug: 4.3.7
- eslint: 9.15.0(jiti@2.4.2)
+ eslint: 9.15.0(jiti@2.6.1)
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
@@ -7227,6 +7367,8 @@ snapshots:
'@vue/devtools-api': 6.6.4
vue: 3.5.20
+ vue-sonner@2.0.9: {}
+
vue@3.5.20:
dependencies:
'@vue/compiler-dom': 3.5.20
@@ -7239,7 +7381,7 @@ snapshots:
dependencies:
vue: 3.5.20
optionalDependencies:
- vite-plugin-vuetify: 2.1.2(vite@5.4.17(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)(vuetify@3.9.6)
+ vite-plugin-vuetify: 2.1.2(vite@5.4.17(lightningcss@1.30.1)(sass-embedded@1.86.3)(sass@1.86.3)(terser@5.39.0))(vue@3.5.20)(vuetify@3.9.6)
webidl-conversions@4.0.2: {}
@@ -7429,10 +7571,14 @@ snapshots:
wrappy@1.0.2: {}
+ ws@8.17.1: {}
+
xml-name-validator@4.0.0: {}
+ xmlhttprequest-ssl@2.1.2: {}
+
yallist@3.1.1: {}
- yaml@2.7.1: {}
+ yaml@2.8.1: {}
yocto-queue@0.1.0: {}
diff --git a/src/App.vue b/src/App.vue
index d97ba1c..17abb14 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,11 +1,15 @@
+ 输入你在 Classworks KV 获取的认证信息
+
+ 适用于班级大屏的作业板小工具
+
+ 作业板应用
+
+ 云端数据库
+
+ 在教室、办公室、家中的任何设备上访问相同的数据
+
+ 修改后立即同步,所有设备保持数据一致
+
+ 通过密码和命名空间隔离,保护班级数据安全
+ 您确定要重新初始化云端存储吗?
+ 设备认证
+
+
+ 欢迎使用 Classworks
+
+
+ Classworks 和 Classworks KV 的关系
+
+
+
+ Classworks
+
+
+ • 管理班级信息
+ • 提供用户界面
+
+ Classworks KV
+
+
+ • 多设备同步
+ • 权限管理
+
+
+
+
+ 多设备访问
+
+
+ 实时同步
+
+
+ 安全可靠
+
+
+ 你需要在多个设备上查看作业吗?
+
+
+
+ 您可以使用本地模式
+
+
+ 需要先设置云端账号
+
+
+ 请访问 {{ kvserverurl=='https://kv.houlang.cloud'? 'Classworks KV' : '自定义的 Classworks KV 实例 ' }} 控制台
+
+
+ {{ kvserverurl=='https://kv.houlang.cloud'? '此实例由 Classworks KV 官方提供' : '此链接由您的实例、预配代码或管理员管理,当前可能不是 Classworks KV 官方的实例地址。' }}
+
+
+
+
Classworks KV 的全域管理员是 孙悟元