This commit is contained in:
2026-01-16 09:37:25 +08:00
parent 947cabd061
commit f33bf735d9
16 changed files with 843 additions and 868 deletions

7
package-lock.json generated
View File

@@ -13,6 +13,7 @@
"axios": "^1.13.2",
"crypto-js": "^4.2.0",
"nprogress": "^0.2.0",
"path-browserify": "^1.0.1",
"pinia": "^3.0.4",
"pinia-plugin-persistedstate": "^4.7.1",
"vue": "^3.5.26",
@@ -2916,6 +2917,12 @@
"node": ">=6"
}
},
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
"license": "MIT"
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",

View File

@@ -19,8 +19,10 @@
"axios": "^1.13.2",
"crypto-js": "^4.2.0",
"nprogress": "^0.2.0",
"path-browserify": "^1.0.1",
"pinia": "^3.0.4",
"pinia-plugin-persistedstate": "^4.7.1",
"sass-embedded": "^1.97.2",
"vue": "^3.5.26",
"vue-i18n": "^11.2.8",
"vue-router": "^4.6.4"

13
src/api/auth.js Normal file
View File

@@ -0,0 +1,13 @@
import request from '../utils/request'
/**
* 用户登录
* @returns {Promise} 菜单数据
*/
export function userLogin(params) {
return request({
url: '/auth/login',
method: 'post',
data: params
})
}

View File

@@ -1,160 +0,0 @@
<script setup>
import { useLayoutStore } from '@/stores/modules/layout'
const layoutStore = useLayoutStore()
const menuItems = [
{
icon: '🏠',
title: '首页',
path: '/',
},
{
icon: '📊',
title: '数据统计',
path: '/dashboard',
},
{
icon: '👥',
title: '用户管理',
path: '/users',
},
{
icon: '📁',
title: '文件管理',
path: '/files',
},
{
icon: '⚙️',
title: '系统设置',
path: '/settings',
},
]
</script>
<template>
<header class="header">
<div class="header-left">
<div class="logo">Admin</div>
<div class="logo-text">管理后台</div>
</div>
<nav class="header-nav">
<a v-for="item in menuItems" :key="item.path" :href="item.path" class="nav-item"
:class="{ active: $route.path === item.path }">
<span class="nav-icon">{{ item.icon }}</span>
<span class="nav-text">{{ item.title }}</span>
</a>
</nav>
<div class="header-right">
<div class="user-info">
<div class="avatar">👤</div>
<span class="username">管理员</span>
</div>
</div>
</header>
</template>
<style scoped>
.header {
height: 60px;
background: #fff;
border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
position: relative;
z-index: 100;
}
.header-left {
display: flex;
align-items: center;
gap: 12px;
}
.logo {
font-size: 24px;
font-weight: bold;
}
.logo-text {
font-size: 16px;
font-weight: 500;
color: #333;
}
.header-nav {
display: flex;
align-items: center;
gap: 8px;
}
.nav-item {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 16px;
color: #666;
text-decoration: none;
border-radius: 6px;
transition: all 0.3s ease;
}
.nav-item:hover {
background: #f5f5f5;
color: #333;
}
.nav-item.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #fff;
}
.nav-icon {
font-size: 18px;
}
.nav-text {
font-size: 14px;
}
.header-right {
display: flex;
align-items: center;
gap: 20px;
}
.user-info {
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
padding: 8px 12px;
border-radius: 6px;
transition: all 0.3s ease;
}
.user-info:hover {
background: #f5f5f5;
}
.avatar {
width: 32px;
height: 32px;
border-radius: 50%;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
}
.username {
font-size: 14px;
color: #333;
}
</style>

View File

@@ -1,91 +0,0 @@
<script setup>
import { ref } from 'vue'
import { useI18nStore } from '@/stores/modules/i18n'
const i18nStore = useI18nStore()
const showDropdown = ref(false)
const toggleDropdown = () => {
showDropdown.value = !showDropdown.value
}
const handleLanguageChange = (locale) => {
i18nStore.setLocale(locale)
showDropdown.value = false
}
const closeDropdown = () => {
showDropdown.value = false
}
</script>
<template>
<div class="language-switcher" @click="toggleDropdown">
<span class="language-dropdown">
{{ i18nStore.localeLabel }}
<svg class="arrow-icon" :class="{ 'rotate': showDropdown }" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<path
d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3 0.1-12.7-6.4-12.7z" />
</svg>
</span>
<div v-show="showDropdown" class="dropdown-menu">
<div v-for="locale in i18nStore.availableLocales" :key="locale.value" class="dropdown-item"
@click.stop="handleLanguageChange(locale.value)">
{{ locale.label }}
</div>
</div>
</div>
</template>
<style scoped>
.language-switcher {
position: relative;
display: inline-block;
cursor: pointer;
user-select: none;
}
.language-dropdown {
display: flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
border-radius: 4px;
transition: background-color 0.3s;
}
.language-dropdown:hover {
background-color: rgba(0, 0, 0, 0.05);
}
.arrow-icon {
transition: transform 0.3s;
}
.arrow-icon.rotate {
transform: rotate(180deg);
}
.dropdown-menu {
position: absolute;
top: calc(100% + 4px);
right: 0;
min-width: 120px;
background: white;
border: 1px solid #e4e7ed;
border-radius: 4px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
z-index: 1000;
overflow: hidden;
}
.dropdown-item {
padding: 8px 16px;
transition: background-color 0.3s;
}
.dropdown-item:hover {
background-color: #f5f7fa;
}
</style>

View File

@@ -1,110 +0,0 @@
<script setup>
import { useLayoutStore } from '@/stores/modules/layout'
const layoutStore = useLayoutStore()
const layouts = [
{ id: 'sidebar', name: '侧边栏模式', icon: '📱', description: '经典侧边栏布局' },
{ id: 'top-nav', name: '顶部导航', icon: '📋', description: '顶部导航栏布局' },
{ id: 'sidebar-top', name: '组合布局', icon: '🔄', description: '顶部导航+侧边栏' },
{ id: 'classic', name: '经典布局', icon: '🖥️', description: '传统后台管理布局' },
]
</script>
<template>
<div class="layout-switcher">
<h3>布局模式</h3>
<div class="layout-grid">
<div v-for="layout in layouts" :key="layout.id" class="layout-item"
:class="{ active: layoutStore.layoutMode === layout.id }" @click="layoutStore.setLayoutMode(layout.id)">
<div class="layout-icon">{{ layout.icon }}</div>
<div class="layout-info">
<div class="layout-name">{{ layout.name }}</div>
<div class="layout-desc">{{ layout.description }}</div>
</div>
<div v-if="layoutStore.layoutMode === layout.id" class="active-badge"></div>
</div>
</div>
</div>
</template>
<style scoped>
.layout-switcher {
background: #fff;
border-radius: 12px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
}
.layout-switcher h3 {
margin: 0 0 16px;
font-size: 18px;
font-weight: 600;
color: #333;
}
.layout-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 12px;
}
.layout-item {
display: flex;
align-items: center;
gap: 12px;
padding: 16px;
border: 2px solid #e0e0e0;
border-radius: 8px;
cursor: pointer;
transition: all 0.3s ease;
position: relative;
}
.layout-item:hover {
border-color: #667eea;
background: #f8f9ff;
}
.layout-item.active {
border-color: #667eea;
background: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%);
}
.layout-icon {
font-size: 32px;
}
.layout-info {
flex: 1;
}
.layout-name {
font-size: 14px;
font-weight: 600;
color: #333;
margin-bottom: 4px;
}
.layout-desc {
font-size: 12px;
color: #666;
}
.active-badge {
position: absolute;
top: 8px;
right: 8px;
width: 24px;
height: 24px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: bold;
}
</style>

View File

@@ -1,174 +0,0 @@
<script setup>
import { computed } from 'vue'
import { useLayoutStore } from '@/stores/modules/layout'
const props = defineProps({
collapsed: {
type: Boolean,
default: false,
},
})
const layoutStore = useLayoutStore()
const menuItems = [
{
icon: '🏠',
title: '首页',
path: '/',
},
{
icon: '📊',
title: '数据统计',
path: '/dashboard',
},
{
icon: '👥',
title: '用户管理',
path: '/users',
},
{
icon: '📁',
title: '文件管理',
path: '/files',
},
{
icon: '⚙️',
title: '系统设置',
path: '/settings',
},
]
</script>
<template>
<aside class="sidebar" :class="{ collapsed }">
<div class="sidebar-header">
<div class="logo">Admin</div>
<div v-if="!collapsed" class="logo-text">管理后台</div>
</div>
<nav class="sidebar-nav">
<a v-for="item in menuItems" :key="item.path" :href="item.path" class="nav-item"
:class="{ active: $route.path === item.path }">
<span class="nav-icon">{{ item.icon }}</span>
<span v-if="!collapsed" class="nav-text">{{ item.title }}</span>
</a>
</nav>
<div class="sidebar-footer">
<div class="toggle-btn" @click="layoutStore.toggleSidebar()">
<span v-if="collapsed"></span>
<span v-else></span>
</div>
</div>
</aside>
</template>
<style scoped>
.sidebar {
width: 240px;
height: 100%;
background: linear-gradient(180deg, #2c3e50 0%, #1a252f 100%);
color: #fff;
display: flex;
flex-direction: column;
transition: width 0.3s ease;
position: relative;
z-index: 100;
}
.sidebar.collapsed {
width: 64px;
}
.sidebar-header {
padding: 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
gap: 10px;
}
.collapsed .sidebar-header {
padding: 20px 0;
justify-content: center;
}
.logo {
font-size: 24px;
font-weight: bold;
flex-shrink: 0;
}
.logo-text {
font-size: 16px;
font-weight: 500;
}
.sidebar-nav {
flex: 1;
padding: 20px 0;
overflow-y: auto;
}
.nav-item {
display: flex;
align-items: center;
padding: 12px 20px;
color: rgba(255, 255, 255, 0.7);
text-decoration: none;
transition: all 0.3s ease;
margin: 0 10px;
border-radius: 8px;
}
.collapsed .nav-item {
padding: 12px;
justify-content: center;
margin: 0 10px;
}
.nav-item:hover {
background: rgba(255, 255, 255, 0.1);
color: #fff;
}
.nav-item.active {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #fff;
}
.nav-icon {
font-size: 20px;
flex-shrink: 0;
}
.collapsed .nav-icon {
font-size: 24px;
}
.nav-text {
margin-left: 12px;
font-size: 14px;
}
.sidebar-footer {
padding: 20px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.toggle-btn {
display: flex;
align-items: center;
justify-content: center;
padding: 10px;
background: rgba(255, 255, 255, 0.1);
border-radius: 8px;
cursor: pointer;
transition: all 0.3s ease;
}
.toggle-btn:hover {
background: rgba(255, 255, 255, 0.2);
}
</style>

View File

@@ -0,0 +1,68 @@
<template>
<a-breadcrumb class="breadcrumb">
<a-breadcrumb-item v-for="(item, index) in breadcrumbList" :key="item.path">
<span v-if="index === breadcrumbList.length - 1" class="no-redirect">
{{ item.meta.title }}
</span>
<a v-else @click.prevent="handleLink(item)">
{{ item.meta.title }}
</a>
</a-breadcrumb-item>
</a-breadcrumb>
</template>
<script setup>
import { ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
const route = useRoute()
const router = useRouter()
const breadcrumbList = ref([])
// 获取面包屑列表
const getBreadcrumb = () => {
let matched = route.matched.filter(item => item.meta && item.meta.title)
// 如果第一个不是首页,添加首页
const first = matched[0]
if (first && first.path !== '/') {
matched = [{ path: '/', meta: { title: '首页' } }].concat(matched)
}
breadcrumbList.value = matched
}
// 处理点击面包屑
const handleLink = (item) => {
router.push(item.path)
}
// 监听路由变化
watch(
() => route.path,
() => {
getBreadcrumb()
},
{ immediate: true }
)
</script>
<style scoped lang="scss">
.breadcrumb {
font-size: 14px;
.no-redirect {
color: #97a8be;
cursor: text;
}
a {
color: #1890ff;
cursor: pointer;
&:hover {
color: #40a9ff;
}
}
}
</style>

View File

@@ -1,171 +1,134 @@
<script setup>
import { computed } from 'vue'
import { useLayoutStore } from '@/stores/modules/layout'
import Sidebar from './components/Sidebar.vue'
import Header from './components/Header.vue'
const layoutStore = useLayoutStore()
const layoutMode = computed(() => layoutStore.layoutMode)
const sidebarCollapsed = computed(() => layoutStore.sidebarCollapsed)
</script>
<template>
<div class="layout" :class="`layout-${layoutMode}`">
<!-- 模式1: 侧边栏模式 (左侧侧边栏 + 右侧内容) -->
<template v-if="layoutMode === 'sidebar'">
<Sidebar :collapsed="sidebarCollapsed" />
<main class="main-content" :class="{ collapsed: sidebarCollapsed }">
<div class="content-wrapper">
<router-view />
</div>
</main>
<a-layout class="app-wrapper" :class="layoutClass">
<!-- 默认布局左侧双栏布局 -->
<template v-if="layoutMode === 'default'">
<a-layout-sider theme="dark" width="70"></a-layout-sider>
<a-layout-sider theme="light"></a-layout-sider>
<a-layout>
<a-layout-header class="app-header">
<breadcrumb />
</a-layout-header>
<a-layout-content><router-view></router-view></a-layout-content>
</a-layout>
</template>
<!-- 模式2: 顶部导航模式 (顶部导航 + 下方内容) -->
<template v-else-if="layoutMode === 'top-nav'">
<Header />
<main class="main-content top-nav-mode">
<div class="content-wrapper">
<router-view />
</div>
</main>
<!-- Menu布局左侧菜单栏布局 -->
<template v-else-if="layoutMode === 'menu'">
</template>
<!-- 模式3: 组合布局 (顶部导航 + 侧边栏 + 内容) -->
<template v-else-if="layoutMode === 'sidebar-top'">
<Header />
<div class="sidebar-top-container">
<Sidebar :collapsed="sidebarCollapsed" />
<main class="main-content" :class="{ collapsed: sidebarCollapsed, 'sidebar-top': true }">
<div class="content-wrapper">
<router-view />
</div>
</main>
</div>
<!-- Top布局顶部菜单栏布局 -->
<template v-else-if="layoutMode === 'top'">
</template>
<!-- 模式4: 经典布局 (顶部header + 侧边栏 + 内容类似传统后台) -->
<template v-else-if="layoutMode === 'classic'">
<div class="classic-header">
<div class="classic-logo">Admin</div>
<div class="classic-title">管理系统</div>
</div>
<div class="classic-container">
<Sidebar :collapsed="sidebarCollapsed" />
<main class="main-content" :class="{ collapsed: sidebarCollapsed, classic: true }">
<div class="content-wrapper">
<router-view />
</div>
</main>
</div>
</template>
</div>
</a-layout>
</template>
<style scoped>
.layout {
<script setup>
import { ref } from 'vue'
import { RouterView } from 'vue-router'
import breadcrumb from './components/breadcrumb.vue';
const layoutMode = ref('default')
const layoutClass = ref('layout-default')
</script>
<style scoped lang="scss">
.app-wrapper {
position: relative;
width: 100%;
height: 100vh;
display: flex;
min-height: 100vh;
}
/* 侧边栏模式 */
.layout-sidebar .main-content {
flex: 1;
margin-left: 0;
transition: margin-left 0.3s ease;
}
.layout-sidebar .main-content.collapsed {
margin-left: 0;
}
/* 顶部导航模式 */
.layout-top-nav .main-content.top-nav-mode {
flex: 1;
margin-top: 60px;
background: #f5f5f5;
}
/* 组合布局 */
.sidebar-top-container {
.app-header {
display: flex;
flex: 1;
height: calc(100vh - 60px);
}
.layout-sidebar-top .main-content.sidebar-top {
flex: 1;
margin-left: 0;
transition: margin-left 0.3s ease;
}
.layout-sidebar-top .main-content.sidebar-top.collapsed {
margin-left: 0;
}
/* 经典布局 */
.classic-header {
background-color: #ffffff;
padding-inline: 20px;
height: 50px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
color: white;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.classic-logo {
font-size: 24px;
font-weight: bold;
}
.classic-title {
font-size: 16px;
font-weight: 500;
}
.classic-container {
display: flex;
flex: 1;
height: calc(100vh - 50px);
}
.layout-classic .main-content.classic {
flex: 1;
margin-left: 0;
background: #f0f2f5;
transition: margin-left 0.3s ease;
}
.layout-classic .main-content.classic.collapsed {
margin-left: 0;
}
/* 通用主内容区域样式 */
.main-content {
overflow-y: auto;
background: #f5f5f5;
}
.content-wrapper {
padding: 24px;
max-width: 1400px;
margin: 0 auto;
}
/* 响应式设计 */
@media (max-width: 768px) {
.layout-sidebar .main-content,
.layout-sidebar-top .main-content.sidebar-top,
.layout-classic .main-content.classic {
margin-left: 0 !important;
}
.content-wrapper {
padding: 16px;
/* 默认布局 */
&.layout-default {
flex-direction: row;
.main-container {
margin-left: 200px;
&.has-sidebar {
margin-left: 200px;
}
.fixed-header {
width: calc(100% - 200px);
}
}
&.is-collapse {
.main-container {
margin-left: 64px;
.fixed-header {
width: calc(100% - 64px);
}
}
}
}
/* Menu布局 */
&.layout-menu {
.main-container {
margin-left: 200px;
&.has-sidebar {
margin-left: 200px;
}
.fixed-header {
width: calc(100% - 200px);
}
}
&.is-collapse {
.main-container {
margin-left: 64px;
.fixed-header {
width: calc(100% - 64px);
}
}
}
}
/* Top布局 */
&.layout-top {
.top-layout-container {
width: 100%;
height: 100%;
.top-header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1002;
}
.top-main {
padding-top: 50px;
.top-userbar {
position: fixed;
top: 50px;
right: 0;
z-index: 1001;
width: 100%;
padding: 0;
}
.app-main {
padding-top: 60px;
}
}
}
}
}
</style>

View File

@@ -1,13 +1,10 @@
<script setup>
import LayoutSwitcher from '@/layouts/components/LayoutSwitcher.vue'
</script>
<template>
<div class="dashboard">
<h1 class="page-title">欢迎回来管理员</h1>
<LayoutSwitcher />
<div class="dashboard-cards">
<div class="stat-card">
<div class="stat-icon">👥</div>

View File

@@ -1,5 +1,6 @@
import { defineStore } from 'pinia'
import i18n from '@/i18n'
import { customStorage } from '../persist'
export const useI18nStore = defineStore(
'i18n',
@@ -28,7 +29,7 @@ export const useI18nStore = defineStore(
persist: {
key: 'i18n-store',
storage: localStorage,
storage: customStorage,
pick: ['currentLocale']
}
}

View File

@@ -1,11 +1,12 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
import { customStorage } from '../persist'
export const useLayoutStore = defineStore(
'layout',
() => {
// 布局模式:'sidebar', 'top-nav', 'sidebar-top', 'classic'
const layoutMode = ref('sidebar')
// 布局模式:'default', 'menu', 'top'
const layoutMode = ref('default')
// 侧边栏折叠状态
const sidebarCollapsed = ref(false)
@@ -60,7 +61,7 @@ export const useLayoutStore = defineStore(
{
persist: {
key: 'layout-store',
storage: localStorage,
storage: customStorage,
pick: ['layoutMode', 'sidebarCollapsed']
}
}

View File

@@ -1,6 +1,7 @@
import { ref } from 'vue'
import { defineStore } from 'pinia'
import { resetRouter } from '../../router'
import { customStorage } from '../persist'
export const useUserStore = defineStore(
'user',
@@ -74,7 +75,7 @@ export const useUserStore = defineStore(
{
persist: {
key: 'user-store',
storage: localStorage,
storage: customStorage,
pick: ['token', 'refreshToken', 'userInfo', 'menu']
}
}

50
src/stores/persist.js Normal file
View File

@@ -0,0 +1,50 @@
/*
* @Descripttion: Pinia 持久化存储适配器 - 使用 tool.data 封装的 localStorage
* @version: 1.0
*/
import tool from '@/utils/tool'
/**
* 自定义存储适配器
* 使用 tool.data 的 set/get/remove 方法,支持加密和过期时间
*/
export const customStorage = {
/**
* 获取数据
* @param {string} key - 存储键
* @returns {any} - 存储的数据
*/
getItem: (key) => {
return tool.data.get(key)
},
/**
* 设置数据
* @param {string} key - 存储键
* @param {any} value - 要存储的值
*/
setItem: (key, value) => {
tool.data.set(key, value)
},
/**
* 删除数据
* @param {string} key - 存储键
*/
removeItem: (key) => {
tool.data.remove(key)
}
}
/**
* 默认持久化配置
*/
export const defaultPersistConfig = {
storage: customStorage,
// 可以在这里添加其他全局配置,如过期时间等
// serializer: {
// serialize: (state) => JSON.stringify(state),
// deserialize: (value) => JSON.parse(value)
// }
}

View File

@@ -1,136 +0,0 @@
import routesConfig from '../config/routes'
/**
* 合并静态菜单和后端菜单
* @param {Array} backendMenus - 后端返回的菜单
* @returns {Array} 合并后的菜单
*/
export function mergeMenus(backendMenus = []) {
// 深拷贝静态菜单
const staticMenus = JSON.parse(JSON.stringify(routesConfig.userRoutes || []))
// 如果后端菜单为空,直接返回静态菜单
if (!backendMenus || backendMenus.length === 0) {
return staticMenus
}
// 创建菜单映射,用于去重
const menuMap = new Map()
// 添加静态菜单
staticMenus.forEach(menu => {
menuMap.set(menu.path, menu)
})
// 添加后端菜单,如果路径重复则覆盖
backendMenus.forEach(menu => {
if (menu.path) {
menuMap.set(menu.path, menu)
}
})
// 返回合并后的菜单数组
return Array.from(menuMap.values())
}
/**
* 根据路由生成菜单树
* @param {Array} routes - 路由数组
* @returns {Array} 菜单树
*/
export function generateMenuTree(routes) {
if (!routes || !Array.isArray(routes)) {
return []
}
return routes
.filter(route => {
// 过滤掉隐藏的路由和没有 meta 的路由
return !route.meta?.hidden && route.meta?.title
})
.map(route => {
const menu = {
path: route.path,
name: route.name,
meta: {
title: route.meta.title,
icon: route.meta.icon
}
}
// 处理子路由
if (route.children && route.children.length > 0) {
const children = generateMenuTree(route.children)
if (children.length > 0) {
menu.children = children
}
}
return menu
})
}
/**
* 根据权限过滤菜单
* @param {Array} menus - 菜单数组
* @param {Array} roles - 用户角色
* @returns {Array} 过滤后的菜单
*/
export function filterMenusByRole(menus, roles = []) {
if (!menus || !Array.isArray(menus)) {
return []
}
return menus
.filter(menu => {
// 如果菜单没有角色要求,直接显示
if (!menu.meta?.role || menu.meta.role.length === 0) {
return true
}
// 检查用户是否有菜单要求的任一角色
return menu.meta.role.some(role => roles.includes(role))
})
.map(menu => {
// 递归处理子菜单
if (menu.children && menu.children.length > 0) {
const filteredChildren = filterMenusByRole(menu.children, roles)
menu.children = filteredChildren
// 如果过滤后没有子菜单,且菜单本身没有组件,则隐藏此菜单
if (filteredChildren.length === 0 && !menu.component) {
return null
}
}
return menu
})
.filter(menu => menu !== null)
}
/**
* 根据路径查找菜单
* @param {Array} menus - 菜单数组
* @param {string} path - 路径
* @returns {Object|null} 找到的菜单对象
*/
export function findMenuByPath(menus, path) {
if (!menus || !Array.isArray(menus)) {
return null
}
for (const menu of menus) {
if (menu.path === path) {
return menu
}
if (menu.children && menu.children.length > 0) {
const found = findMenuByPath(menu.children, path)
if (found) {
return found
}
}
}
return null
}

609
yarn.lock
View File

@@ -36,7 +36,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.6.tgz"
integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==
"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.23.0":
"@babel/core@^7.23.0":
version "7.28.6"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.6.tgz"
integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==
@@ -278,6 +278,11 @@
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.28.5"
"@bufbuild/protobuf@^2.5.0":
version "2.10.2"
resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.10.2.tgz#d7c063301f2a33095fc202f06bf3cce0c138dfcd"
integrity sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A==
"@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.5.0":
version "3.6.1"
resolved "https://mirrors.huaweicloud.com/repository/npm/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz"
@@ -293,6 +298,131 @@
resolved "https://mirrors.huaweicloud.com/repository/npm/@emotion/unitless/-/unitless-0.8.1.tgz"
integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==
"@esbuild/aix-ppc64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c"
integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==
"@esbuild/android-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57"
integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==
"@esbuild/android-arm@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142"
integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==
"@esbuild/android-x64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2"
integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==
"@esbuild/darwin-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256"
integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==
"@esbuild/darwin-x64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509"
integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==
"@esbuild/freebsd-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c"
integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==
"@esbuild/freebsd-x64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb"
integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==
"@esbuild/linux-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb"
integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==
"@esbuild/linux-arm@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322"
integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==
"@esbuild/linux-ia32@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc"
integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==
"@esbuild/linux-loong64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a"
integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==
"@esbuild/linux-mips64el@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10"
integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==
"@esbuild/linux-ppc64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0"
integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==
"@esbuild/linux-riscv64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d"
integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==
"@esbuild/linux-s390x@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab"
integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==
"@esbuild/linux-x64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz#2ecc1284b1904aeb41e54c9ddc7fcd349b18f650"
integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==
"@esbuild/netbsd-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0"
integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==
"@esbuild/netbsd-x64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272"
integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==
"@esbuild/openbsd-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e"
integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==
"@esbuild/openbsd-x64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a"
integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==
"@esbuild/openharmony-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f"
integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==
"@esbuild/sunos-x64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2"
integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==
"@esbuild/win32-arm64@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a"
integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==
"@esbuild/win32-ia32@0.27.2":
version "0.27.2"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5"
integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==
"@esbuild/win32-x64@0.27.2":
version "0.27.2"
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz"
@@ -348,7 +478,7 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@^9.39.2", "@eslint/js@9.39.2":
"@eslint/js@9.39.2", "@eslint/js@^9.39.2":
version "9.39.2"
resolved "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz"
integrity sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==
@@ -444,6 +574,95 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@parcel/watcher-android-arm64@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.4.tgz#88c67bde2c3efa997a0b1fea540080c6ade0322c"
integrity sha512-hoh0vx4v+b3BNI7Cjoy2/B0ARqcwVNrzN/n7DLq9ZB4I3lrsvhrkCViJyfTj/Qi5xM9YFiH4AmHGK6pgH1ss7g==
"@parcel/watcher-darwin-arm64@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.4.tgz#d9dc037cff8a4ab7839a79c5287a6e6660f7ab27"
integrity sha512-kphKy377pZiWpAOyTgQYPE5/XEKVMaj6VUjKT5VkNyUJlr2qZAn8gIc7CPzx+kbhvqHDT9d7EqdOqRXT6vk0zw==
"@parcel/watcher-darwin-x64@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.4.tgz#da0e13e16ee6d378242e2cfb469d72667624383a"
integrity sha512-UKaQFhCtNJW1A9YyVz3Ju7ydf6QgrpNQfRZ35wNKUhTQ3dxJ/3MULXN5JN/0Z80V/KUBDGa3RZaKq1EQT2a2gg==
"@parcel/watcher-freebsd-x64@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.4.tgz#feb7cc9ec680bae3e91dddcdb4fe1c399ed52cc1"
integrity sha512-Dib0Wv3Ow/m2/ttvLdeI2DBXloO7t3Z0oCp4bAb2aqyqOjKPPGrg10pMJJAQ7tt8P4V2rwYwywkDhUia/FgS+Q==
"@parcel/watcher-linux-arm-glibc@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.4.tgz#fa4e9cf8228c8c433e2f035e8b16aa299d892a78"
integrity sha512-I5Vb769pdf7Q7Sf4KNy8Pogl/URRCKu9ImMmnVKYayhynuyGYMzuI4UOWnegQNa2sGpsPSbzDsqbHNMyeyPCgw==
"@parcel/watcher-linux-arm-musl@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.4.tgz#9ee6792e2d8810af9871ee5bbc2aa04e0b079d62"
integrity sha512-kGO8RPvVrcAotV4QcWh8kZuHr9bXi9a3bSZw7kFarYR0+fGliU7hd/zevhjw8fnvIKG3J9EO5G6sXNGCSNMYPQ==
"@parcel/watcher-linux-arm64-glibc@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.4.tgz#624c6d874d99afa79305720f96a0c233d4ad7fde"
integrity sha512-KU75aooXhqGFY2W5/p8DYYHt4hrjHZod8AhcGAmhzPn/etTa+lYCDB2b1sJy3sWJ8ahFVTdy+EbqSBvMx3iFlw==
"@parcel/watcher-linux-arm64-musl@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.4.tgz#5341e88b9e645d31c015ed40f384e60e49bd74d2"
integrity sha512-Qx8uNiIekVutnzbVdrgSanM+cbpDD3boB1f8vMtnuG5Zau4/bdDbXyKwIn0ToqFhIuob73bcxV9NwRm04/hzHQ==
"@parcel/watcher-linux-x64-glibc@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.4.tgz#be5bcc49d3f6d21cc81bb531970a05d3721e385c"
integrity sha512-UYBQvhYmgAv61LNUn24qGQdjtycFBKSK3EXr72DbJqX9aaLbtCOO8+1SkKhD/GNiJ97ExgcHBrukcYhVjrnogA==
"@parcel/watcher-linux-x64-musl@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.4.tgz#bffd3895b1f0cc8fd1436e409fd65d0a901281c0"
integrity sha512-YoRWCVgxv8akZrMhdyVi6/TyoeeMkQ0PGGOf2E4omODrvd1wxniXP+DBynKoHryStks7l+fDAMUBRzqNHrVOpg==
"@parcel/watcher-win32-arm64@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.4.tgz#7fb8aedea5b34ba97a01e1555929d01f4eb72fe4"
integrity sha512-iby+D/YNXWkiQNYcIhg8P5hSjzXEHaQrk2SLrWOUD7VeC4Ohu0WQvmV+HDJokZVJ2UjJ4AGXW3bx7Lls9Ln4TQ==
"@parcel/watcher-win32-ia32@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.4.tgz#f7f94ebdb21dedf37b12e030a82d4211798a1c26"
integrity sha512-vQN+KIReG0a2ZDpVv8cgddlf67J8hk1WfZMMP7sMeZmJRSmEax5xNDNWKdgqSe2brOKTQQAs3aCCUal2qBHAyg==
"@parcel/watcher-win32-x64@2.5.4":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.4.tgz#8d895c9723f7fffdf4b360fd1becf1b6bcb571df"
integrity sha512-3A6efb6BOKwyw7yk9ro2vus2YTt2nvcd56AuzxdMiVOxL9umDyN5PKkKfZ/gZ9row41SjVmTVQNWQhaRRGpOKw==
"@parcel/watcher@^2.4.1":
version "2.5.4"
resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.4.tgz#a6575b0a018b4e263589c1e7bc2ceb73c1ee84de"
integrity sha512-WYa2tUVV5HiArWPB3ydlOc4R2ivq0IDrlqhMi3l7mVsFEXNcTfxYFPIHXHXIh/ca/y/V5N4E1zecyxdIBjYnkQ==
dependencies:
detect-libc "^2.0.3"
is-glob "^4.0.3"
node-addon-api "^7.0.0"
picomatch "^4.0.3"
optionalDependencies:
"@parcel/watcher-android-arm64" "2.5.4"
"@parcel/watcher-darwin-arm64" "2.5.4"
"@parcel/watcher-darwin-x64" "2.5.4"
"@parcel/watcher-freebsd-x64" "2.5.4"
"@parcel/watcher-linux-arm-glibc" "2.5.4"
"@parcel/watcher-linux-arm-musl" "2.5.4"
"@parcel/watcher-linux-arm64-glibc" "2.5.4"
"@parcel/watcher-linux-arm64-musl" "2.5.4"
"@parcel/watcher-linux-x64-glibc" "2.5.4"
"@parcel/watcher-linux-x64-musl" "2.5.4"
"@parcel/watcher-win32-arm64" "2.5.4"
"@parcel/watcher-win32-ia32" "2.5.4"
"@parcel/watcher-win32-x64" "2.5.4"
"@pkgr/core@^0.2.9":
version "0.2.9"
resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz"
@@ -459,6 +678,121 @@
resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz"
integrity sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==
"@rollup/rollup-android-arm-eabi@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.55.1.tgz#76e0fef6533b3ce313f969879e61e8f21f0eeb28"
integrity sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==
"@rollup/rollup-android-arm64@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.55.1.tgz#d3cfc675a40bbdec97bda6d7fe3b3b05f0e1cd93"
integrity sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==
"@rollup/rollup-darwin-arm64@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.55.1.tgz#eb912b8f59dd47c77b3c50a78489013b1d6772b4"
integrity sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==
"@rollup/rollup-darwin-x64@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.55.1.tgz#e7d0839fdfd1276a1d34bc5ebbbd0dfd7d0b81a0"
integrity sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==
"@rollup/rollup-freebsd-arm64@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.55.1.tgz#7ff8118760f7351e48fd0cd3717ff80543d6aac8"
integrity sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==
"@rollup/rollup-freebsd-x64@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.55.1.tgz#49d330dadbda1d4e9b86b4a3951b59928a9489a9"
integrity sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==
"@rollup/rollup-linux-arm-gnueabihf@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.55.1.tgz#98c5f1f8b9776b4a36e466e2a1c9ed1ba52ef1b6"
integrity sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==
"@rollup/rollup-linux-arm-musleabihf@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.55.1.tgz#b9acecd3672e742f70b0c8a94075c816a91ff040"
integrity sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==
"@rollup/rollup-linux-arm64-gnu@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.55.1.tgz#7a6ab06651bc29e18b09a50ed1a02bc972977c9b"
integrity sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==
"@rollup/rollup-linux-arm64-musl@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.55.1.tgz#3c8c9072ba4a4d4ef1156b85ab9a2cbb57c1fad0"
integrity sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==
"@rollup/rollup-linux-loong64-gnu@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.55.1.tgz#17a7af13530f4e4a7b12cd26276c54307a84a8b0"
integrity sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==
"@rollup/rollup-linux-loong64-musl@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.55.1.tgz#5cd7a900fd7b077ecd753e34a9b7ff1157fe70c1"
integrity sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==
"@rollup/rollup-linux-ppc64-gnu@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.55.1.tgz#03a097e70243ddf1c07b59d3c20f38e6f6800539"
integrity sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==
"@rollup/rollup-linux-ppc64-musl@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.55.1.tgz#a5389873039d4650f35b4fa060d286392eb21a94"
integrity sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==
"@rollup/rollup-linux-riscv64-gnu@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.55.1.tgz#789e60e7d6e2b76132d001ffb24ba80007fb17d0"
integrity sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==
"@rollup/rollup-linux-riscv64-musl@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.55.1.tgz#3556fa88d139282e9a73c337c9a170f3c5fe7aa4"
integrity sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==
"@rollup/rollup-linux-s390x-gnu@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.55.1.tgz#c085995b10143c16747a67f1a5487512b2ff04b2"
integrity sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==
"@rollup/rollup-linux-x64-gnu@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.55.1.tgz#9563a5419dd2604841bad31a39ccfdd2891690fb"
integrity sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==
"@rollup/rollup-linux-x64-musl@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.55.1.tgz#691bb06e6269a8959c13476b0cd2aa7458facb31"
integrity sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==
"@rollup/rollup-openbsd-x64@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.55.1.tgz#223e71224746a59ce6d955bbc403577bb5a8be9d"
integrity sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==
"@rollup/rollup-openharmony-arm64@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.55.1.tgz#0817e5d8ecbfeb8b7939bf58f8ce3c9dd67fce77"
integrity sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==
"@rollup/rollup-win32-arm64-msvc@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.55.1.tgz#de56d8f2013c84570ef5fb917aae034abda93e4a"
integrity sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==
"@rollup/rollup-win32-ia32-msvc@4.55.1":
version "4.55.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.55.1.tgz#659aff5244312475aeea2c9479a6c7d397b517bf"
integrity sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==
"@rollup/rollup-win32-x64-gnu@4.55.1":
version "4.55.1"
resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.55.1.tgz"
@@ -477,7 +811,7 @@
core-js "^3.15.1"
nanopop "^2.1.0"
"@types/estree@^1.0.6", "@types/estree@1.0.8":
"@types/estree@1.0.8", "@types/estree@^1.0.6":
version "1.0.8"
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
@@ -536,7 +870,7 @@
estree-walker "^2.0.2"
source-map-js "^1.2.1"
"@vue/compiler-dom@^3.3.4", "@vue/compiler-dom@3.5.26":
"@vue/compiler-dom@3.5.26", "@vue/compiler-dom@^3.3.4":
version "3.5.26"
resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz"
integrity sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==
@@ -544,7 +878,7 @@
"@vue/compiler-core" "3.5.26"
"@vue/shared" "3.5.26"
"@vue/compiler-sfc@^3.5.18", "@vue/compiler-sfc@3.5.26":
"@vue/compiler-sfc@3.5.26", "@vue/compiler-sfc@^3.5.18":
version "3.5.26"
resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz"
integrity sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==
@@ -672,7 +1006,7 @@
"@vue/compiler-ssr" "3.5.26"
"@vue/shared" "3.5.26"
"@vue/shared@^3.5.18", "@vue/shared@3.5.26":
"@vue/shared@3.5.26", "@vue/shared@^3.5.18":
version "3.5.26"
resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.26.tgz"
integrity sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==
@@ -682,7 +1016,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.15.0:
acorn@^8.15.0:
version "8.15.0"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz"
integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
@@ -794,7 +1128,7 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
browserslist@^4.24.0, "browserslist@>= 4.21.0":
browserslist@^4.24.0:
version "4.28.1"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz"
integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
@@ -805,6 +1139,11 @@ browserslist@^4.24.0, "browserslist@>= 4.21.0":
node-releases "^2.0.27"
update-browserslist-db "^1.2.0"
buffer-builder@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/buffer-builder/-/buffer-builder-0.2.0.tgz#3322cd307d8296dab1f604618593b261a3fade8f"
integrity sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==
bundle-name@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz"
@@ -838,6 +1177,13 @@ chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
dependencies:
readdirp "^4.0.1"
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
@@ -850,6 +1196,11 @@ color-name@~1.1.4:
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
colorjs.io@^0.5.0:
version "0.5.2"
resolved "https://registry.yarnpkg.com/colorjs.io/-/colorjs.io-0.5.2.tgz#63b20139b007591ebc3359932bef84628eb3fcef"
integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
@@ -913,7 +1264,7 @@ dayjs@^1.10.5:
resolved "https://mirrors.huaweicloud.com/repository/npm/dayjs/-/dayjs-1.11.19.tgz"
integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==
debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.4.0, debug@^4.4.1:
debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.4.1:
version "4.4.3"
resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
@@ -953,6 +1304,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
detect-libc@^2.0.3:
version "2.1.2"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
dom-align@^1.12.1:
version "1.12.4"
resolved "https://mirrors.huaweicloud.com/repository/npm/dom-align/-/dom-align-1.12.4.tgz"
@@ -1056,7 +1412,7 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-config-prettier@^10.0.1, "eslint-config-prettier@>= 7.0.0 <10.0.0 || >=10.1.0":
eslint-config-prettier@^10.0.1:
version "10.1.8"
resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz"
integrity sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==
@@ -1081,7 +1437,7 @@ eslint-plugin-vue@~10.6.2:
semver "^7.6.3"
xml-name-validator "^4.0.0"
eslint-scope@^8.2.0, eslint-scope@^8.4.0:
eslint-scope@^8.4.0:
version "8.4.0"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz"
integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==
@@ -1094,12 +1450,12 @@ eslint-visitor-keys@^3.4.3:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1:
eslint-visitor-keys@^4.2.1:
version "4.2.1"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz"
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.39.2, "eslint@>= 8.21.0", eslint@>=7.0.0, eslint@>=8.0.0:
eslint@^9.39.2:
version "9.39.2"
resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz"
integrity sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==
@@ -1139,7 +1495,7 @@ eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1:
natural-compare "^1.4.0"
optionator "^0.9.3"
espree@^10.0.1, espree@^10.3.0, espree@^10.4.0:
espree@^10.0.1, espree@^10.4.0:
version "10.4.0"
resolved "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz"
integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==
@@ -1148,7 +1504,7 @@ espree@^10.0.1, espree@^10.3.0, espree@^10.4.0:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.2.1"
esquery@^1.5.0, esquery@^1.6.0:
esquery@^1.5.0:
version "1.7.0"
resolved "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz"
integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==
@@ -1246,6 +1602,11 @@ form-data@^4.0.4:
hasown "^2.0.2"
mime-types "^2.1.12"
fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -1336,6 +1697,11 @@ ignore@^5.2.0:
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
immutable@^5.0.2:
version "5.1.4"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.4.tgz#e3f8c1fe7b567d56cf26698f31918c241dae8c1f"
integrity sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==
import-fresh@^3.2.1:
version "3.3.1"
resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz"
@@ -1554,6 +1920,11 @@ natural-compare@^1.4.0:
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
node-addon-api@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
node-releases@^2.0.27:
version "2.0.27"
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz"
@@ -1619,6 +1990,11 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
path-browserify@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz"
integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
@@ -1649,7 +2025,7 @@ picocolors@^1.1.1:
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
"picomatch@^3 || ^4", picomatch@^4.0.3:
picomatch@^4.0.3:
version "4.0.3"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz"
integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
@@ -1661,7 +2037,7 @@ pinia-plugin-persistedstate@^4.7.1:
dependencies:
defu "^6.1.4"
pinia@^3.0.4, pinia@>=3.0.0:
pinia@^3.0.4:
version "3.0.4"
resolved "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz"
integrity sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==
@@ -1697,7 +2073,7 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
"prettier@>= 3.0.0", prettier@>=3.0.0, prettier@3.7.4:
prettier@3.7.4:
version "3.7.4"
resolved "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz"
integrity sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==
@@ -1712,6 +2088,11 @@ punycode@^2.1.0:
resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
readdirp@^4.0.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d"
integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
resize-observer-polyfill@^1.5.1:
version "1.5.1"
resolved "https://mirrors.huaweicloud.com/repository/npm/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
@@ -1766,6 +2147,151 @@ run-applescript@^7.0.0:
resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz"
integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==
rxjs@^7.4.0:
version "7.8.2"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b"
integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==
dependencies:
tslib "^2.1.0"
sass-embedded-all-unknown@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.97.2.tgz#1b3bc5a07a6966f09622bbf8aadfa149169560e3"
integrity sha512-Fj75+vOIDv1T/dGDwEpQ5hgjXxa2SmMeShPa8yrh2sUz1U44bbmY4YSWPCdg8wb7LnwiY21B2KRFM+HF42yO4g==
dependencies:
sass "1.97.2"
sass-embedded-android-arm64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.97.2.tgz#2a31415f07671b2713dcc5ea4e68e5967b5dcce3"
integrity sha512-pF6I+R5uThrscd3lo9B3DyNTPyGFsopycdx0tDAESN6s+dBbiRgNgE4Zlpv50GsLocj/lDLCZaabeTpL3ubhYA==
sass-embedded-android-arm@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.97.2.tgz#c31adf02cdd0fdca0d52d9b0059e6a991c5792fa"
integrity sha512-BPT9m19ttY0QVHYYXRa6bmqmS3Fa2EHByNUEtSVcbm5PkIk1ntmYkG9fn5SJpIMbNmFDGwHx+pfcZMmkldhnRg==
sass-embedded-android-riscv64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.97.2.tgz#81c9a529419c55d2b654499ceec557c6f8e799fc"
integrity sha512-fprI8ZTJdz+STgARhg8zReI2QhhGIT9G8nS7H21kc3IkqPRzhfaemSxEtCqZyvDbXPcgYiDLV7AGIReHCuATog==
sass-embedded-android-x64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.97.2.tgz#9e05e782f9e30791237bc04aa49b47d366a3bd48"
integrity sha512-RswwSjURZxupsukEmNt2t6RGvuvIw3IAD5sDq1Pc65JFvWFY3eHqCmH0lG0oXqMg6KJcF0eOxHOp2RfmIm2+4w==
sass-embedded-darwin-arm64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.97.2.tgz#5bee484274c7b15c7baa56972654756eb3da6700"
integrity sha512-xcsZNnU1XZh21RE/71OOwNqPVcGBU0qT9A4k4QirdA34+ts9cDIaR6W6lgHOBR/Bnnu6w6hXJR4Xth7oFrefPA==
sass-embedded-darwin-x64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.97.2.tgz#01fb4c55203346cffeba18623f6e769a622f9415"
integrity sha512-T/9DTMpychm6+H4slHCAsYJRJ6eM+9H9idKlBPliPrP4T8JdC2Cs+ZOsYqrObj6eOtAD0fGf+KgyNhnW3xVafA==
sass-embedded-linux-arm64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.97.2.tgz#d5bb195fefedcab01a590170950d1bd2daa904db"
integrity sha512-Wh+nQaFer9tyE5xBPv5murSUZE/+kIcg8MyL5uqww6be9Iq+UmZpcJM7LUk+q8klQ9LfTmoDSNFA74uBqxD6IA==
sass-embedded-linux-arm@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.97.2.tgz#bd51af620ef13549e1d23e5e6f7793cba1342202"
integrity sha512-yDRe1yifGHl6kibkDlRIJ2ZzAU03KJ1AIvsAh4dsIDgK5jx83bxZLV1ZDUv7a8KK/iV/80LZnxnu/92zp99cXQ==
sass-embedded-linux-musl-arm64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.97.2.tgz#eb4f6b047aa3ae6907ab511a51da01b6e20c4c60"
integrity sha512-NfUqZSjHwnHvpSa7nyNxbWfL5obDjNBqhHUYmqbHUcmqBpFfHIQsUPgXME9DKn1yBlBc3mWnzMxRoucdYTzd2Q==
sass-embedded-linux-musl-arm@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.97.2.tgz#3370a960f658d322d4fd57a302bc9082cd83c926"
integrity sha512-GIO6xfAtahJAWItvsXZ3MD1HM6s8cKtV1/HL088aUpKJaw/2XjTCveiOO2AdgMpLNztmq9DZ1lx5X5JjqhS45g==
sass-embedded-linux-musl-riscv64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.97.2.tgz#c0fb96880580ef719485502e3fff1d0bb336a250"
integrity sha512-qtM4dJ5gLfvyTZ3QencfNbsTEShIWImSEpkThz+Y2nsCMbcMP7/jYOA03UWgPfEOKSehQQ7EIau7ncbFNoDNPQ==
sass-embedded-linux-musl-x64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.97.2.tgz#32ab41dd6027a5e5d282670e7f10e516ada012af"
integrity sha512-ZAxYOdmexcnxGnzdsDjYmNe3jGj+XW3/pF/n7e7r8y+5c6D2CQRrCUdapLgaqPt1edOPQIlQEZF8q5j6ng21yw==
sass-embedded-linux-riscv64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.97.2.tgz#f6079c543279cd442030d3ea2c90181ed877d89a"
integrity sha512-reVwa9ZFEAOChXpDyNB3nNHHyAkPMD+FTctQKECqKiVJnIzv2EaFF6/t0wzyvPgBKeatA8jszAIeOkkOzbYVkQ==
sass-embedded-linux-x64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.97.2.tgz#c056d90dd80ce4d8996aae7afd50f0d88b773de4"
integrity sha512-bvAdZQsX3jDBv6m4emaU2OMTpN0KndzTAMgJZZrKUgiC0qxBmBqbJG06Oj/lOCoXGCxAvUOheVYpezRTF+Feog==
sass-embedded-unknown-all@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.97.2.tgz#a640959f8f209fa7a9bd6d08f7733d9471875ffb"
integrity sha512-86tcYwohjPgSZtgeU9K4LikrKBJNf8ZW/vfsFbdzsRlvc73IykiqanufwQi5qIul0YHuu9lZtDWyWxM2dH/Rsg==
dependencies:
sass "1.97.2"
sass-embedded-win32-arm64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.97.2.tgz#cc5807787e714a5279981789c033610ca865ae18"
integrity sha512-Cv28q8qNjAjZfqfzTrQvKf4JjsZ6EOQ5FxyHUQQeNzm73R86nd/8ozDa1Vmn79Hq0kwM15OCM9epanDuTG1ksA==
sass-embedded-win32-x64@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.97.2.tgz#88993deffdfa048f60fef6d4dca853a7c0862a3d"
integrity sha512-DVxLxkeDCGIYeyHLAvWW3yy9sy5Ruk5p472QWiyfyyG1G1ASAR8fgfIY5pT0vE6Rv+VAKVLwF3WTspUYu7S1/Q==
sass-embedded@^1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.97.2.tgz#03622086bd0f43af4df92972d9bf1d6d76655c36"
integrity sha512-lKJcskySwAtJ4QRirKrikrWMFa2niAuaGenY2ElHjd55IwHUiur5IdKu6R1hEmGYMs4Qm+6rlRW0RvuAkmcryg==
dependencies:
"@bufbuild/protobuf" "^2.5.0"
buffer-builder "^0.2.0"
colorjs.io "^0.5.0"
immutable "^5.0.2"
rxjs "^7.4.0"
supports-color "^8.1.1"
sync-child-process "^1.0.2"
varint "^6.0.0"
optionalDependencies:
sass-embedded-all-unknown "1.97.2"
sass-embedded-android-arm "1.97.2"
sass-embedded-android-arm64 "1.97.2"
sass-embedded-android-riscv64 "1.97.2"
sass-embedded-android-x64 "1.97.2"
sass-embedded-darwin-arm64 "1.97.2"
sass-embedded-darwin-x64 "1.97.2"
sass-embedded-linux-arm "1.97.2"
sass-embedded-linux-arm64 "1.97.2"
sass-embedded-linux-musl-arm "1.97.2"
sass-embedded-linux-musl-arm64 "1.97.2"
sass-embedded-linux-musl-riscv64 "1.97.2"
sass-embedded-linux-musl-x64 "1.97.2"
sass-embedded-linux-riscv64 "1.97.2"
sass-embedded-linux-x64 "1.97.2"
sass-embedded-unknown-all "1.97.2"
sass-embedded-win32-arm64 "1.97.2"
sass-embedded-win32-x64 "1.97.2"
sass@1.97.2:
version "1.97.2"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.97.2.tgz#e515a319092fd2c3b015228e3094b40198bff0da"
integrity sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw==
dependencies:
chokidar "^4.0.0"
immutable "^5.0.2"
source-map-js ">=0.6.2 <2.0.0"
optionalDependencies:
"@parcel/watcher" "^2.4.1"
scroll-into-view-if-needed@^2.2.25:
version "2.2.31"
resolved "https://mirrors.huaweicloud.com/repository/npm/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz"
@@ -1809,7 +2335,7 @@ sirv@^3.0.1, sirv@^3.0.2:
mrmime "^2.0.0"
totalist "^3.0.0"
source-map-js@^1.0.2, source-map-js@^1.2.1:
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
@@ -1843,6 +2369,25 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
supports-color@^8.1.1:
version "8.1.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
dependencies:
has-flag "^4.0.0"
sync-child-process@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/sync-child-process/-/sync-child-process-1.0.2.tgz#45e7c72e756d1243e80b547ea2e17957ab9e367f"
integrity sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==
dependencies:
sync-message-port "^1.0.0"
sync-message-port@^1.0.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/sync-message-port/-/sync-message-port-1.1.3.tgz#6055c565ee8c81d2f9ee5aae7db757e6d9088c0c"
integrity sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==
synckit@^0.11.7:
version "0.11.11"
resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz"
@@ -1868,6 +2413,11 @@ totalist@^3.0.0:
resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz"
integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==
tslib@^2.1.0:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
@@ -1903,6 +2453,11 @@ util-deprecate@^1.0.2:
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
varint@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0"
integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==
vite-dev-rpc@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-1.1.0.tgz"
@@ -1958,7 +2513,7 @@ vite-plugin-vue-inspector@^5.3.2:
kolorist "^1.8.0"
magic-string "^0.30.4"
"vite@^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0", "vite@^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0", "vite@^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0", "vite@^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "vite@^6.0.0 || ^7.0.0-0", vite@^7.3.0:
vite@^7.3.0:
version "7.3.1"
resolved "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz"
integrity sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==
@@ -1972,18 +2527,6 @@ vite-plugin-vue-inspector@^5.3.2:
optionalDependencies:
fsevents "~2.3.3"
vue-eslint-parser@^10.0.0:
version "10.2.0"
resolved "https://mirrors.huaweicloud.com/repository/npm/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz"
integrity sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==
dependencies:
debug "^4.4.0"
eslint-scope "^8.2.0"
eslint-visitor-keys "^4.2.0"
espree "^10.3.0"
esquery "^1.6.0"
semver "^7.6.3"
vue-i18n@^11.2.8:
version "11.2.8"
resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.2.8.tgz"
@@ -2007,7 +2550,7 @@ vue-types@^3.0.0:
dependencies:
is-plain-object "3.0.1"
vue@^3.0.0, vue@^3.2.25, vue@^3.5.0, vue@^3.5.11, vue@^3.5.26, vue@>=3.0.3, vue@>=3.2.0, vue@3.5.26:
vue@^3.5.26:
version "3.5.26"
resolved "https://registry.npmjs.org/vue/-/vue-3.5.26.tgz"
integrity sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==