Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
3d05e503
"backend/internal/vscode:/vscode.git/clone" did not exist on "9078b17a41ef717c99dfcde899d80b23507a3a2a"
Commit
3d05e503
authored
Dec 18, 2025
by
shaw
Browse files
fix: frontend build error
parent
642842c2
Changes
33
Hide whitespace changes
Inline
Side-by-side
frontend/package-lock.json
View file @
3d05e503
...
...
@@ -19,13 +19,14 @@
},
"devDependencies"
:
{
"@types/node"
:
"^20.10.5"
,
"@vitejs/plugin-vue"
:
"^
4.
5.2"
,
"@vitejs/plugin-vue"
:
"^5.2
.3
"
,
"autoprefixer"
:
"^10.4.16"
,
"postcss"
:
"^8.4.32"
,
"tailwindcss"
:
"^3.4.0"
,
"typescript"
:
"
^
5.
3.3
"
,
"typescript"
:
"
~
5.
6.0
"
,
"vite"
:
"^5.0.10"
,
"vue-tsc"
:
"^1.8.25"
"vite-plugin-checker"
:
"^0.9.1"
,
"vue-tsc"
:
"^2.2.0"
}
},
"node_modules/@alloc/quick-lru"
:
{
...
...
@@ -41,6 +42,21 @@
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@babel/code-frame"
:
{
"version"
:
"7.27.1"
,
"resolved"
:
"https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.27.1.tgz"
,
"integrity"
:
"sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@babel/helper-validator-identifier"
:
"^7.27.1"
,
"js-tokens"
:
"^4.0.0"
,
"picocolors"
:
"^1.1.1"
},
"engines"
:
{
"node"
:
">=6.9.0"
}
},
"node_modules/@babel/helper-string-parser"
:
{
"version"
:
"7.27.1"
,
"resolved"
:
"https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz"
,
...
...
@@ -605,9 +621,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ
=="
,
"cpu"
:
[
"arm"
],
...
...
@@ -619,9 +635,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4
w=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmV
w=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -633,9 +649,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ
=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -647,9 +663,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA
=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -661,9 +677,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4
w=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+v
w=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -675,9 +691,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+
Q=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoB
Q=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -689,9 +705,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA
=="
,
"cpu"
:
[
"arm"
],
...
...
@@ -703,9 +719,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ
=="
,
"cpu"
:
[
"arm"
],
...
...
@@ -717,9 +733,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg
=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -731,9 +747,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g
=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -745,9 +761,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA
=="
,
"cpu"
:
[
"loong64"
],
...
...
@@ -759,9 +775,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q
=="
,
"cpu"
:
[
"ppc64"
],
...
...
@@ -773,9 +789,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ
=="
,
"cpu"
:
[
"riscv64"
],
...
...
@@ -787,9 +803,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w
=="
,
"cpu"
:
[
"riscv64"
],
...
...
@@ -801,9 +817,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw
=="
,
"cpu"
:
[
"s390x"
],
...
...
@@ -815,9 +831,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+
w=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5au
w=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -829,9 +845,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg
=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -843,9 +859,9 @@
]
},
"node_modules/@rollup/rollup-openharmony-arm64"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg
=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -857,9 +873,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA
=="
,
"cpu"
:
[
"arm64"
],
...
...
@@ -871,9 +887,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w
=="
,
"cpu"
:
[
"ia32"
],
...
...
@@ -885,9 +901,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A
=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -899,9 +915,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYK
Q=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjT
Q=="
,
"cpu"
:
[
"x64"
],
...
...
@@ -920,9 +936,9 @@
"license"
:
"MIT"
},
"node_modules/@types/node"
:
{
"version"
:
"20.19.2
6
"
,
"resolved"
:
"https://registry.npmmirror.com/@types/node/-/node-20.19.2
6
.tgz"
,
"integrity"
:
"sha512-
0l6cjgF0XnihUpndDhk+nyD3exio3iKaYROSgvh/qSevPXax3L8p5DBRFjbvalnwatGgHEQn2R88y2fA3g4ir
g=="
,
"version"
:
"20.19.2
7
"
,
"resolved"
:
"https://registry.npmmirror.com/@types/node/-/node-20.19.2
7
.tgz"
,
"integrity"
:
"sha512-
N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMu
g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
...
...
@@ -936,48 +952,46 @@
"license"
:
"MIT"
},
"node_modules/@vitejs/plugin-vue"
:
{
"version"
:
"
4.6.2
"
,
"resolved"
:
"https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-
4.6.2
.tgz"
,
"integrity"
:
"sha512-
kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw
=="
,
"version"
:
"
5.2.4
"
,
"resolved"
:
"https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-
5.2.4
.tgz"
,
"integrity"
:
"sha512-
7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA
=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
"^1
4.18
.0 || >=
16
.0.0"
"node"
:
"^1
8.0
.0 || >=
20
.0.0"
},
"peerDependencies"
:
{
"vite"
:
"^
4
.0.0 || ^
5
.0.0"
,
"vite"
:
"^
5
.0.0 || ^
6
.0.0"
,
"vue"
:
"^3.2.25"
}
},
"node_modules/@volar/language-core"
:
{
"version"
:
"
1.11
.1"
,
"resolved"
:
"https://registry.npmmirror.com/@volar/language-core/-/language-core-
1.11
.1.tgz"
,
"integrity"
:
"sha512-
dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw
=="
,
"version"
:
"
2.4
.1
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@volar/language-core/-/language-core-
2.4
.1
5
.tgz"
,
"integrity"
:
"sha512-
3VHw+QZU0ZG9IuQmzT68IyN4hZNd9GchGPhbD9+pa8CVv7rnoOZwo7T8weIbrRmihqy3ATpdfXFnqRrfPVK6CA
=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@volar/source-map"
:
"
1.11
.1"
"@volar/source-map"
:
"
2.4
.1
5
"
}
},
"node_modules/@volar/source-map"
:
{
"version"
:
"
1.11
.1"
,
"resolved"
:
"https://registry.npmmirror.com/@volar/source-map/-/source-map-
1.11
.1.tgz"
,
"integrity"
:
"sha512-
hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZ
g=="
,
"version"
:
"
2.4
.1
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@volar/source-map/-/source-map-
2.4
.1
5
.tgz"
,
"integrity"
:
"sha512-
CPbMWlUN6hVZJYGcU/GSoHu4EnCHiLaXI9n8c9la6RaI9W5JHX+NqG+GSQcB0JdC2FIBLdZJwGsfKyBB71VlT
g=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"muggle-string"
:
"^0.3.1"
}
"license"
:
"MIT"
},
"node_modules/@volar/typescript"
:
{
"version"
:
"
1.11
.1"
,
"resolved"
:
"https://registry.npmmirror.com/@volar/typescript/-/typescript-
1.11
.1.tgz"
,
"integrity"
:
"sha512-
iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ
=="
,
"version"
:
"
2.4
.1
5
"
,
"resolved"
:
"https://registry.npmmirror.com/@volar/typescript/-/typescript-
2.4
.1
5
.tgz"
,
"integrity"
:
"sha512-
2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg
=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@volar/language-core"
:
"1.11.1"
,
"path-browserify"
:
"^1.0.1"
"@volar/language-core"
:
"2.4.15"
,
"path-browserify"
:
"^1.0.1"
,
"vscode-uri"
:
"^3.0.8"
}
},
"node_modules/@vue/compiler-core"
:
{
...
...
@@ -1030,6 +1044,17 @@
"@vue/shared"
:
"3.5.25"
}
},
"node_modules/@vue/compiler-vue2"
:
{
"version"
:
"2.7.16"
,
"resolved"
:
"https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz"
,
"integrity"
:
"sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"de-indent"
:
"^1.0.2"
,
"he"
:
"^1.2.0"
}
},
"node_modules/@vue/devtools-api"
:
{
"version"
:
"6.6.4"
,
"resolved"
:
"https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz"
,
...
...
@@ -1037,21 +1062,20 @@
"license"
:
"MIT"
},
"node_modules/@vue/language-core"
:
{
"version"
:
"
1.8.27
"
,
"resolved"
:
"https://registry.npmmirror.com/@vue/language-core/-/language-core-
1.8.27
.tgz"
,
"integrity"
:
"sha512-
L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+m
A=="
,
"version"
:
"
2.2.12
"
,
"resolved"
:
"https://registry.npmmirror.com/@vue/language-core/-/language-core-
2.2.12
.tgz"
,
"integrity"
:
"sha512-
IsGljWbKGU1MZpBPN+BvPAdr55YPkj2nB/TBNGNC32Vy2qLG25DYu/NBN2vNtZqdRbTRjaoYrahLrToim2Nan
A=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@volar/language-core"
:
"
~1.11
.1"
,
"@v
olar/source-map"
:
"~1.11.1
"
,
"@vue/compiler-
dom
"
:
"^
3.3.0
"
,
"@vue/shared"
:
"^3.
3
.0"
,
"
computed
s"
:
"^
0
.0.
1
"
,
"@volar/language-core"
:
"
2.4
.1
5
"
,
"@v
ue/compiler-dom"
:
"^3.5.0
"
,
"@vue/compiler-
vue2
"
:
"^
2.7.16
"
,
"@vue/shared"
:
"^3.
5
.0"
,
"
alien-signal
s"
:
"^
1
.0.
3
"
,
"minimatch"
:
"^9.0.3"
,
"muggle-string"
:
"^0.3.1"
,
"path-browserify"
:
"^1.0.1"
,
"vue-template-compiler"
:
"^2.7.14"
"muggle-string"
:
"^0.4.1"
,
"path-browserify"
:
"^1.0.1"
},
"peerDependencies"
:
{
"typescript"
:
"*"
...
...
@@ -1148,6 +1172,26 @@
"url"
:
"https://github.com/sponsors/antfu"
}
},
"node_modules/alien-signals"
:
{
"version"
:
"1.0.13"
,
"resolved"
:
"https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.13.tgz"
,
"integrity"
:
"sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/ansi-regex"
:
{
"version"
:
"6.2.2"
,
"resolved"
:
"https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz"
,
"integrity"
:
"sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/any-promise"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz"
,
...
...
@@ -1183,9 +1227,9 @@
"license"
:
"MIT"
},
"node_modules/autoprefixer"
:
{
"version"
:
"10.4.2
2
"
,
"resolved"
:
"https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.2
2
.tgz"
,
"integrity"
:
"sha512-
ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg
=="
,
"version"
:
"10.4.2
3
"
,
"resolved"
:
"https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.2
3
.tgz"
,
"integrity"
:
"sha512-
YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA
=="
,
"dev"
:
true
,
"funding"
:
[
{
...
...
@@ -1203,10 +1247,9 @@
],
"license"
:
"MIT"
,
"dependencies"
:
{
"browserslist"
:
"^4.2
7.0
"
,
"caniuse-lite"
:
"^1.0.300017
54
"
,
"browserslist"
:
"^4.2
8.1
"
,
"caniuse-lite"
:
"^1.0.300017
60
"
,
"fraction.js"
:
"^5.3.4"
,
"normalize-range"
:
"^0.1.2"
,
"picocolors"
:
"^1.1.1"
,
"postcss-value-parser"
:
"^4.2.0"
},
...
...
@@ -1239,9 +1282,9 @@
"license"
:
"MIT"
},
"node_modules/baseline-browser-mapping"
:
{
"version"
:
"2.9.
7
"
,
"resolved"
:
"https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.
7
.tgz"
,
"integrity"
:
"sha512-
k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Z
g=="
,
"version"
:
"2.9.
9
"
,
"resolved"
:
"https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.
9
.tgz"
,
"integrity"
:
"sha512-
V8fbOCSeOFvlDj7LLChUcqbZrdKD9RU/VR260piF1790vT0mfLSwGc/Qzxv3IqiTukOpNtItePa0HBpMAj7MD
g=="
,
"dev"
:
true
,
"license"
:
"Apache-2.0"
,
"bin"
:
{
...
...
@@ -1434,13 +1477,6 @@
"node"
:
">= 6"
}
},
"node_modules/computeds"
:
{
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz"
,
"integrity"
:
"sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/cssesc"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz"
,
...
...
@@ -1933,6 +1969,13 @@
"jiti"
:
"bin/jiti.js"
}
},
"node_modules/js-tokens"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
,
"integrity"
:
"sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/lilconfig"
:
{
"version"
:
"3.1.3"
,
"resolved"
:
"https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.3.tgz"
,
...
...
@@ -2033,9 +2076,9 @@
}
},
"node_modules/muggle-string"
:
{
"version"
:
"0.
3
.1"
,
"resolved"
:
"https://registry.npmmirror.com/muggle-string/-/muggle-string-0.
3
.1.tgz"
,
"integrity"
:
"sha512-
ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg
=="
,
"version"
:
"0.
4
.1"
,
"resolved"
:
"https://registry.npmmirror.com/muggle-string/-/muggle-string-0.
4
.1.tgz"
,
"integrity"
:
"sha512-
VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ
=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
...
...
@@ -2086,14 +2129,21 @@
"node"
:
">=0.10.0"
}
},
"node_modules/n
ormalize-range
"
:
{
"version"
:
"
0.1.2
"
,
"resolved"
:
"https://registry.npmmirror.com/n
ormalize-range/-/normalize-range-0.1.2
.tgz"
,
"integrity"
:
"sha512-
bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKN
A=="
,
"node_modules/n
pm-run-path
"
:
{
"version"
:
"
6.0.0
"
,
"resolved"
:
"https://registry.npmmirror.com/n
pm-run-path/-/npm-run-path-6.0.0
.tgz"
,
"integrity"
:
"sha512-
9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhW
A=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"path-key"
:
"^4.0.0"
,
"unicorn-magic"
:
"^0.3.0"
},
"engines"
:
{
"node"
:
">=0.10.0"
"node"
:
">=18"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/object-assign"
:
{
...
...
@@ -2123,6 +2173,19 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/path-key"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz"
,
"integrity"
:
"sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/path-parse"
:
{
"version"
:
"1.0.7"
,
"resolved"
:
"https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz"
,
...
...
@@ -2436,9 +2499,9 @@
}
},
"node_modules/rollup"
:
{
"version"
:
"4.53.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/rollup/-/rollup-4.53.
3
.tgz"
,
"integrity"
:
"sha512-
w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA
=="
,
"version"
:
"4.53.
5
"
,
"resolved"
:
"https://registry.npmmirror.com/rollup/-/rollup-4.53.
5
.tgz"
,
"integrity"
:
"sha512-
iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ
=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
...
...
@@ -2452,28 +2515,28 @@
"npm"
:
">=8.0.0"
},
"optionalDependencies"
:
{
"@rollup/rollup-android-arm-eabi"
:
"4.53.
3
"
,
"@rollup/rollup-android-arm64"
:
"4.53.
3
"
,
"@rollup/rollup-darwin-arm64"
:
"4.53.
3
"
,
"@rollup/rollup-darwin-x64"
:
"4.53.
3
"
,
"@rollup/rollup-freebsd-arm64"
:
"4.53.
3
"
,
"@rollup/rollup-freebsd-x64"
:
"4.53.
3
"
,
"@rollup/rollup-linux-arm-gnueabihf"
:
"4.53.
3
"
,
"@rollup/rollup-linux-arm-musleabihf"
:
"4.53.
3
"
,
"@rollup/rollup-linux-arm64-gnu"
:
"4.53.
3
"
,
"@rollup/rollup-linux-arm64-musl"
:
"4.53.
3
"
,
"@rollup/rollup-linux-loong64-gnu"
:
"4.53.
3
"
,
"@rollup/rollup-linux-ppc64-gnu"
:
"4.53.
3
"
,
"@rollup/rollup-linux-riscv64-gnu"
:
"4.53.
3
"
,
"@rollup/rollup-linux-riscv64-musl"
:
"4.53.
3
"
,
"@rollup/rollup-linux-s390x-gnu"
:
"4.53.
3
"
,
"@rollup/rollup-linux-x64-gnu"
:
"4.53.
3
"
,
"@rollup/rollup-linux-x64-musl"
:
"4.53.
3
"
,
"@rollup/rollup-openharmony-arm64"
:
"4.53.
3
"
,
"@rollup/rollup-win32-arm64-msvc"
:
"4.53.
3
"
,
"@rollup/rollup-win32-ia32-msvc"
:
"4.53.
3
"
,
"@rollup/rollup-win32-x64-gnu"
:
"4.53.
3
"
,
"@rollup/rollup-win32-x64-msvc"
:
"4.53.
3
"
,
"@rollup/rollup-android-arm-eabi"
:
"4.53.
5
"
,
"@rollup/rollup-android-arm64"
:
"4.53.
5
"
,
"@rollup/rollup-darwin-arm64"
:
"4.53.
5
"
,
"@rollup/rollup-darwin-x64"
:
"4.53.
5
"
,
"@rollup/rollup-freebsd-arm64"
:
"4.53.
5
"
,
"@rollup/rollup-freebsd-x64"
:
"4.53.
5
"
,
"@rollup/rollup-linux-arm-gnueabihf"
:
"4.53.
5
"
,
"@rollup/rollup-linux-arm-musleabihf"
:
"4.53.
5
"
,
"@rollup/rollup-linux-arm64-gnu"
:
"4.53.
5
"
,
"@rollup/rollup-linux-arm64-musl"
:
"4.53.
5
"
,
"@rollup/rollup-linux-loong64-gnu"
:
"4.53.
5
"
,
"@rollup/rollup-linux-ppc64-gnu"
:
"4.53.
5
"
,
"@rollup/rollup-linux-riscv64-gnu"
:
"4.53.
5
"
,
"@rollup/rollup-linux-riscv64-musl"
:
"4.53.
5
"
,
"@rollup/rollup-linux-s390x-gnu"
:
"4.53.
5
"
,
"@rollup/rollup-linux-x64-gnu"
:
"4.53.
5
"
,
"@rollup/rollup-linux-x64-musl"
:
"4.53.
5
"
,
"@rollup/rollup-openharmony-arm64"
:
"4.53.
5
"
,
"@rollup/rollup-win32-arm64-msvc"
:
"4.53.
5
"
,
"@rollup/rollup-win32-ia32-msvc"
:
"4.53.
5
"
,
"@rollup/rollup-win32-x64-gnu"
:
"4.53.
5
"
,
"@rollup/rollup-win32-x64-msvc"
:
"4.53.
5
"
,
"fsevents"
:
"~2.3.2"
}
},
...
...
@@ -2501,19 +2564,6 @@
"queue-microtask"
:
"^1.2.2"
}
},
"node_modules/semver"
:
{
"version"
:
"7.7.3"
,
"resolved"
:
"https://registry.npmmirror.com/semver/-/semver-7.7.3.tgz"
,
"integrity"
:
"sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="
,
"dev"
:
true
,
"license"
:
"ISC"
,
"bin"
:
{
"semver"
:
"bin/semver.js"
},
"engines"
:
{
"node"
:
">=10"
}
},
"node_modules/source-map-js"
:
{
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz"
,
...
...
@@ -2523,6 +2573,22 @@
"node"
:
">=0.10.0"
}
},
"node_modules/strip-ansi"
:
{
"version"
:
"7.1.2"
,
"resolved"
:
"https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz"
,
"integrity"
:
"sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"ansi-regex"
:
"^6.0.1"
},
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/sucrase"
:
{
"version"
:
"3.35.1"
,
"resolved"
:
"https://registry.npmmirror.com/sucrase/-/sucrase-3.35.1.tgz"
,
...
...
@@ -2620,6 +2686,13 @@
"node"
:
">=0.8"
}
},
"node_modules/tiny-invariant"
:
{
"version"
:
"1.3.3"
,
"resolved"
:
"https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz"
,
"integrity"
:
"sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/tinyglobby"
:
{
"version"
:
"0.2.15"
,
"resolved"
:
"https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz"
,
...
...
@@ -2689,9 +2762,9 @@
"license"
:
"Apache-2.0"
},
"node_modules/typescript"
:
{
"version"
:
"5.
9
.3"
,
"resolved"
:
"https://registry.npmmirror.com/typescript/-/typescript-5.
9
.3.tgz"
,
"integrity"
:
"sha512-
jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgS
w=="
,
"version"
:
"5.
6
.3"
,
"resolved"
:
"https://registry.npmmirror.com/typescript/-/typescript-5.
6
.3.tgz"
,
"integrity"
:
"sha512-
hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1q
w=="
,
"devOptional"
:
true
,
"license"
:
"Apache-2.0"
,
"bin"
:
{
...
...
@@ -2709,10 +2782,23 @@
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/unicorn-magic"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.3.0.tgz"
,
"integrity"
:
"sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=18"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/update-browserslist-db"
:
{
"version"
:
"1.2.
2
"
,
"resolved"
:
"https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.
2
.tgz"
,
"integrity"
:
"sha512-
E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA
=="
,
"version"
:
"1.2.
3
"
,
"resolved"
:
"https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.
3
.tgz"
,
"integrity"
:
"sha512-
Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w
=="
,
"dev"
:
true
,
"funding"
:
[
{
...
...
@@ -2807,6 +2893,118 @@
}
}
},
"node_modules/vite-plugin-checker"
:
{
"version"
:
"0.9.3"
,
"resolved"
:
"https://registry.npmmirror.com/vite-plugin-checker/-/vite-plugin-checker-0.9.3.tgz"
,
"integrity"
:
"sha512-Tf7QBjeBtG7q11zG0lvoF38/2AVUzzhMNu+Wk+mcsJ00Rk/FpJ4rmUviVJpzWkagbU13cGXvKpt7CMiqtxVTbQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@babel/code-frame"
:
"^7.27.1"
,
"chokidar"
:
"^4.0.3"
,
"npm-run-path"
:
"^6.0.0"
,
"picocolors"
:
"^1.1.1"
,
"picomatch"
:
"^4.0.2"
,
"strip-ansi"
:
"^7.1.0"
,
"tiny-invariant"
:
"^1.3.3"
,
"tinyglobby"
:
"^0.2.13"
,
"vscode-uri"
:
"^3.1.0"
},
"engines"
:
{
"node"
:
">=14.16"
},
"peerDependencies"
:
{
"@biomejs/biome"
:
">=1.7"
,
"eslint"
:
">=7"
,
"meow"
:
"^13.2.0"
,
"optionator"
:
"^0.9.4"
,
"stylelint"
:
">=16"
,
"typescript"
:
"*"
,
"vite"
:
">=2.0.0"
,
"vls"
:
"*"
,
"vti"
:
"*"
,
"vue-tsc"
:
"~2.2.10"
},
"peerDependenciesMeta"
:
{
"@biomejs/biome"
:
{
"optional"
:
true
},
"eslint"
:
{
"optional"
:
true
},
"meow"
:
{
"optional"
:
true
},
"optionator"
:
{
"optional"
:
true
},
"stylelint"
:
{
"optional"
:
true
},
"typescript"
:
{
"optional"
:
true
},
"vls"
:
{
"optional"
:
true
},
"vti"
:
{
"optional"
:
true
},
"vue-tsc"
:
{
"optional"
:
true
}
}
},
"node_modules/vite-plugin-checker/node_modules/chokidar"
:
{
"version"
:
"4.0.3"
,
"resolved"
:
"https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz"
,
"integrity"
:
"sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"readdirp"
:
"^4.0.1"
},
"engines"
:
{
"node"
:
">= 14.16.0"
},
"funding"
:
{
"url"
:
"https://paulmillr.com/funding/"
}
},
"node_modules/vite-plugin-checker/node_modules/picomatch"
:
{
"version"
:
"4.0.3"
,
"resolved"
:
"https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz"
,
"integrity"
:
"sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/vite-plugin-checker/node_modules/readdirp"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz"
,
"integrity"
:
"sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"engines"
:
{
"node"
:
">= 14.18.0"
},
"funding"
:
{
"type"
:
"individual"
,
"url"
:
"https://paulmillr.com/funding/"
}
},
"node_modules/vscode-uri"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.1.0.tgz"
,
"integrity"
:
"sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
},
"node_modules/vue"
:
{
"version"
:
"3.5.25"
,
"resolved"
:
"https://registry.npmmirror.com/vue/-/vue-3.5.25.tgz"
,
...
...
@@ -2899,33 +3097,21 @@
"vue"
:
"^3.5.0"
}
},
"node_modules/vue-template-compiler"
:
{
"version"
:
"2.7.16"
,
"resolved"
:
"https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz"
,
"integrity"
:
"sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"de-indent"
:
"^1.0.2"
,
"he"
:
"^1.2.0"
}
},
"node_modules/vue-tsc"
:
{
"version"
:
"
1.8.27
"
,
"resolved"
:
"https://registry.npmmirror.com/vue-tsc/-/vue-tsc-
1.8.27
.tgz"
,
"integrity"
:
"sha512-
WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg
=="
,
"version"
:
"
2.2.12
"
,
"resolved"
:
"https://registry.npmmirror.com/vue-tsc/-/vue-tsc-
2.2.12
.tgz"
,
"integrity"
:
"sha512-
P7OP77b2h/Pmk+lZdJ0YWs+5tJ6J2+uOQPo7tlBnY44QqQSPYvS0qVT4wqDJgwrZaLe47etJLLQRFia71GYITw
=="
,
"dev"
:
true
,
"license"
:
"MIT"
,
"dependencies"
:
{
"@volar/typescript"
:
"~1.11.1"
,
"@vue/language-core"
:
"1.8.27"
,
"semver"
:
"^7.5.4"
"@volar/typescript"
:
"2.4.15"
,
"@vue/language-core"
:
"2.2.12"
},
"bin"
:
{
"vue-tsc"
:
"bin/vue-tsc.js"
},
"peerDependencies"
:
{
"typescript"
:
"
*
"
"typescript"
:
"
>=5.0.0
"
}
}
}
...
...
frontend/package.json
View file @
3d05e503
...
...
@@ -5,9 +5,10 @@
"type"
:
"module"
,
"scripts"
:
{
"dev"
:
"vite"
,
"build"
:
"vue-tsc && vite build"
,
"build"
:
"vue-tsc
-b
&& vite build"
,
"preview"
:
"vite preview"
,
"lint"
:
"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix"
"lint"
:
"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix"
,
"typecheck"
:
"vue-tsc --noEmit"
},
"dependencies"
:
{
"@vueuse/core"
:
"^10.7.0"
,
...
...
@@ -21,12 +22,13 @@
},
"devDependencies"
:
{
"@types/node"
:
"^20.10.5"
,
"@vitejs/plugin-vue"
:
"^
4.
5.2"
,
"@vitejs/plugin-vue"
:
"^5.2
.3
"
,
"autoprefixer"
:
"^10.4.16"
,
"postcss"
:
"^8.4.32"
,
"tailwindcss"
:
"^3.4.0"
,
"typescript"
:
"
^
5.
3.3
"
,
"typescript"
:
"
~
5.
6.0
"
,
"vite"
:
"^5.0.10"
,
"vue-tsc"
:
"^1.8.25"
"vite-plugin-checker"
:
"^0.9.1"
,
"vue-tsc"
:
"^2.2.0"
}
}
frontend/src/api/admin/redeem.ts
View file @
3d05e503
...
...
@@ -23,7 +23,7 @@ export async function list(
pageSize
:
number
=
20
,
filters
?:
{
type
?:
RedeemCodeType
;
status
?:
'
active
'
|
'
used
'
|
'
expired
'
;
status
?:
'
active
'
|
'
used
'
|
'
expired
'
|
'
unused
'
;
search
?:
string
;
}
):
Promise
<
PaginatedResponse
<
RedeemCode
>>
{
...
...
frontend/src/components/account/CreateAccountModal.vue
View file @
3d05e503
...
...
@@ -506,7 +506,7 @@
{{
t
(
'
common.back
'
)
}}
<
/button
>
<
button
v
-
if
=
"
oauthFlowRef?.inputMethod?.value === 'manual'
"
v
-
if
=
"
isManualInputMethod
"
type
=
"
button
"
:
disabled
=
"
!canExchangeCode
"
class
=
"
btn btn-primary
"
...
...
@@ -533,14 +533,22 @@ import { ref, reactive, computed, watch } from 'vue'
import
{
useI18n
}
from
'
vue-i18n
'
import
{
useAppStore
}
from
'
@/stores/app
'
import
{
adminAPI
}
from
'
@/api/admin
'
import
{
useAccountOAuth
,
type
AddMethod
}
from
'
@/composables/useAccountOAuth
'
import
{
useAccountOAuth
,
type
AddMethod
,
type
AuthInputMethod
}
from
'
@/composables/useAccountOAuth
'
import
type
{
Proxy
,
Group
,
AccountPlatform
,
AccountType
}
from
'
@/types
'
import
Modal
from
'
@/components/common/Modal.vue
'
import
Select
from
'
@/components/common/Select.vue
'
import
ProxySelector
from
'
@/components/common/ProxySelector.vue
'
import
GroupSelector
from
'
@/components/common/GroupSelector.vue
'
import
OAuthAuthorizationFlow
from
'
./OAuthAuthorizationFlow.vue
'
// Type for exposed OAuthAuthorizationFlow component
// Note: defineExpose automatically unwraps refs, so we use the unwrapped types
interface
OAuthFlowExposed
{
authCode
:
string
sessionKey
:
string
inputMethod
:
AuthInputMethod
reset
:
()
=>
void
}
const
{
t
}
=
useI18n
()
interface
Props
{
...
...
@@ -561,7 +569,7 @@ const appStore = useAppStore()
const
oauth
=
useAccountOAuth
()
// Refs
const
oauthFlowRef
=
ref
<
InstanceType
<
typeof
OAuthAuthorizationFlow
>
|
null
>
(
null
)
const
oauthFlowRef
=
ref
<
OAuthFlowExposed
|
null
>
(
null
)
// Model mapping type
interface
ModelMapping
{
...
...
@@ -630,8 +638,12 @@ const form = reactive({
// Helper to check if current type needs OAuth flow
const
isOAuthFlow
=
computed
(()
=>
accountCategory
.
value
===
'
oauth-based
'
)
const
isManualInputMethod
=
computed
(()
=>
{
return
oauthFlowRef
.
value
?.
inputMethod
===
'
manual
'
}
)
const
canExchangeCode
=
computed
(()
=>
{
const
authCode
=
oauthFlowRef
.
value
?.
authCode
?.
value
||
''
const
authCode
=
oauthFlowRef
.
value
?.
authCode
||
''
return
authCode
.
trim
()
&&
oauth
.
sessionId
.
value
&&
!
oauth
.
loading
.
value
}
)
...
...
@@ -815,7 +827,7 @@ const handleGenerateUrl = async () => {
}
const
handleExchangeCode
=
async
()
=>
{
const
authCode
=
oauthFlowRef
.
value
?.
authCode
?.
value
||
''
const
authCode
=
oauthFlowRef
.
value
?.
authCode
||
''
if
(
!
authCode
.
trim
()
||
!
oauth
.
sessionId
.
value
)
return
oauth
.
loading
.
value
=
true
...
...
frontend/src/components/account/ReAuthAccountModal.vue
View file @
3d05e503
...
...
@@ -71,7 +71,7 @@
{{
t
(
'
common.cancel
'
)
}}
</button>
<button
v-if=
"
oauthFlowRef?.inputMethod?.value === 'manual'
"
v-if=
"
isManualInputMethod
"
type=
"button"
:disabled=
"!canExchangeCode"
class=
"btn btn-primary"
...
...
@@ -98,11 +98,20 @@ import { ref, computed, watch } from 'vue'
import
{
useI18n
}
from
'
vue-i18n
'
import
{
useAppStore
}
from
'
@/stores/app
'
import
{
adminAPI
}
from
'
@/api/admin
'
import
{
useAccountOAuth
,
type
AddMethod
}
from
'
@/composables/useAccountOAuth
'
import
{
useAccountOAuth
,
type
AddMethod
,
type
AuthInputMethod
}
from
'
@/composables/useAccountOAuth
'
import
type
{
Account
}
from
'
@/types
'
import
Modal
from
'
@/components/common/Modal.vue
'
import
OAuthAuthorizationFlow
from
'
./OAuthAuthorizationFlow.vue
'
// Type for exposed OAuthAuthorizationFlow component
// Note: defineExpose automatically unwraps refs, so we use the unwrapped types
interface
OAuthFlowExposed
{
authCode
:
string
sessionKey
:
string
inputMethod
:
AuthInputMethod
reset
:
()
=>
void
}
interface
Props
{
show
:
boolean
account
:
Account
|
null
...
...
@@ -121,14 +130,18 @@ const { t } = useI18n()
const
oauth
=
useAccountOAuth
()
// Refs
const
oauthFlowRef
=
ref
<
InstanceType
<
typeof
OAuthAuthorizationFlow
>
|
null
>
(
null
)
const
oauthFlowRef
=
ref
<
OAuthFlowExposed
|
null
>
(
null
)
// State
const
addMethod
=
ref
<
AddMethod
>
(
'
oauth
'
)
// Computed
const
isManualInputMethod
=
computed
(()
=>
{
return
oauthFlowRef
.
value
?.
inputMethod
===
'
manual
'
})
const
canExchangeCode
=
computed
(()
=>
{
const
authCode
=
oauthFlowRef
.
value
?.
authCode
?.
value
||
''
const
authCode
=
oauthFlowRef
.
value
?.
authCode
||
''
return
authCode
.
trim
()
&&
oauth
.
sessionId
.
value
&&
!
oauth
.
loading
.
value
})
...
...
@@ -163,7 +176,7 @@ const handleGenerateUrl = async () => {
const
handleExchangeCode
=
async
()
=>
{
if
(
!
props
.
account
)
return
const
authCode
=
oauthFlowRef
.
value
?.
authCode
?.
value
||
''
const
authCode
=
oauthFlowRef
.
value
?.
authCode
||
''
if
(
!
authCode
.
trim
()
||
!
oauth
.
sessionId
.
value
)
return
oauth
.
loading
.
value
=
true
...
...
frontend/src/components/common/ConfirmDialog.vue
View file @
3d05e503
...
...
@@ -47,7 +47,7 @@ interface Emits {
(
e
:
'
cancel
'
):
void
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
withDefaults
(
defineProps
<
Props
>
(),
{
confirmText
:
'
Confirm
'
,
cancelText
:
'
Cancel
'
,
danger
:
false
...
...
frontend/src/components/common/DataTable.vue
View file @
3d05e503
...
...
@@ -86,16 +86,10 @@
<
script
setup
lang=
"ts"
>
import
{
computed
,
ref
}
from
'
vue
'
import
{
useI18n
}
from
'
vue-i18n
'
import
type
{
Column
}
from
'
./types
'
const
{
t
}
=
useI18n
()
export
interface
Column
{
key
:
string
label
:
string
sortable
?:
boolean
formatter
?:
(
value
:
any
,
row
:
any
)
=>
string
}
interface
Props
{
columns
:
Column
[]
data
:
any
[]
...
...
frontend/src/components/common/EmptyState.vue
View file @
3d05e503
...
...
@@ -69,7 +69,6 @@
<
script
setup
lang=
"ts"
>
import
type
{
Component
}
from
'
vue
'
import
{
RouterLink
}
from
'
vue-router
'
interface
Props
{
icon
?:
Component
|
string
...
...
@@ -81,7 +80,7 @@ interface Props {
message
?:
string
}
const
props
=
withDefaults
(
defineProps
<
Props
>
(),
{
withDefaults
(
defineProps
<
Props
>
(),
{
title
:
'
No data found
'
,
description
:
''
,
actionIcon
:
true
...
...
frontend/src/components/common/Select.vue
View file @
3d05e503
...
...
@@ -53,7 +53,7 @@
<div
class=
"select-options"
>
<div
v-for=
"option in filteredOptions"
:key=
"getOptionValue(option)"
:key=
"getOptionValue(option)
?? undefined
"
@
click=
"selectOption(option)"
:class=
"[
'select-option',
...
...
@@ -136,9 +136,9 @@ const searchQuery = ref('')
const
containerRef
=
ref
<
HTMLElement
|
null
>
(
null
)
const
searchInputRef
=
ref
<
HTMLInputElement
|
null
>
(
null
)
const
getOptionValue
=
(
option
:
SelectOption
|
Record
<
string
,
unknown
>
):
string
|
number
|
null
=>
{
const
getOptionValue
=
(
option
:
SelectOption
|
Record
<
string
,
unknown
>
):
string
|
number
|
null
|
undefined
=>
{
if
(
typeof
option
===
'
object
'
&&
option
!==
null
)
{
return
option
[
props
.
valueKey
]
as
string
|
number
|
null
return
option
[
props
.
valueKey
]
as
string
|
number
|
null
|
undefined
}
return
option
as
string
|
number
|
null
}
...
...
@@ -187,7 +187,7 @@ const toggle = () => {
}
const
selectOption
=
(
option
:
SelectOption
|
Record
<
string
,
unknown
>
)
=>
{
const
value
=
getOptionValue
(
option
)
const
value
=
getOptionValue
(
option
)
??
null
emit
(
'
update:modelValue
'
,
value
)
emit
(
'
change
'
,
value
,
option
as
SelectOption
)
isOpen
.
value
=
false
...
...
frontend/src/components/common/SubscriptionProgressMini.vue
View file @
3d05e503
...
...
@@ -121,7 +121,7 @@
<
/template
>
<
script
setup
lang
=
"
ts
"
>
import
{
ref
,
computed
,
onMounted
,
onBeforeUnmount
,
watch
}
from
'
vue
'
;
import
{
ref
,
computed
,
onMounted
,
onBeforeUnmount
}
from
'
vue
'
;
import
{
useI18n
}
from
'
vue-i18n
'
;
import
subscriptionsAPI
from
'
@/api/subscriptions
'
;
import
type
{
UserSubscription
}
from
'
@/types
'
;
...
...
frontend/src/components/common/index.ts
View file @
3d05e503
...
...
@@ -10,4 +10,4 @@ export { default as EmptyState } from './EmptyState.vue'
export
{
default
as
LocaleSwitcher
}
from
'
./LocaleSwitcher.vue
'
// Export types
export
type
{
Column
}
from
'
./
DataTable.vue
'
export
type
{
Column
}
from
'
./
types
'
frontend/src/components/common/types.ts
0 → 100644
View file @
3d05e503
/**
* Common component types
*/
export
interface
Column
{
key
:
string
label
:
string
sortable
?:
boolean
formatter
?:
(
value
:
any
,
row
:
any
)
=>
string
}
frontend/src/router/index.ts
View file @
3d05e503
...
...
@@ -268,7 +268,7 @@ const routes: RouteRecordRaw[] = [
const
router
=
createRouter
({
history
:
createWebHistory
(
import
.
meta
.
env
.
BASE_URL
),
routes
,
scrollBehavior
(
to
,
from
,
savedPosition
)
{
scrollBehavior
(
_
to
,
_
from
,
savedPosition
)
{
// Scroll to saved position when using browser back/forward
if
(
savedPosition
)
{
return
savedPosition
;
...
...
@@ -283,7 +283,7 @@ const router = createRouter({
*/
let
authInitialized
=
false
;
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
router
.
beforeEach
((
to
,
_
from
,
next
)
=>
{
const
authStore
=
useAuthStore
();
// Restore auth state from localStorage on first navigation (page refresh)
...
...
frontend/src/types/index.ts
View file @
3d05e503
...
...
@@ -152,6 +152,12 @@ export interface UserStats {
// ==================== API Response Types ====================
export
interface
ApiResponse
<
T
=
unknown
>
{
code
:
number
;
message
:
string
;
data
:
T
;
}
export
interface
ApiError
{
detail
:
string
;
code
?:
string
;
...
...
@@ -357,6 +363,7 @@ export interface CreateAccountRequest {
export
interface
UpdateAccountRequest
{
name
?:
string
;
type
?:
AccountType
;
credentials
?:
Record
<
string
,
unknown
>
;
extra
?:
Record
<
string
,
string
>
;
proxy_id
?:
number
|
null
;
...
...
frontend/src/views/admin/AccountsView.vue
View file @
3d05e503
...
...
@@ -265,7 +265,7 @@ import { useI18n } from 'vue-i18n'
import
{
useAppStore
}
from
'
@/stores/app
'
import
{
adminAPI
}
from
'
@/api/admin
'
import
type
{
Account
,
Proxy
,
Group
}
from
'
@/types
'
import
type
{
Column
}
from
'
@/components/common/
DataTable.vue
'
import
type
{
Column
}
from
'
@/components/common/
types
'
import
AppLayout
from
'
@/components/layout/AppLayout.vue
'
import
DataTable
from
'
@/components/common/DataTable.vue
'
import
Pagination
from
'
@/components/common/Pagination.vue
'
...
...
frontend/src/views/admin/DashboardView.vue
View file @
3d05e503
...
...
@@ -398,7 +398,7 @@ const lineOptions = computed(() => ({
font
:
{
size
:
10
,
},
callback
:
(
value
:
number
)
=>
formatTokens
(
value
),
callback
:
(
value
:
string
|
number
)
=>
formatTokens
(
Number
(
value
)
)
,
},
},
},
...
...
frontend/src/views/admin/GroupsView.vue
View file @
3d05e503
...
...
@@ -450,7 +450,7 @@ import { useI18n } from 'vue-i18n'
import
{
useAppStore
}
from
'
@/stores/app
'
import
{
adminAPI
}
from
'
@/api/admin
'
import
type
{
Group
,
GroupPlatform
,
SubscriptionType
}
from
'
@/types
'
import
type
{
Column
}
from
'
@/components/common/
DataTable.vue
'
import
type
{
Column
}
from
'
@/components/common/
types
'
import
AppLayout
from
'
@/components/layout/AppLayout.vue
'
import
DataTable
from
'
@/components/common/DataTable.vue
'
import
Pagination
from
'
@/components/common/Pagination.vue
'
...
...
@@ -570,7 +570,7 @@ const loadGroups = async () => {
pagination
.
page
,
pagination
.
page_size
,
{
platform
:
filters
.
platform
||
undefined
,
platform
:
(
filters
.
platform
as
GroupPlatform
)
||
undefined
,
status
:
filters
.
status
as
any
,
is_exclusive
:
filters
.
is_exclusive
?
filters
.
is_exclusive
===
'
true
'
:
undefined
}
...
...
frontend/src/views/admin/ProxiesView.vue
View file @
3d05e503
...
...
@@ -465,7 +465,7 @@ import { useI18n } from 'vue-i18n'
import
{
useAppStore
}
from
'
@/stores/app
'
import
{
adminAPI
}
from
'
@/api/admin
'
import
type
{
Proxy
,
ProxyProtocol
}
from
'
@/types
'
import
type
{
Column
}
from
'
@/components/common/
DataTable.vue
'
import
type
{
Column
}
from
'
@/components/common/
types
'
import
AppLayout
from
'
@/components/layout/AppLayout.vue
'
import
DataTable
from
'
@/components/common/DataTable.vue
'
import
Pagination
from
'
@/components/common/Pagination.vue
'
...
...
frontend/src/views/admin/RedeemView.vue
View file @
3d05e503
...
...
@@ -349,7 +349,7 @@ import { useI18n } from 'vue-i18n'
import
{
useAppStore
}
from
'
@/stores/app
'
import
{
adminAPI
}
from
'
@/api/admin
'
import
type
{
RedeemCode
,
RedeemCodeType
,
Group
}
from
'
@/types
'
import
type
{
Column
}
from
'
@/components/common/
DataTable.vue
'
import
type
{
Column
}
from
'
@/components/common/
types
'
import
AppLayout
from
'
@/components/layout/AppLayout.vue
'
import
DataTable
from
'
@/components/common/DataTable.vue
'
import
Pagination
from
'
@/components/common/Pagination.vue
'
...
...
frontend/src/views/admin/SubscriptionsView.vue
View file @
3d05e503
...
...
@@ -303,7 +303,7 @@ import { useI18n } from 'vue-i18n'
import
{
useAppStore
}
from
'
@/stores/app
'
import
{
adminAPI
}
from
'
@/api/admin
'
import
type
{
UserSubscription
,
Group
,
User
}
from
'
@/types
'
import
type
{
Column
}
from
'
@/components/common/
DataTable.vue
'
import
type
{
Column
}
from
'
@/components/common/
types
'
import
AppLayout
from
'
@/components/layout/AppLayout.vue
'
import
DataTable
from
'
@/components/common/DataTable.vue
'
import
Pagination
from
'
@/components/common/Pagination.vue
'
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment