updated

This commit is contained in:
landaiqing
2024-11-03 17:21:36 +08:00
parent a451267e33
commit c725936f39
18 changed files with 267 additions and 121 deletions

8
components.d.ts vendored
View File

@@ -31,14 +31,19 @@ declare module 'vue' {
APagination: typeof import('ant-design-vue/es')['Pagination']
APopover: typeof import('ant-design-vue/es')['Popover']
AQrcode: typeof import('ant-design-vue/es')['QRCode']
ARadio: typeof import('ant-design-vue/es')['Radio']
ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
ASkeleton: typeof import('ant-design-vue/es')['Skeleton']
ASpin: typeof import('ant-design-vue/es')['Spin']
AStep: typeof import('ant-design-vue/es')['Step']
ASteps: typeof import('ant-design-vue/es')['Steps']
ATabPane: typeof import('ant-design-vue/es')['TabPane']
ATabs: typeof import('ant-design-vue/es')['Tabs']
ATag: typeof import('ant-design-vue/es')['Tag']
ATextarea: typeof import('ant-design-vue/es')['Textarea']
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
AUpload: typeof import('ant-design-vue/es')['Upload']
AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger']
BoxDog: typeof import('./src/components/BoxDog/BoxDog.vue')['default']
Card3D: typeof import('./src/components/Card3D/Card3D.vue')['default']
CloseCircleOutlined: typeof import('@ant-design/icons-vue')['CloseCircleOutlined']
@@ -51,11 +56,13 @@ declare module 'vue' {
EyeOutlined: typeof import('@ant-design/icons-vue')['EyeOutlined']
ForgetPage: typeof import('./src/views/Forget/ForgetPage.vue')['default']
GithubOutlined: typeof import('@ant-design/icons-vue')['GithubOutlined']
InboxOutlined: typeof import('@ant-design/icons-vue')['InboxOutlined']
LandingPage: typeof import('./src/views/Landing/LandingPage.vue')['default']
LockOutlined: typeof import('@ant-design/icons-vue')['LockOutlined']
LoginFooter: typeof import('./src/views/Login/LoginFooter.vue')['default']
LoginPage: typeof import('./src/views/Login/LoginPage.vue')['default']
MainPage: typeof import('./src/views/Main/MainPage.vue')['default']
MessageReport: typeof import('./src/components/CommentReply/src/MessageReport/MessageReport.vue')['default']
NotFound: typeof import('./src/views/404/NotFound.vue')['default']
QqOutlined: typeof import('@ant-design/icons-vue')['QqOutlined']
QRLogin: typeof import('./src/views/QRLogin/QRLogin.vue')['default']
@@ -67,6 +74,7 @@ declare module 'vue' {
RouterView: typeof import('vue-router')['RouterView']
SafetyOutlined: typeof import('@ant-design/icons-vue')['SafetyOutlined']
TabletOutlined: typeof import('@ant-design/icons-vue')['TabletOutlined']
TypeSelect: typeof import('./src/components/CommentReply/src/MessageReport/TypeSelect.vue')['default']
UserOutlined: typeof import('@ant-design/icons-vue')['UserOutlined']
WarningOutlined: typeof import('@ant-design/icons-vue')['WarningOutlined']
WechatOutlined: typeof import('@ant-design/icons-vue')['WechatOutlined']

View File

@@ -16,9 +16,9 @@
"@types/animejs": "^3.1.12",
"@types/crypto-js": "^4.2.2",
"@types/json-stringify-safe": "^5.0.3",
"@types/node": "^22.8.1",
"@types/node": "^22.8.6",
"@types/nprogress": "^0.2.3",
"@vueuse/core": "^11.1.0",
"@vueuse/core": "^11.2.0",
"alova": "^3.1.1",
"animejs": "^3.2.2",
"ant-design-vue": "^4.2.5",
@@ -33,7 +33,7 @@
"localforage": "^1.10.0",
"nprogress": "^0.2.0",
"nsfwjs": "^4.2.0",
"pinia": "^2.2.4",
"pinia": "^2.2.5",
"pinia-plugin-persistedstate": "^4.1.2",
"seedrandom": "^3.0.5",
"unplugin-auto-import": "^0.18.3",
@@ -49,15 +49,15 @@
"devDependencies": {
"@eslint/js": "^9.13.0",
"@vitejs/plugin-vue": "^5.1.4",
"eslint-plugin-vue": "^9.29.1",
"eslint-plugin-vue": "^9.30.0",
"globals": "^15.11.0",
"sass": "^1.80.4",
"sass": "^1.80.5",
"typescript": "^5.6.3",
"typescript-eslint": "^8.11.0",
"typescript-eslint": "^8.12.2",
"unplugin-vue-components": "^0.27.4",
"vite": "^5.4.10",
"vite-plugin-bundle-obfuscator": "1.2.1",
"vite-plugin-chunk-split": "^0.5.0",
"vue-tsc": "^2.1.8"
"vue-tsc": "^2.1.10"
}
}

View File

@@ -3,7 +3,10 @@
--text-color: #000000;
// 着陆页背景颜色
--landing-background-color-main: #b9f187;
// 评论文字颜色
--comment-text-color: #767779;
// 评论子评论背景颜色
--comment-child-background-color: #f5f5f5;
}
[data-dark="dark"] {
@@ -11,7 +14,10 @@
--text-color: #ffffff;
// 着陆页背景颜色
--landing-background-color-main: rgb(0, 0, 0);
// 评论文字颜色
--comment-text-color: #ffffff;
// 评论子评论背景颜色
--comment-child-background-color: rgb(0, 0, 0);
}
#app {

View File

@@ -210,7 +210,6 @@ const getSlideCaptchaDataThrottled = useThrottleFn(comment.getSlideCaptchaData,
*/
async function showSlideCaptcha() {
if (commentContent.value.trim() === "") {
message.error(t('comment.commentContentNotEmpty'));
return;
}
if (comment.imageList.length > 3) {

View File

@@ -94,13 +94,13 @@
{{ item.browser }}
</AButton>
<!-- 评论操作按钮 -->
<ADropdown trigger="click">
<ADropdown trigger="click" @click.prevent>
<AButton type="text" size="small" :icon="h(EllipsisOutlined)" class="reply-action-btn"
@click.prevent>
</AButton>
<template #overlay>
<AMenu>
<AMenuItem key="report">
<AMenuItem key="report" @click="showMessageReport = true">
<WarningOutlined/>
{{ t('comment.report') }}
</AMenuItem>
@@ -127,6 +127,11 @@
</div>
<AEmpty :description="null" v-show="!comment.commentList.comments"/>
</ASkeleton>
<!--举报窗口-->
<AModal v-model:open="showMessageReport" :title="t('comment.report')" :width="600" :footer="null">
<MessageReport/>
</AModal>
</div>
</template>
@@ -149,6 +154,7 @@ import useStore from "@/store";
import {useRouter} from "vue-router";
import ReplyInput from "@/components/CommentReply/src/ReplyInput/ReplyInput.vue";
import ReplyList from "@/components/CommentReply/src/ReplyList/ReplyList.vue";
import MessageReport from "@/components/CommentReply/src/MessageReport/MessageReport.vue";
const {t} = useI18n();
@@ -158,6 +164,7 @@ const user = useStore().user;
const topicId = ref<string>("123");
const showMessageReport = ref<boolean>(false);
/**
* 获取评论列表

View File

@@ -0,0 +1,103 @@
<template>
<div>
<ASteps :current="current" :status="current==2?'finish':'process'" @change="handleCurrentChange">
<AStep title="类型">
</AStep>
<AStep title="说明">
</AStep>
<AStep title="材料">
</AStep>
</ASteps>
<div class="steps-content">
<div v-if="current === 0">
<a-radio-group v-model:value="value">
<a-radio :style="radioStyle" :value="1">Option A</a-radio>
<a-radio :style="radioStyle" :value="2">Option B</a-radio>
<a-radio :style="radioStyle" :value="3">Option C</a-radio>
<a-radio :style="radioStyle" :value="4">
More...
<a-input v-if="value === 4" style="width: 100px; margin-left: 10px"/>
</a-radio>
</a-radio-group>
</div>
<div v-if="current === 1">
<a-textarea :rows="8" placeholder="maxlength is 6" :maxlength="6"/>
</div>
<div v-if="current === 2">
<a-upload-dragger
v-model:fileList="fileList"
name="file"
:multiple="true"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
@change="handleChange"
@drop="handleDrop"
>
<p class="ant-upload-drag-icon">
<inbox-outlined></inbox-outlined>
</p>
<p class="ant-upload-text">Click or drag file to this area to upload</p>
<p class="ant-upload-hint">
Support for a single or bulk upload. Strictly prohibit from uploading company data or other
band files
</p>
</a-upload-dragger>
</div>
</div>
<div class="steps-action">
<AButton v-if="current > 0 && current <= 2" @click="prev">上一步</AButton>
<AButton v-if="current >= 0 && current < 2" type="primary" style="margin-left: 8px" @click="next">下一步</AButton>
<AButton
style="margin-left: 8px"
v-if="current == 2"
type="primary"
@click="message.success('Processing complete!')"
>
完成
</AButton>
</div>
</div>
</template>
<script lang="ts" setup>
import {reactive, ref} from 'vue';
import type {UploadChangeParam} from 'ant-design-vue';
import {message} from 'ant-design-vue';
const current = ref<number>(0);
const next = () => {
current.value++;
};
const prev = () => {
current.value--;
};
function handleCurrentChange(index: number) {
current.value = index;
}
const value = ref<number>(1);
const radioStyle = reactive({
display: 'flex',
height: '30px',
lineHeight: '30px',
});
const fileList = ref([]);
const handleChange = (info: UploadChangeParam) => {
const status = info.file.status;
if (status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (status === 'done') {
message.success(`${info.file.name} file uploaded successfully.`);
} else if (status === 'error') {
message.error(`${info.file.name} file upload failed.`);
}
};
function handleDrop(e: DragEvent) {
console.log(e);
}
</script>
<style scoped lang="less" src="./index.scss">
</style>

View File

@@ -0,0 +1,16 @@
.steps-content {
margin-top: 16px;
border: 1px dashed #e9e9e9;
border-radius: 10px;
background-color: #fafafa;
min-height: 200px;
text-align: center;
//padding-top: 80px;
}
.steps-action {
display: flex;
flex-direction: row;
justify-content: flex-end;
margin-top: 24px;
}

View File

@@ -155,7 +155,6 @@ const replySubmitDebounced = useDebounceFn(replySubmit, 500);
*/
async function replySubmit(point: any) {
if (replyContent.value.trim() === "") {
message.error(t('comment.commentContentNotEmpty'));
return;
}
if (comment.imageList.length > 3) {

View File

@@ -79,7 +79,7 @@
</AButton>
<template #overlay>
<AMenu>
<AMenuItem key="report">
<AMenuItem key="report" @click="showMessageReport = true">
<WarningOutlined/>
{{ t('comment.report') }}
</AMenuItem>
@@ -106,6 +106,9 @@
</AFlex>
<AEmpty :description="null" v-show="!comment.replyList.comments"/>
</ASpin>
<AModal v-model:open="showMessageReport" :title="t('comment.report')" :width="600" :footer="null">
<MessageReport/>
</AModal>
</AFlex>
</template>
<script lang="ts" setup>
@@ -123,6 +126,7 @@ import {useI18n} from "vue-i18n";
import useStore from "@/store";
import ReplyReply from "@/components/CommentReply/src/ReplyReplyInput/ReplyReply.vue";
import {useThrottleFn} from "@vueuse/core";
import MessageReport from "@/components/CommentReply/src/MessageReport/MessageReport.vue";
const {t} = useI18n();
@@ -135,7 +139,7 @@ const props = defineProps({
required: true
}
});
const showMessageReport = ref<boolean>(false);
/**
* 格式化时间
* @param dateString

View File

@@ -1,7 +1,7 @@
.reply-item-child {
margin-top: 10px;
border-radius: 10px;
background-color: var(--background-color);
background-color: var(--comment-child-background-color);
padding: 10px;
.reply-pagination-child {

View File

@@ -166,7 +166,6 @@ const replyReplySubmitThrottled = useThrottleFn(replyReplySubmit, 1000);
*/
async function replyReplySubmit(point: any) {
if (replyReplyContent.value.trim() === "") {
message.error(t('comment.commentContentNotEmpty'));
return;
}
if (comment.imageList.length > 3) {

View File

@@ -11,6 +11,7 @@
transition: background-color 0.3s;
z-index: 3;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
border-radius: 20px;
.header-logo-container {
min-width: 280px;

View File

@@ -34,6 +34,7 @@ export const useCommentStore = defineStore(
const uploadLoading = ref<boolean>(false);
const emojiList = ref<any[]>(QQ_EMOJI);
/**
* 获取评论列表
* @param params

View File

@@ -50,7 +50,6 @@ export const service = createAlova({
if (!method.meta?.ignoreToken) {
const user = useStore().user;
method.config.headers.Authorization = `${import.meta.env.VITE_APP_TOKEN_KEY} ${user.user.accessToken}`;
method.config.headers['X-UID'] = user.user.uid;
}
const lang = useStore().lang;
method.config.headers['Accept-Language'] = lang.lang || 'zh';
@@ -77,11 +76,15 @@ export const service = createAlova({
title: i18n.global.t('error.loginExpired'),
content: i18n.global.t('error.authTokenExpired'),
onOk() {
window.location.href = '/login';
setTimeout(() => {
window.location.href = '/login';
},2000);
},
onCancel() {
window.location.href = '/login';
}
// onCancel() {
// setTimeout(() => {
// window.location.href = '/login';
// },2000);
// }
});
return Promise.reject(response.data);
}

View File

@@ -299,7 +299,7 @@ async function sendMessageByPhone(param: any): Promise<boolean> {
message.success(t('login.sendCaptchaSuccess'));
return true;
} else {
message.error(res.data);
message.error(res.message);
return false;
}
}

View File

@@ -338,7 +338,7 @@ async function sendCaptcha() {
});
})
.catch((error: any) => {
console.log('error', error);
console.error('error', error);
});
}
@@ -359,7 +359,7 @@ async function accountLoginSubmit() {
});
})
.catch((error: any) => {
console.log('error', error);
console.error('error', error);
});
}
@@ -476,7 +476,7 @@ async function checkAccountLoginCaptcha(angle: number) {
}, 1000);
} else {
loginLoading.value = false;
message.error(t('login.loginError'));
message.error(res.message);
}
}

View File

@@ -13,6 +13,7 @@ import Header from "@/layout/default/Header/Header.vue";
import {notification} from "ant-design-vue";
import {SmileOutlined} from "@ant-design/icons-vue";
const websocket = useStore().websocket;
const userInfo = useStore().user;
const wsOptions = {
@@ -30,7 +31,6 @@ onMounted(() => {
});
});
});
onUnmounted(() => {
websocket.close(false);
});

192
yarn.lock
View File

@@ -884,10 +884,10 @@
dependencies:
undici-types "~6.19.2"
"@types/node@^22.8.1":
version "22.8.1"
resolved "https://registry.npmmirror.com/@types/node/-/node-22.8.1.tgz#b39d4b98165e2ae792ce213f610c7c6108ccfa16"
integrity sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==
"@types/node@^22.8.6":
version "22.8.6"
resolved "https://registry.npmmirror.com/@types/node/-/node-22.8.6.tgz#e8a0c0871623283d8b3ef7d7b9b1bfdfd3028e22"
integrity sha512-tosuJYKrIqjQIlVCM4PEGxOmyg3FCPa/fViuJChnGeEIhjA46oy8FMVoF9su1/v8PNs2a8Q0iFNyOx0uOF91nw==
dependencies:
undici-types "~6.19.8"
@@ -921,62 +921,62 @@
resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597"
integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==
"@typescript-eslint/eslint-plugin@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz#c3f087d20715fa94310b30666c08b3349e0ab084"
integrity sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==
"@typescript-eslint/eslint-plugin@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.2.tgz#c2ef660bb83fd1432368319312a2581fc92ccac1"
integrity sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "8.11.0"
"@typescript-eslint/type-utils" "8.11.0"
"@typescript-eslint/utils" "8.11.0"
"@typescript-eslint/visitor-keys" "8.11.0"
"@typescript-eslint/scope-manager" "8.12.2"
"@typescript-eslint/type-utils" "8.12.2"
"@typescript-eslint/utils" "8.12.2"
"@typescript-eslint/visitor-keys" "8.12.2"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/parser@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.11.0.tgz#2ad1481388dc1c937f50b2d138c9ca57cc6c5cce"
integrity sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==
"@typescript-eslint/parser@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.12.2.tgz#2e8173b34e1685e918b2d571c16c906d3747bad2"
integrity sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==
dependencies:
"@typescript-eslint/scope-manager" "8.11.0"
"@typescript-eslint/types" "8.11.0"
"@typescript-eslint/typescript-estree" "8.11.0"
"@typescript-eslint/visitor-keys" "8.11.0"
"@typescript-eslint/scope-manager" "8.12.2"
"@typescript-eslint/types" "8.12.2"
"@typescript-eslint/typescript-estree" "8.12.2"
"@typescript-eslint/visitor-keys" "8.12.2"
debug "^4.3.4"
"@typescript-eslint/scope-manager@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz#9d399ce624118966732824878bc9a83593a30405"
integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==
"@typescript-eslint/scope-manager@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.12.2.tgz#6db0213745e6392c8e90fe9af5915e6da32eb94a"
integrity sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==
dependencies:
"@typescript-eslint/types" "8.11.0"
"@typescript-eslint/visitor-keys" "8.11.0"
"@typescript-eslint/types" "8.12.2"
"@typescript-eslint/visitor-keys" "8.12.2"
"@typescript-eslint/type-utils@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz#b7f9e6120c1ddee8a1a07615646642ad85fc91b5"
integrity sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==
"@typescript-eslint/type-utils@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-8.12.2.tgz#132b0c52d45f6814e6f2e32416c7951ed480b016"
integrity sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==
dependencies:
"@typescript-eslint/typescript-estree" "8.11.0"
"@typescript-eslint/utils" "8.11.0"
"@typescript-eslint/typescript-estree" "8.12.2"
"@typescript-eslint/utils" "8.12.2"
debug "^4.3.4"
ts-api-utils "^1.3.0"
"@typescript-eslint/types@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.11.0.tgz#7c766250502097f49bbc2e651132e6bf489e20b8"
integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==
"@typescript-eslint/types@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-8.12.2.tgz#8d70098c0e90442495b53d0296acdca6d0f3f73c"
integrity sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==
"@typescript-eslint/typescript-estree@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz#35fe5d3636fc5727c52429393415412e552e222b"
integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==
"@typescript-eslint/typescript-estree@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.2.tgz#206df9b1cbff212aaa9401985ef99f04daa84da5"
integrity sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==
dependencies:
"@typescript-eslint/types" "8.11.0"
"@typescript-eslint/visitor-keys" "8.11.0"
"@typescript-eslint/types" "8.12.2"
"@typescript-eslint/visitor-keys" "8.12.2"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
@@ -984,22 +984,22 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/utils@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.11.0.tgz#4480d1e9f2bb18ea3510c79f870a1aefc118103d"
integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==
"@typescript-eslint/utils@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.12.2.tgz#726cc9f49f5866605bd15bbc1768ffc15637930e"
integrity sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@typescript-eslint/scope-manager" "8.11.0"
"@typescript-eslint/types" "8.11.0"
"@typescript-eslint/typescript-estree" "8.11.0"
"@typescript-eslint/scope-manager" "8.12.2"
"@typescript-eslint/types" "8.12.2"
"@typescript-eslint/typescript-estree" "8.12.2"
"@typescript-eslint/visitor-keys@8.11.0":
version "8.11.0"
resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz#273de1cbffe63d9f9cd7dfc20b5a5af66310cb92"
integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==
"@typescript-eslint/visitor-keys@8.12.2":
version "8.12.2"
resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.2.tgz#94d7410f78eb6d134b9fcabaf1eeedb910ba8c38"
integrity sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==
dependencies:
"@typescript-eslint/types" "8.11.0"
"@typescript-eslint/types" "8.12.2"
eslint-visitor-keys "^3.4.3"
"@vitejs/plugin-vue@^5.1.4":
@@ -1083,10 +1083,10 @@
resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
"@vue/language-core@2.1.8":
version "2.1.8"
resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.1.8.tgz#1bc68852021f7972649c448c44cdaeeb801c2363"
integrity sha512-DtPUKrIRqqzY1joGfVHxHWZoxXZbCQLmVtW+QTifuPInfcs1R/3UAdlJXDp+lpSpP9lI5m+jMYYlwDXXu3KSTg==
"@vue/language-core@2.1.10":
version "2.1.10"
resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.1.10.tgz#5988e9ea155f3e09ccbbb3b2a0ddd530dad912e6"
integrity sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==
dependencies:
"@volar/language-core" "~2.4.8"
"@vue/compiler-dom" "^3.5.0"
@@ -1135,25 +1135,25 @@
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.12.tgz#f9e45b7f63f2c3f40d84237b1194b7f67de192e3"
integrity sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==
"@vueuse/core@^11.1.0":
version "11.1.0"
resolved "https://registry.npmmirror.com/@vueuse/core/-/core-11.1.0.tgz#a104f33c899a15f3b28d3eb7b20738501a3a5035"
integrity sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==
"@vueuse/core@^11.2.0":
version "11.2.0"
resolved "https://registry.npmmirror.com/@vueuse/core/-/core-11.2.0.tgz#3fc6c0963051bb154dc4c08061889405e3fc745d"
integrity sha512-JIUwRcOqOWzcdu1dGlfW04kaJhW3EXnnjJJfLTtddJanymTL7lF1C0+dVVZ/siLfc73mWn+cGP1PE1PKPruRSA==
dependencies:
"@types/web-bluetooth" "^0.0.20"
"@vueuse/metadata" "11.1.0"
"@vueuse/shared" "11.1.0"
"@vueuse/metadata" "11.2.0"
"@vueuse/shared" "11.2.0"
vue-demi ">=0.14.10"
"@vueuse/metadata@11.1.0":
version "11.1.0"
resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-11.1.0.tgz#ad367d2a51d985129724425923b3cf95f0faf27b"
integrity sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==
"@vueuse/metadata@11.2.0":
version "11.2.0"
resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-11.2.0.tgz#fd02cbbc7d08cb4592fceea0486559b89ae38643"
integrity sha512-L0ZmtRmNx+ZW95DmrgD6vn484gSpVeRbgpWevFKXwqqQxW9hnSi2Ppuh2BzMjnbv4aJRiIw8tQatXT9uOB23dQ==
"@vueuse/shared@11.1.0":
version "11.1.0"
resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-11.1.0.tgz#3bfc3aa555c2a456c21945ec7f127d71938d12e8"
integrity sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==
"@vueuse/shared@11.2.0":
version "11.2.0"
resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-11.2.0.tgz#7fb2f3cade6b6c00ef97e613f187ee9bdcfb9a3a"
integrity sha512-VxFjie0EanOudYSgMErxXfq6fo8vhr5ICI+BuE3I9FnX7ePllEsVrRQ7O6Q1TLgApeLuPKcHQxAXpP+KnlrJsg==
dependencies:
vue-demi ">=0.14.10"
@@ -2163,10 +2163,10 @@ escape-string-regexp@^5.0.0:
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
eslint-plugin-vue@^9.29.1:
version "9.29.1"
resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.29.1.tgz#1af4f81347734f3e62eee4ba898c025bc5457662"
integrity sha512-MH/MbVae4HV/tM8gKAVWMPJbYgW04CK7SuzYRrlNERpxbO0P3+Zdsa2oAcFBW6xNu7W6lIkGOsFAMCRTYmrlWQ==
eslint-plugin-vue@^9.30.0:
version "9.30.0"
resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.30.0.tgz#801a7d2d7d3bb878fcf71932a1e11fd07529e2c4"
integrity sha512-CyqlRgShvljFkOeYK8wN5frh/OGTvkj1S7wlr2Q2pUvwq+X5VYiLd6ZjujpgSgLnys2W8qrBLkXQ41SUYaoPIQ==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
globals "^13.24.0"
@@ -3619,10 +3619,10 @@ pinia-plugin-persistedstate@^4.1.2:
defu "^6.1.4"
destr "^2.0.3"
pinia@^2.2.4:
version "2.2.4"
resolved "https://registry.npmmirror.com/pinia/-/pinia-2.2.4.tgz#79b63b231a3da80968ab58f7721f575fe2c509ac"
integrity sha512-K7ZhpMY9iJ9ShTC0cR2+PnxdQRuwVIsXDO/WIEV/RnMC/vmSoKDTKW/exNQYPI+4ij10UjXqdNiEHwn47McANQ==
pinia@^2.2.5:
version "2.2.5"
resolved "https://registry.npmmirror.com/pinia/-/pinia-2.2.5.tgz#3269ff2cd67ae3dcc939334c0cf985f86c48b7a1"
integrity sha512-T4PEQ4uFv2KIRC8A1Y3k1ceQGTDtxtd7nngYGu1IJUUSpuQoYfGq7w7rOc+f5YN1vx3mEs2NjjtN2IFbNS7jqA==
dependencies:
"@vue/devtools-api" "^6.6.3"
vue-demi "^0.14.10"
@@ -3900,10 +3900,10 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sass@^1.80.4:
version "1.80.4"
resolved "https://registry.npmmirror.com/sass/-/sass-1.80.4.tgz#bc0418fd796cad2f1a1309d8b4d7fe44b7027de0"
integrity sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w==
sass@^1.80.5:
version "1.80.5"
resolved "https://registry.npmmirror.com/sass/-/sass-1.80.5.tgz#0ba965223d44df22497f2966b498cf5c453fae8f"
integrity sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g==
dependencies:
"@parcel/watcher" "^2.4.1"
chokidar "^4.0.0"
@@ -4233,14 +4233,14 @@ type-fest@^0.20.2:
resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
typescript-eslint@^8.11.0:
version "8.11.0"
resolved "https://registry.npmmirror.com/typescript-eslint/-/typescript-eslint-8.11.0.tgz#74a0551972d675b4141672cec3acc5139b7399c0"
integrity sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==
typescript-eslint@^8.12.2:
version "8.12.2"
resolved "https://registry.npmmirror.com/typescript-eslint/-/typescript-eslint-8.12.2.tgz#e273d69af30b478b1c410f4159d675ce7925f9a7"
integrity sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==
dependencies:
"@typescript-eslint/eslint-plugin" "8.11.0"
"@typescript-eslint/parser" "8.11.0"
"@typescript-eslint/utils" "8.11.0"
"@typescript-eslint/eslint-plugin" "8.12.2"
"@typescript-eslint/parser" "8.12.2"
"@typescript-eslint/utils" "8.12.2"
typescript@^5.6.3:
version "5.6.3"
@@ -4514,13 +4514,13 @@ vue-router@^4.4.5:
dependencies:
"@vue/devtools-api" "^6.6.4"
vue-tsc@^2.1.8:
version "2.1.8"
resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.1.8.tgz#c09b6d47525a12c619edce5a48933788d451da91"
integrity sha512-6+vjb7JLxKIzeD/1ktoUBZGAr+148FQoEFl8Lv5EpDJLO2PrUalhp7atMEuzEkLnoooM5bg3pJqjZI+oobxIaQ==
vue-tsc@^2.1.10:
version "2.1.10"
resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.1.10.tgz#4d61a64e5fad763b8b40c1884259fd48986f0b4e"
integrity sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==
dependencies:
"@volar/typescript" "~2.4.8"
"@vue/language-core" "2.1.8"
"@vue/language-core" "2.1.10"
semver "^7.5.4"
vue-types@^3.0.0: