version: 4.5.0

This commit is contained in:
XiaoDaiGua-Ray 2023-12-29 23:24:18 +08:00
parent 8b56327eaa
commit 740d415a3f
81 changed files with 708 additions and 390 deletions

View File

@ -33,7 +33,6 @@ module.exports = {
defineExpose: 'readonly',
withDefaults: 'readonly',
defineOptions: 'readonly',
defineModel: 'readonly',
},
rules: {
'no-undefined': ['error'],

View File

@ -1,5 +1,46 @@
# CHANGE LOG
## 4.5.0
破坏性更新。
更新 `vue` 版本至 `3.4.0`,请查看相关变更:[Vue 3.4.0](https://github.com/vuejs/core/blob/main/CHANGELOG.md)。该版本破坏性更新了一些东西,例如:
- `JSX` 命名空间默认移除
- `ReactiveTransform` 移除
- `v-is` 指令移除
更新 `@vitejs/plugin-vue` 版本至 `5.0.0`,请查看相关变更:[vite-plugin-vue](https://github.com/vitejs/vite-plugin-vue/blob/main/packages/plugin-vue/CHANGELOG.md)。该版本破坏性更新了一些东西,例如:
- 放弃 `ReactivityTransform` 支持
- 放弃 `node14, 16` 版本支持
- 放弃 `vite4.x` 版本支持
- 弃用 `defineModel` 方法
主要是解决 `sameLevel` 问题与核心包 `store/men` 的一些问题。提高了性能,避免了潜在的空引用问题。
然后就是统一 `types` 包的导入导出行为。
## Feats
- 统一 `types` 包下的导出方式,现在统一为 `import type { xxx } from '@/types'` 导入
- `RQRCode` 组件
- 在 `loading` 状态下会模糊显示二维码,并且展示 `loading` 状态
- 优化显示 `error` 状态下默认按钮样式
- 更新 `README.md`, `README-ZH.md` 文档
- 取消 `changeModelValue` 节流锁
- 优化 `changeModelValue`, `updateMenuKeyWhenRouteUpdate` 方法,避免潜在的空引用问题
- 插件相关
- 更新 `vue` 版本至 `3.4.0`
- 更新 `@vitejs/plugin-vue-jsx` 版本至 `3.1.0`
- `RModal` 组件相关
- 新增 `memoryPosition` 配置项,用于配置是否记忆上一次的位置
## Fixes
- 修复初始化的时候面包屑为空的问题
- 修复 `sameLevel` 平级模式面包屑追加问题
## 4.4.7
## Feats

View File

@ -1,6 +1,22 @@
<div align="center">
<a href="https://github.com/XiaoDaiGua-Ray/ray-template"> <img alt="Ray Template" width="200" height="200" src="https://r2chevereto.yka.moe/longmao.navigator.th.png"> </a> <br> <br>
<a href="https://github.com/XiaoDaiGua-Ray/ray-template/blob/main/LICENSE"><img src="https://img.shields.io/github/license/XiaoDaiGua-Ray/ray-template" alt="LICENSE"></a>
<a href="https://github.com/XiaoDaiGua-Ray/ray-template">
<img
alt="Ray Template"
width="200"
height="200"
src="https://r2chevereto.yka.moe/longmao.navigator.th.png"
/>
</a>
<br />
<br />
<a href="https://nodejs.org/en/about/previous-releases"><img src="https://img.shields.io/node/v/vite.svg" alt="node compatibility"></a>
<a href="https://github.com/XiaoDaiGua-Ray/ray-template/blob/main/LICENSE"
><img
src="https://img.shields.io/github/license/XiaoDaiGua-Ray/ray-template"
alt="LICENSE"
/></a>
<a href="#badge"><img src="https://img.shields.io/github/languages/top/XiaoDaiGua-Ray/ray-template" alt="language"></a>
<a href="https://www.npmjs.com/package/ray-template"><img src="https://img.shields.io/npm/v/ray-template" alt="npm package"></a>
</div>
<div align="center">
@ -9,32 +25,40 @@
简体中文 | [English](https://github.com/XiaoDaiGua-Ray/ray-template/blob/main/README.md)
一个 `免费`、`高效``特性完整` 并且基于 vite5.x & ts(x) & pinia & vue3.x 等最新技术的中后台模板。
一个 `完全免费`、`高效``特性完整` 并且基于 vite5.x & ts(x) & pinia & vue3.x 等最新技术的中后台模板。
</div>
## 🌻 简介
`Ray Template`采用前沿前端技术,摒弃繁杂与臃肿,采用模块化设计,解耦数据、方法和视图,专注业务开发。提供丰富配置和丰富的模板 `Hooks`,支持个性化定制,满足你的项目需求。
## ✨ 特性
- **靠爱发电**:几乎包含市面常见的模板特性并且全部免费使用
- **最新技术栈**:使用 vue3.x/vite5.x/pinia 等前端前沿技术开发
- **TypeScript**:应用程序级 JavaScript 的语言
- **主题**:可配置的主题
- **国际化**:内置完善的国际化方案
- **Mock 数据**:内置 Mock 数据方案
- **权限**:内置完善的动态路由权限生成方案
- **组件**:二次封装了多个常用的组件
- **Axios 请求**:二次封装 axios 库,支持:取消、防抖、自动重复取消等功能
- **缓存**:任意深度页面缓存
- **SVG**:内置 svg icon 解决方案
- **独立的 Data Methods Views**:解耦管理的数据、方法、视图,放心二次开发
- **模板专属 hooks**:基于模板特性封装的 hooks 让你更加方便的使用模板一些功能
- `全新技术栈:`使用 ts(x), vite5.x, vue3.x, pinia 等前端前沿技术开发
- `主题:`可配置的主题
- `国际化:`内置完善的国际化方案
- `权限:`内置完善的动态路由权限生成方案
- `组件:`二次封装了多个常用的组件
- `工具包:`常用的工具函数封装
- `缓存:`任意深度页面缓存
- `模块化设计:`解耦管理的数据、方法、视图,放心二次开发
- `配置化:`支持丰富的配置项
- `代码风格:`内置 prettier, eslint 等代码风格工具
- `多端适配:`支持 pc, phone, pad
- `文档:`完善的文档
- `Mock 数据:`内置 Mock 数据方案
- `Axios 请求:`二次封装 axios 库,支持:取消、防抖、自动重复取消等功能
- `SVG`内置 svg icon 解决方案
- `Hooks`基于模板特性封装的 hooks 让你更加方便的使用模板一些功能
- `TypeScript`提供完整的类型
## 🪄 预览地址
## 👀 预览地址
- [点击预览](https://xiaodaigua-ray.github.io/ray-template/#/)
- [点击预览(加速地址)](https://ray-template.yunkuangao.com/#/)
## 🦾 文档地址
## 📌 文档地址
- [文档](https://xiaodaigua-ray.github.io/ray-template-doc/)
- [文档(加速地址)](https://ray-template.yunkuangao.com/ray-template-doc/)
@ -50,8 +74,9 @@
- [Vue3](https://v3.vuejs.org/) - 熟悉 Vue 基础语法
- [TypeScript](https://www.typescriptlang.org/) - 熟悉 TypeScript 基本语法
- [Es6+](http://es6.ruanyifeng.com/) - 熟悉 es6 基本语法
- [Vue-Hooks-Plus] - 熟悉 vue-hooks-plus useRequest 方法的基本使用
- [Vue-Router-Next](https://next.router.vuejs.org/) - 熟悉 vue-router4.x 基本使用
- [Naive-UI](https://www.naiveui.com) - ui 基本使用
- [Naive-UI](https://www.naiveui.com) - naive ui 基本使用
- [Mock.js](https://github.com/nuysoft/Mock) - mockjs 基本语法
- [Pinia](https://pinia.vuejs.org/zh/introduction.html) - 状态管理器 pinia 使用
- [TSX](https://github.com/vuejs/babel-plugin-jsx/blob/main/packages/babel-plugin-jsx/README-zh_CN.md) - tsx 基本语法
@ -98,9 +123,9 @@ pnpm preview
pnpm report
```
### 开发
### 快速开发
简介、易上手是该模板的核心思路。所以你可以放心的直接删除 `views/demo` `router/moduels/demo` 下的所有文件,这样就是一个干净的项目了
只需要删除 `views/demo`, `router/modules/demo` 下的文件即可得到一个干净的项目模板
## 🪴 项目活动

103
README.md
View File

@ -1,6 +1,22 @@
<div align="center">
<a href="https://github.com/XiaoDaiGua-Ray/ray-template"> <img alt="Ray Template" width="200" height="200" src="https://r2chevereto.yka.moe/longmao.navigator.th.png"> </a> <br> <br>
<a href="https://github.com/XiaoDaiGua-Ray/ray-template/blob/main/LICENSE"><img src="https://img.shields.io/github/license/XiaoDaiGua-Ray/ray-template" alt="LICENSE"></a>
<a href="https://github.com/XiaoDaiGua-Ray/ray-template">
<img
alt="Ray Template"
width="200"
height="200"
src="https://r2chevereto.yka.moe/longmao.navigator.th.png"
/>
</a>
<br />
<br />
<a href="https://nodejs.org/en/about/previous-releases"><img src="https://img.shields.io/node/v/vite.svg" alt="node compatibility"></a>
<a href="https://github.com/XiaoDaiGua-Ray/ray-template/blob/main/LICENSE"
><img
src="https://img.shields.io/github/license/XiaoDaiGua-Ray/ray-template"
alt="LICENSE"
/></a>
<a href="#badge"><img src="https://img.shields.io/github/languages/top/XiaoDaiGua-Ray/ray-template" alt="language"></a>
<a href="https://www.npmjs.com/package/ray-template"><img src="https://img.shields.io/npm/v/ray-template" alt="npm package"></a>
</div>
<div align="center">
@ -9,35 +25,43 @@
English | [简体中文](https://github.com/XiaoDaiGua-Ray/ray-template/blob/main/README-ZH.md)
A `free`, `efficient`, `complete with features` middle and backend template based on the latest technologies such as vite5.x & ts(x) & pinia & vue3.x.
A `completely free`, `efficient`, `feature complete` and based on vite5. x & ts(x) & pinia & vue3. x and other latest technology in the background template.
</div>
## ✨ Feature
## 🌻 Intro
- **Power by love**: Contains almost all common template features on the market and all are free to use.
- **Latest Technology Stack**Developed using front-end cutting-edge technologies such as vue3.x/vite5.x/pinia.
- **TypeScript**The language for application-level JavaScript.
- **App Theme**Configurable themes.
- **Globalization**Built-in complete internationalization solution.
- **Mock Data**Built-in Mock data scheme.
- **Permissions**Built-in complete dynamic routing permission generation solution.
- **Components**Secondary encapsulation of multiple commonly used components.
- **Axios Request**Secondary encapsulation of the axios library, supporting functions such as cancellation, anti-shake, automatic repeat cancellation, etc.
- **Page Cache**Arbitrarily deep page cache.
- **SVG**Built-in svg icon solution.
- **Standalone Data Methods Views**Decoupled management of data, methods, and views allows for secondary development with confidence.
- **Template Specific Hooks** : Hooks based on the template feature package make it easier to use some of the features of the template.
`Ray Template` uses cutting-edge front-end technology, abandoning complexity and bloat, using modular design, decoupling data, methods and views, focusing on business development. Provide rich configuration and rich template `Hooks`, support personalized customization, to meet your project needs.
## 🪄 Preview
## ✨ Features
- [Click to preview](https://xiaodaigua-ray.github.io/ray-template/#/)
- [Click to preview(Acceleration address)](https://ray-template.yunkuangao.com/#/)
- `New technology stack:` using ts(x), vite5. x, vue3. x, pinia and other front-end cutting-edge technology development
- `Theme:` configurable theme
- `Internationalization:` built-in perfect internationalization solution
- `Permissions:` built-in perfect dynamic routing permission generation solution
- `Components:` secondary encapsulation of multiple common components
- `Toolkit:` common tool function packaging
- `Cache:` arbitrary depth page caching
- `Modular design:` decoupling management data, methods, views, rest assured secondary development
- `Configurable:` support rich configuration items
- `Code style:` built-in prettier, eslint and other code style tools
- `Multi-terminal adaptation:` support pc, phone, pad
- `Documentation:` complete documentation
- `Mock data:` built-in Mock data solution
- `Axios request:` secondary encapsulation of axios library, support: cancel, jitter, automatic repeat cancellation and other functions
- `SVG:` built-in svg icon solution
- `Hooks:` based on the template characteristics of the encapsulated hooks to make it easier to use some functions of the template
- `TypeScript:` provide a complete type
## 🦾 Document
## 👀 Preview
- [Document](https://xiaodaigua-ray.github.io/ray-template-doc/)
- [Document(Acceleration address)](https://ray-template.yunkuangao.com/ray-template-doc/)
- [Preview](https://xiaodaigua-ray.github.io/ray-template/#/)
- [Preview(Acceleration address)](https://ray-template.yunkuangao.com/#/)
## 📌 Documentation
- [Documentation](https://xiaodaigua-ray.github.io/ray-template-doc/)
- [Documentation(Acceleration address)](https://ray-template.yunkuangao.com/ray-template-doc/)
## 🔋 Change Log
@ -45,16 +69,17 @@ A `free`, `efficient`, `complete with features` middle and backend template base
## 🪴 Prepare
- [Node](http://nodejs.org/) and [git](https://git-scm.com/) - Project development environment
- [Vite](https://vitejs.dev/) - Familiar with vite features
- [Vue3](https://v3.vuejs.org/) - Familiar with Vue3.x basic syntax
- [TypeScript](https://www.typescriptlang.org/) - Familiar with TypeScript basic syntax
- [Es6+](http://es6.ruanyifeng.com/) - Familiar with es6 basic syntax
- [Vue-Router-Next](https://next.router.vuejs.org/) - Familiar with the basic use of vue-router4.x
- [Naive-UI](https://www.naiveui.com) - UI basic usage
- [Mock.js](https://github.com/nuysoft/Mock) - Mockjs basic syntax
- [Pinia](https://pinia.vuejs.org/zh/introduction.html) - State manager pinia uses
- [TSX](https://github.com/vuejs/babel-plugin-jsx/blob/main/packages/babel-plugin-jsx/README-zh_CN.md) - TSX basic syntax
- [Node](http://nodejs.org/) and [git](https://git-scm.com/) - project development environment
- [Vite](https://vitejs.dev/) - familiar with vite features
- [Vue3](https://v3.vuejs.org/) - familiar with Vue basic syntax
- [TypeScript](https://www.typescriptlang.org/) - familiar with TypeScript basic syntax
- [Es6+](http://es6.ruanyifeng.com/) - familiar with es6 basic syntax
- [Vue-Hooks-Plus] - familiar with vue-hooks-plus useRequest method basic use
- [Vue-Router-Next](https://next.router.vuejs.org/) - familiar with vue-router4.x basic use
- [Naive-UI](https://www.naiveui.com) - naive ui basic use
- [Mock.js](https://github.com/nuysoft/Mock) - mockjs basic syntax
- [Pinia](https://pinia.vuejs.org/zh/introduction.html) - state manager pinia usage
- [TSX](https://github.com/vuejs/babel-plugin-jsx/blob/main/packages/babel-plugin-jsx/README-zh_CN.md) - tsx basic syntax
## 📦 Setup
@ -80,7 +105,7 @@ pnpm i
pnpm dev
```
### Project packaging
### Build project
```sh
pnpm build
@ -92,23 +117,23 @@ pnpm build
pnpm preview
```
### Volumetric analysis
### Report project
```sh
pnpm report
```
### Develop
### Development
Introduction and ease of use are the core ideas of this template. So you can safely delete all files under `views/demo` and `router/moduels/demo`, and you will have a clean project.
Just delete the files under `views/demo`, `router/modules/demo` to get a clean project template.
## 🪴 Project Activities
![Alt](https://repobeats.axiom.co/api/embed/fab6071297ab281913a42f07a2779b488cfd62b8.svg 'Repobeats analytics image')
### Contributor
### Contributors
Thanks for all their contributions 🐝!
Thanks for all their contributions 🐝 !
<a href="https://github.com/XiaoDaiGua-Ray/ray-template/graphs/contributors">
<img src="https://contrib.rocks/image?repo=XiaoDaiGua-Ray/ray-template" />

2
cfg.ts
View File

@ -42,7 +42,7 @@ import { htmlTitlePlugin, mixinCSSPlugin } from './vite-plugins/index'
import { APP_THEME } from './src/app-config/designConfig'
import { PRE_LOADING_CONFIG, SIDE_BAR_LOGO } from './src/app-config/appConfig'
import type { AppConfigExport } from '@/types/modules/cfg'
import type { AppConfigExport } from '@/types'
import type { BuildOptions } from 'vite'
const config: AppConfigExport = {

View File

@ -1,7 +1,7 @@
{
"name": "ray-template",
"private": false,
"version": "4.4.7",
"version": "4.5.0",
"type": "module",
"engines": {
"node": "^18.0.0 || >=20.0.0",
@ -48,7 +48,7 @@
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.0",
"print-js": "^1.6.0",
"vue": "^3.3.13",
"vue": "^3.4.0",
"vue-hooks-plus": "1.8.5",
"vue-i18n": "^9.8.0",
"vue-router": "^4.2.5",
@ -67,8 +67,8 @@
"@types/mockjs": "1.0.7",
"@typescript-eslint/eslint-plugin": "^6.5.0",
"@typescript-eslint/parser": "^6.5.0",
"@vitejs/plugin-vue": "^4.4.1",
"@vitejs/plugin-vue-jsx": "^3.0.2",
"@vitejs/plugin-vue": "^5.0.0",
"@vitejs/plugin-vue-jsx": "^3.1.0",
"@vue-hooks-plus/resolvers": "1.2.4",
"@vue/eslint-config-prettier": "^8.0.0",
"@vue/eslint-config-typescript": "^11.0.3",

465
pnpm-lock.yaml generated
View File

@ -7,7 +7,7 @@ settings:
dependencies:
'@vueuse/core':
specifier: ^10.6.1
version: 10.6.1(vue@3.3.13)
version: 10.6.1(vue@3.4.0)
awesome-qr:
specifier: 2.1.5-rc.0
version: 2.1.5-rc.0
@ -43,10 +43,10 @@ dependencies:
version: 1.1.0
naive-ui:
specifier: ^2.36.0
version: 2.36.0(vue@3.3.13)
version: 2.36.0(vue@3.4.0)
pinia:
specifier: ^2.1.7
version: 2.1.7(typescript@5.2.2)(vue@3.3.13)
version: 2.1.7(typescript@5.2.2)(vue@3.4.0)
pinia-plugin-persistedstate:
specifier: ^3.2.0
version: 3.2.0(pinia@2.1.7)
@ -54,17 +54,17 @@ dependencies:
specifier: ^1.6.0
version: 1.6.0
vue:
specifier: ^3.3.13
version: 3.3.13(typescript@5.2.2)
specifier: ^3.4.0
version: 3.4.0(typescript@5.2.2)
vue-hooks-plus:
specifier: 1.8.5
version: 1.8.5(vue@3.3.13)
version: 1.8.5(vue@3.4.0)
vue-i18n:
specifier: ^9.8.0
version: 9.8.0(vue@3.3.13)
version: 9.8.0(vue@3.4.0)
vue-router:
specifier: ^4.2.5
version: 4.2.5(vue@3.3.13)
version: 4.2.5(vue@3.4.0)
xlsx:
specifier: ^0.18.5
version: 0.18.5
@ -107,11 +107,11 @@ devDependencies:
specifier: ^6.5.0
version: 6.5.0(eslint@8.52.0)(typescript@5.2.2)
'@vitejs/plugin-vue':
specifier: ^4.4.1
version: 4.4.1(vite@5.0.10)(vue@3.3.13)
specifier: ^5.0.0
version: 5.0.0(vite@5.0.10)(vue@3.4.0)
'@vitejs/plugin-vue-jsx':
specifier: ^3.0.2
version: 3.0.2(vite@5.0.10)(vue@3.3.13)
specifier: ^3.1.0
version: 3.1.0(vite@5.0.10)(vue@3.4.0)
'@vue-hooks-plus/resolvers':
specifier: 1.2.4
version: 1.2.4(vue-hooks-plus@1.8.5)
@ -183,7 +183,7 @@ devDependencies:
version: 0.16.6(@vueuse/core@10.6.1)
unplugin-vue-components:
specifier: ^0.25.2
version: 0.25.2(vue@3.3.13)
version: 0.25.2(vue@3.4.0)
vite:
specifier: ^5.0.10
version: 5.0.10(@types/node@20.4.7)(sass@1.69.5)
@ -245,11 +245,24 @@ packages:
chalk: 2.4.2
dev: true
/@babel/code-frame@7.23.5:
resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.23.4
chalk: 2.4.2
dev: true
/@babel/compat-data@7.22.9:
resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/compat-data@7.23.5:
resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/core@7.23.2:
resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==}
engines: {node: '>=6.9.0'}
@ -273,6 +286,29 @@ packages:
- supports-color
dev: true
/@babel/core@7.23.6:
resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==}
engines: {node: '>=6.9.0'}
dependencies:
'@ampproject/remapping': 2.2.1
'@babel/code-frame': 7.23.5
'@babel/generator': 7.23.6
'@babel/helper-compilation-targets': 7.23.6
'@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6)
'@babel/helpers': 7.23.6
'@babel/parser': 7.23.6
'@babel/template': 7.22.15
'@babel/traverse': 7.23.6
'@babel/types': 7.23.6
convert-source-map: 2.0.0
debug: 4.3.4
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: true
/@babel/eslint-parser@7.22.11(@babel/core@7.23.2)(eslint@8.52.0):
resolution: {integrity: sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==}
engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
@ -307,6 +343,16 @@ packages:
jsesc: 2.5.2
dev: true
/@babel/generator@7.23.6:
resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.6
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.20
jsesc: 2.5.2
dev: true
/@babel/helper-annotate-as-pure@7.22.5:
resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
engines: {node: '>=6.9.0'}
@ -325,19 +371,33 @@ packages:
semver: 6.3.1
dev: true
/@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2):
resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==}
/@babel/helper-compilation-targets@7.23.6:
resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/compat-data': 7.23.5
'@babel/helper-validator-option': 7.23.5
browserslist: 4.22.2
lru-cache: 5.1.1
semver: 6.3.1
dev: true
/@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6):
resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
peerDependenciesMeta:
'@babel/core':
optional: true
dependencies:
'@babel/core': 7.23.2
'@babel/core': 7.23.6
'@babel/helper-annotate-as-pure': 7.22.5
'@babel/helper-environment-visitor': 7.22.5
'@babel/helper-function-name': 7.22.5
'@babel/helper-member-expression-to-functions': 7.22.15
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.23.0
'@babel/helper-member-expression-to-functions': 7.23.0
'@babel/helper-optimise-call-expression': 7.22.5
'@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2)
'@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6)
'@babel/helper-skip-transparent-expression-wrappers': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
semver: 6.3.1
@ -376,8 +436,8 @@ packages:
'@babel/types': 7.23.3
dev: true
/@babel/helper-member-expression-to-functions@7.22.15:
resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==}
/@babel/helper-member-expression-to-functions@7.23.0:
resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.6
@ -404,6 +464,20 @@ packages:
'@babel/helper-validator-identifier': 7.22.20
dev: true
/@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6):
resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.23.6
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-module-imports': 7.22.15
'@babel/helper-simple-access': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/helper-validator-identifier': 7.22.20
dev: true
/@babel/helper-optimise-call-expression@7.22.5:
resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
engines: {node: '>=6.9.0'}
@ -416,15 +490,18 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-replace-supers@7.22.9(@babel/core@7.23.2):
resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==}
/@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6):
resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
peerDependenciesMeta:
'@babel/core':
optional: true
dependencies:
'@babel/core': 7.23.2
'@babel/helper-environment-visitor': 7.22.5
'@babel/helper-member-expression-to-functions': 7.22.15
'@babel/core': 7.23.6
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-member-expression-to-functions': 7.23.0
'@babel/helper-optimise-call-expression': 7.22.5
dev: true
@ -467,6 +544,11 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-validator-option@7.23.5:
resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helpers@7.23.2:
resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==}
engines: {node: '>=6.9.0'}
@ -478,6 +560,17 @@ packages:
- supports-color
dev: true
/@babel/helpers@7.23.6:
resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.22.15
'@babel/traverse': 7.23.6
'@babel/types': 7.23.6
transitivePeerDependencies:
- supports-color
dev: true
/@babel/highlight@7.22.13:
resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==}
engines: {node: '>=6.9.0'}
@ -487,6 +580,15 @@ packages:
js-tokens: 4.0.0
dev: true
/@babel/highlight@7.23.4:
resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.22.20
chalk: 2.4.2
js-tokens: 4.0.0
dev: true
/@babel/parser@7.22.5:
resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==}
engines: {node: '>=6.0.0'}
@ -510,37 +612,37 @@ packages:
dependencies:
'@babel/types': 7.23.6
/@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2):
resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==}
/@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6):
resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.23.2
'@babel/core': 7.23.6
'@babel/helper-plugin-utils': 7.22.5
dev: true
/@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2):
resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==}
/@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6):
resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.23.2
'@babel/core': 7.23.6
'@babel/helper-plugin-utils': 7.22.5
dev: true
/@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2):
resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==}
/@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6):
resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.23.2
'@babel/core': 7.23.6
'@babel/helper-annotate-as-pure': 7.22.5
'@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2)
'@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6)
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2)
'@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6)
dev: true
/@babel/runtime@7.23.6:
@ -613,6 +715,24 @@ packages:
- supports-color
dev: true
/@babel/traverse@7.23.6:
resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.23.5
'@babel/generator': 7.23.6
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.6
'@babel/types': 7.23.6
debug: 4.3.4
globals: 11.12.0
transitivePeerDependencies:
- supports-color
dev: true
/@babel/types@7.23.3:
resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==}
engines: {node: '>=6.9.0'}
@ -813,12 +933,12 @@ packages:
css-render: 0.15.12
dev: false
/@css-render/vue3-ssr@0.15.12(vue@3.3.13):
/@css-render/vue3-ssr@0.15.12(vue@3.4.0):
resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==}
peerDependencies:
vue: ^3.0.11
dependencies:
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
dev: false
/@emotion/hash@0.8.0:
@ -1316,7 +1436,7 @@ packages:
magic-string: 0.30.5
mlly: 1.4.1
source-map-js: 1.0.2
vue-i18n: 9.8.0(vue@3.3.13)
vue-i18n: 9.8.0(vue@3.4.0)
yaml-eslint-parser: 1.2.2
dev: true
@ -1378,7 +1498,7 @@ packages:
picocolors: 1.0.0
source-map-js: 1.0.2
unplugin: 1.4.0
vue-i18n: 9.8.0(vue@3.3.13)
vue-i18n: 9.8.0(vue@3.4.0)
transitivePeerDependencies:
- rollup
- supports-color
@ -1413,6 +1533,13 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
/@jridgewell/trace-mapping@0.3.20:
resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
dependencies:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
/@jridgewell/trace-mapping@0.3.9:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
dependencies:
@ -1990,31 +2117,31 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
/@vitejs/plugin-vue-jsx@3.0.2(vite@5.0.10)(vue@3.3.13):
resolution: {integrity: sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==}
/@vitejs/plugin-vue-jsx@3.1.0(vite@5.0.10)(vue@3.4.0):
resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^4.0.0
vite: ^4.0.0 || ^5.0.0
vue: ^3.0.0
dependencies:
'@babel/core': 7.23.2
'@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.2)
'@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.2)
'@babel/core': 7.23.6
'@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6)
'@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.6)
vite: 5.0.10(@types/node@20.4.7)(sass@1.69.5)
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
transitivePeerDependencies:
- supports-color
dev: true
/@vitejs/plugin-vue@4.4.1(vite@5.0.10)(vue@3.3.13):
resolution: {integrity: sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA==}
engines: {node: ^14.18.0 || >=16.0.0}
/@vitejs/plugin-vue@5.0.0(vite@5.0.10)(vue@3.4.0):
resolution: {integrity: sha512-7x5e8X4J1Wi4NxudGjJBd2OFerAi/0nzF80ojCzvfj347WVr0YSn82C8BSsgwSHzlk9Kw5xnZfj0/7RLnNwP5w==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^4.0.0
vite: ^5.0.0
vue: ^3.2.25
dependencies:
vite: 5.0.10(@types/node@20.4.7)(sass@1.69.5)
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
dev: true
/@volar/language-core@1.10.1:
@ -2042,24 +2169,24 @@ packages:
vue-hooks-plus: ^1.5.2
dependencies:
local-pkg: 0.4.3
vue-hooks-plus: 1.8.5(vue@3.3.13)
vue-hooks-plus: 1.8.5(vue@3.4.0)
dev: true
/@vue/babel-helper-vue-transform-on@1.1.5:
resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==}
dev: true
/@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.2):
/@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.6):
resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.23.2
'@babel/core': 7.23.6
'@babel/helper-module-imports': 7.22.15
'@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2)
'@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6)
'@babel/template': 7.22.15
'@babel/traverse': 7.22.19
'@babel/types': 7.23.3
'@babel/traverse': 7.23.6
'@babel/types': 7.23.6
'@vue/babel-helper-vue-transform-on': 1.1.5
camelcase: 6.3.0
html-tags: 3.3.1
@ -2075,6 +2202,7 @@ packages:
'@vue/shared': 3.3.13
estree-walker: 2.0.2
source-map-js: 1.0.2
dev: true
/@vue/compiler-core@3.3.8:
resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==}
@ -2085,11 +2213,21 @@ packages:
source-map-js: 1.0.2
dev: true
/@vue/compiler-core@3.4.0:
resolution: {integrity: sha512-cw4S15PkNGTKkP9OFFl4wnQoJJk+HqaYBafgrpDnSukiQGpcYJeRpzmqnCVCIkl6V6Eqsv58E0OAdl6b592vuA==}
dependencies:
'@babel/parser': 7.23.6
'@vue/shared': 3.4.0
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.0.2
/@vue/compiler-dom@3.3.13:
resolution: {integrity: sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==}
dependencies:
'@vue/compiler-core': 3.3.13
'@vue/shared': 3.3.13
dev: true
/@vue/compiler-dom@3.3.8:
resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==}
@ -2098,19 +2236,11 @@ packages:
'@vue/shared': 3.3.8
dev: true
/@vue/compiler-sfc@3.3.13:
resolution: {integrity: sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==}
/@vue/compiler-dom@3.4.0:
resolution: {integrity: sha512-E957uOhpoE48YjZGWeAoLmNYd3UeU4oIP8kJi8Rcsb9l2tV8Z48Jn07Zgq1aW0v3vuhlmydEKkKKbhLpADHXEA==}
dependencies:
'@babel/parser': 7.23.6
'@vue/compiler-core': 3.3.13
'@vue/compiler-dom': 3.3.13
'@vue/compiler-ssr': 3.3.13
'@vue/reactivity-transform': 3.3.13
'@vue/shared': 3.3.13
estree-walker: 2.0.2
magic-string: 0.30.5
postcss: 8.4.32
source-map-js: 1.0.2
'@vue/compiler-core': 3.4.0
'@vue/shared': 3.4.0
/@vue/compiler-sfc@3.3.8:
resolution: {integrity: sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA==}
@ -2127,11 +2257,18 @@ packages:
source-map-js: 1.0.2
dev: true
/@vue/compiler-ssr@3.3.13:
resolution: {integrity: sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==}
/@vue/compiler-sfc@3.4.0:
resolution: {integrity: sha512-PWE0mE2yW7bJS7PmaCrVDEG6KPaDJo0pb4AKnCxJ5lRRDO4IwL/fswBGhCpov+v/c+N/e+hQHpXNwvqU9BtUXg==}
dependencies:
'@vue/compiler-dom': 3.3.13
'@vue/shared': 3.3.13
'@babel/parser': 7.23.6
'@vue/compiler-core': 3.4.0
'@vue/compiler-dom': 3.4.0
'@vue/compiler-ssr': 3.4.0
'@vue/shared': 3.4.0
estree-walker: 2.0.2
magic-string: 0.30.5
postcss: 8.4.32
source-map-js: 1.0.2
/@vue/compiler-ssr@3.3.8:
resolution: {integrity: sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w==}
@ -2140,6 +2277,12 @@ packages:
'@vue/shared': 3.3.8
dev: true
/@vue/compiler-ssr@3.4.0:
resolution: {integrity: sha512-+oXKy105g9DIYQKDi3Gwung0xqQX5gJHr0GR+Vf7yK/WkNDM6q61ummcKmKAB85EIst8y3vj2PA9z9YU5Oc4DQ==}
dependencies:
'@vue/compiler-dom': 3.4.0
'@vue/shared': 3.4.0
/@vue/devtools-api@6.5.1:
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
@ -2197,15 +2340,6 @@ packages:
vue-template-compiler: 2.7.14
dev: true
/@vue/reactivity-transform@3.3.13:
resolution: {integrity: sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==}
dependencies:
'@babel/parser': 7.23.6
'@vue/compiler-core': 3.3.13
'@vue/shared': 3.3.13
estree-walker: 2.0.2
magic-string: 0.30.5
/@vue/reactivity-transform@3.3.8:
resolution: {integrity: sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw==}
dependencies:
@ -2216,46 +2350,50 @@ packages:
magic-string: 0.30.5
dev: true
/@vue/reactivity@3.3.13:
resolution: {integrity: sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==}
dependencies:
'@vue/shared': 3.3.13
/@vue/reactivity@3.3.8:
resolution: {integrity: sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw==}
dependencies:
'@vue/shared': 3.3.8
dev: true
/@vue/runtime-core@3.3.13:
resolution: {integrity: sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==}
/@vue/reactivity@3.4.0:
resolution: {integrity: sha512-X6BvQjNcgKKHWPQzlRJjZvIu72Kkn8xJSv6VNptqWh8dToMknD0Hch1l4N7llKgVt6Diq4lMeUnErbZFvuGlAA==}
dependencies:
'@vue/reactivity': 3.3.13
'@vue/shared': 3.3.13
'@vue/shared': 3.4.0
/@vue/runtime-dom@3.3.13:
resolution: {integrity: sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==}
/@vue/runtime-core@3.4.0:
resolution: {integrity: sha512-NYrj/JgMMqnSWcIud8lLzDQrBLu+EVEeQ56QE9DYJeKG2eFrnQy8o/h57R9nCprafHs0uImKL3xsdXjHseYVxw==}
dependencies:
'@vue/runtime-core': 3.3.13
'@vue/shared': 3.3.13
'@vue/reactivity': 3.4.0
'@vue/shared': 3.4.0
/@vue/runtime-dom@3.4.0:
resolution: {integrity: sha512-1ZoHEsA5l77qbx2F+SWo/hQdBksPuOmww1t/jznidDG+xMB/iidafEFvo2ZTtZii0JfTIrlDhjshfYUvQC17wQ==}
dependencies:
'@vue/runtime-core': 3.4.0
'@vue/shared': 3.4.0
csstype: 3.1.3
/@vue/server-renderer@3.3.13(vue@3.3.13):
resolution: {integrity: sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==}
/@vue/server-renderer@3.4.0(vue@3.4.0):
resolution: {integrity: sha512-GuOVCyLDlWPu8nKo5AUxb8B+iB/Ik4I1WwqAlBqf5+y48z6D6rvKshp7KR3cJea+pte1tdTsb0+Ja82KizMZOw==}
peerDependencies:
vue: 3.3.13
vue: 3.4.0
dependencies:
'@vue/compiler-ssr': 3.3.13
'@vue/shared': 3.3.13
vue: 3.3.13(typescript@5.2.2)
'@vue/compiler-ssr': 3.4.0
'@vue/shared': 3.4.0
vue: 3.4.0(typescript@5.2.2)
/@vue/shared@3.3.13:
resolution: {integrity: sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==}
dev: true
/@vue/shared@3.3.8:
resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==}
dev: true
/@vue/shared@3.4.0:
resolution: {integrity: sha512-Nhh3ed3G1R6HDAWiG6YYFt0Zmq/To6u5vjzwa9TIquGheCXPY6nEdIAO8ZdlwXsWqC2yNLj700FOvShpYt5CEA==}
/@vue/typescript@1.8.8(typescript@5.2.2):
resolution: {integrity: sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow==}
dependencies:
@ -2265,13 +2403,13 @@ packages:
- typescript
dev: true
/@vueuse/core@10.6.1(vue@3.3.13):
/@vueuse/core@10.6.1(vue@3.4.0):
resolution: {integrity: sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q==}
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.6.1
'@vueuse/shared': 10.6.1(vue@3.3.13)
vue-demi: 0.14.6(vue@3.3.13)
'@vueuse/shared': 10.6.1(vue@3.4.0)
vue-demi: 0.14.6(vue@3.4.0)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@ -2279,10 +2417,10 @@ packages:
/@vueuse/metadata@10.6.1:
resolution: {integrity: sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw==}
/@vueuse/shared@10.6.1(vue@3.3.13):
/@vueuse/shared@10.6.1(vue@3.4.0):
resolution: {integrity: sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q==}
dependencies:
vue-demi: 0.14.6(vue@3.3.13)
vue-demi: 0.14.6(vue@3.4.0)
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@ -2785,6 +2923,17 @@ packages:
update-browserslist-db: 1.0.11(browserslist@4.21.10)
dev: true
/browserslist@4.22.2:
resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001571
electron-to-chromium: 1.4.616
node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.22.2)
dev: true
/buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
dependencies:
@ -2863,6 +3012,10 @@ packages:
resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==}
dev: true
/caniuse-lite@1.0.30001571:
resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==}
dev: true
/canvas@2.11.2:
resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==}
engines: {node: '>=6'}
@ -3644,6 +3797,10 @@ packages:
resolution: {integrity: sha512-KGKjcafTpOxda0kqwQ72M0tDmX6RsGhUJTy0Hr7slt0+CgHh9Oex8JdjY9Og68dUkTLUlBOJC0A5W5Mw3QSGCg==}
dev: true
/electron-to-chromium@1.4.616:
resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==}
dev: true
/emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@ -3667,7 +3824,6 @@ packages:
/entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
dev: true
/error-ex@1.3.2:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
@ -5828,13 +5984,13 @@ packages:
minimatch: 3.1.2
dev: true
/naive-ui@2.36.0(vue@3.3.13):
/naive-ui@2.36.0(vue@3.4.0):
resolution: {integrity: sha512-r1ydtEm1Ryf/aWpbLCf32mQAGK99jd1eXgpkCtIomcBRZeAtusfy6zCtIpCppoCuIKM3BW5DMafhVxilubk/lQ==}
peerDependencies:
vue: ^3.0.0
dependencies:
'@css-render/plugin-bem': 0.15.12(css-render@0.15.12)
'@css-render/vue3-ssr': 0.15.12(vue@3.3.13)
'@css-render/vue3-ssr': 0.15.12(vue@3.4.0)
'@types/katex': 0.16.7
'@types/lodash': 4.14.202
'@types/lodash-es': 4.17.11
@ -5848,10 +6004,10 @@ packages:
lodash-es: 4.17.21
seemly: 0.3.8
treemate: 0.3.11
vdirs: 0.1.8(vue@3.3.13)
vooks: 0.2.12(vue@3.3.13)
vue: 3.3.13(typescript@5.2.2)
vueuc: 0.4.54(vue@3.3.13)
vdirs: 0.1.8(vue@3.4.0)
vooks: 0.2.12(vue@3.4.0)
vue: 3.4.0(typescript@5.2.2)
vueuc: 0.4.54(vue@3.4.0)
dev: false
/nan@2.17.0:
@ -5913,6 +6069,10 @@ packages:
resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
dev: true
/node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
dev: true
/nopt@5.0.0:
resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
engines: {node: '>=6'}
@ -6234,10 +6394,10 @@ packages:
peerDependencies:
pinia: ^2.0.0
dependencies:
pinia: 2.1.7(typescript@5.2.2)(vue@3.3.13)
pinia: 2.1.7(typescript@5.2.2)(vue@3.4.0)
dev: false
/pinia@2.1.7(typescript@5.2.2)(vue@3.3.13):
/pinia@2.1.7(typescript@5.2.2)(vue@3.4.0):
resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
peerDependencies:
'@vue/composition-api': ^1.4.0
@ -6251,8 +6411,8 @@ packages:
dependencies:
'@vue/devtools-api': 6.5.1
typescript: 5.2.2
vue: 3.3.13(typescript@5.2.2)
vue-demi: 0.14.6(vue@3.3.13)
vue: 3.4.0(typescript@5.2.2)
vue-demi: 0.14.6(vue@3.4.0)
dev: false
/pkg-types@1.0.3:
@ -7525,7 +7685,7 @@ packages:
dependencies:
'@antfu/utils': 0.7.6
'@rollup/pluginutils': 5.0.4
'@vueuse/core': 10.6.1(vue@3.3.13)
'@vueuse/core': 10.6.1(vue@3.4.0)
fast-glob: 3.3.1
local-pkg: 0.4.3
magic-string: 0.30.5
@ -7536,7 +7696,7 @@ packages:
- rollup
dev: true
/unplugin-vue-components@0.25.2(vue@3.3.13):
/unplugin-vue-components@0.25.2(vue@3.4.0):
resolution: {integrity: sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==}
engines: {node: '>=14'}
peerDependencies:
@ -7559,7 +7719,7 @@ packages:
minimatch: 9.0.3
resolve: 1.22.5
unplugin: 1.4.0
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
transitivePeerDependencies:
- rollup
- supports-color
@ -7598,6 +7758,17 @@ packages:
picocolors: 1.0.0
dev: true
/update-browserslist-db@1.0.13(browserslist@4.22.2):
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
browserslist: 4.22.2
escalade: 3.1.1
picocolors: 1.0.0
dev: true
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
@ -7639,13 +7810,13 @@ packages:
engines: {node: '>= 0.8'}
dev: true
/vdirs@0.1.8(vue@3.3.13):
/vdirs@0.1.8(vue@3.4.0):
resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
peerDependencies:
vue: ^3.0.11
dependencies:
evtd: 0.2.4
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
dev: false
/vite-plugin-cdn2@0.15.2:
@ -7828,16 +7999,16 @@ packages:
fsevents: 2.3.3
dev: true
/vooks@0.2.12(vue@3.3.13):
/vooks@0.2.12(vue@3.4.0):
resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
peerDependencies:
vue: ^3.0.0
dependencies:
evtd: 0.2.4
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
dev: false
/vue-demi@0.14.6(vue@3.3.13):
/vue-demi@0.14.6(vue@3.4.0):
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
engines: {node: '>=12'}
hasBin: true
@ -7849,7 +8020,7 @@ packages:
'@vue/composition-api':
optional: true
dependencies:
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
/vue-eslint-parser@9.3.1(eslint@8.52.0):
resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==}
@ -7869,7 +8040,7 @@ packages:
- supports-color
dev: true
/vue-hooks-plus@1.8.5(vue@3.3.13):
/vue-hooks-plus@1.8.5(vue@3.4.0):
resolution: {integrity: sha512-cIatTWz6QQcoSCDn7jadQ3zMr799FmNiHyb59yUvR7Ws5KDJ/KdIMHHx/b0XDKzbGhQ61kcJ78zJKAKhOV0pWw==}
peerDependencies:
vue: ^3.2.25
@ -7881,9 +8052,9 @@ packages:
qs: 6.11.2
query-string: 7.1.3
screenfull: 5.2.0
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
/vue-i18n@9.8.0(vue@3.3.13):
/vue-i18n@9.8.0(vue@3.4.0):
resolution: {integrity: sha512-Izho+6PYjejsTq2mzjcRdBZ5VLRQoSuuexvR8029h5CpN03FYqiqBrShMyf2I1DKkN6kw/xmujcbvC+4QybpsQ==}
engines: {node: '>= 16'}
peerDependencies:
@ -7892,15 +8063,15 @@ packages:
'@intlify/core-base': 9.8.0
'@intlify/shared': 9.8.0
'@vue/devtools-api': 6.5.1
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
/vue-router@4.2.5(vue@3.3.13):
/vue-router@4.2.5(vue@3.4.0):
resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
peerDependencies:
vue: ^3.2.0
dependencies:
'@vue/devtools-api': 6.5.1
vue: 3.3.13(typescript@5.2.2)
vue: 3.4.0(typescript@5.2.2)
dev: false
/vue-template-compiler@2.7.14:
@ -7922,34 +8093,34 @@ packages:
typescript: 5.2.2
dev: true
/vue@3.3.13(typescript@5.2.2):
resolution: {integrity: sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==}
/vue@3.4.0(typescript@5.2.2):
resolution: {integrity: sha512-iTE9Ve/7DO/H39+gXHrNkRdnh1jDwPe/fap4brbPKkp1APMkS03OiZ+UY0dwpqtRX0iPWQTkh8Fu3hKgLtaxfA==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
'@vue/compiler-dom': 3.3.13
'@vue/compiler-sfc': 3.3.13
'@vue/runtime-dom': 3.3.13
'@vue/server-renderer': 3.3.13(vue@3.3.13)
'@vue/shared': 3.3.13
'@vue/compiler-dom': 3.4.0
'@vue/compiler-sfc': 3.4.0
'@vue/runtime-dom': 3.4.0
'@vue/server-renderer': 3.4.0(vue@3.4.0)
'@vue/shared': 3.4.0
typescript: 5.2.2
/vueuc@0.4.54(vue@3.3.13):
/vueuc@0.4.54(vue@3.4.0):
resolution: {integrity: sha512-2LED7h1BSnCRPBI6AlSIf+1Yte1shN+Vb2gpspO5wHI7zWzbcq4bAu2f9nFh5yXIUKdzqmLvzRsOXDl4TrDyCw==}
peerDependencies:
vue: ^3.0.11
dependencies:
'@css-render/vue3-ssr': 0.15.12(vue@3.3.13)
'@css-render/vue3-ssr': 0.15.12(vue@3.4.0)
'@juggle/resize-observer': 3.4.0
css-render: 0.15.12
evtd: 0.2.4
seemly: 0.3.8
vdirs: 0.1.8(vue@3.3.13)
vooks: 0.2.12(vue@3.3.13)
vue: 3.3.13(typescript@5.2.2)
vdirs: 0.1.8(vue@3.4.0)
vooks: 0.2.12(vue@3.4.0)
vue: 3.4.0(typescript@5.2.2)
dev: false
/webidl-conversions@3.0.1:

View File

@ -1,6 +1,6 @@
import { request } from '@/axios'
import type { BasicResponse, PaginationResponse } from '@/types/modules/axios'
import type { PaginationResponse } from '@/types'
export interface MockListParams {
page: number

View File

@ -21,7 +21,7 @@
import { request } from '@/axios'
import type { BasicResponse } from '@/types/modules/axios'
import type { BasicResponse } from '@/types'
interface AxiosTestResponse extends UnknownObjectKey {
data: UnknownObjectKey[]

View File

@ -11,8 +11,8 @@
/** 系统配置 */
import type { LayoutSideBarLogo, PreloadingConfig } from '@/types/modules/cfg'
import type { AppMenuConfig, AppKeepAlive } from '@/types/modules/appConfig'
import type { LayoutSideBarLogo, PreloadingConfig } from '@/types'
import type { AppMenuConfig, AppKeepAlive } from '@/types'
/**
*

View File

@ -11,7 +11,7 @@
/** 系统颜色风格配置入口 */
import type { AppTheme } from '@/types/modules/cfg'
import type { AppTheme } from '@/types'
export const APP_THEME: AppTheme = {
/**

View File

@ -11,12 +11,8 @@
/** 国际化相关配置 */
import type {
TemplateLocale,
LocalOptions,
DayjsLocalMap,
} from '@/types/modules/appConfig'
import type { ValueOf } from '@/types/modules/helper'
import type { TemplateLocale, LocalOptions, DayjsLocalMap } from '@/types'
import type { ValueOf } from '@/types'
/**
*

View File

@ -9,7 +9,7 @@
* @remark
*/
import type { AxiosConfig } from '@/types/modules/appConfig'
import type { AxiosConfig } from '@/types'
/** axios 相关配置 */
export const AXIOS_CONFIG: AxiosConfig = {

View File

@ -32,7 +32,7 @@ import type {
AxiosFetchInstance,
AxiosFetchError,
} from '@/axios/type'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
/** 当前请求的实例 */
const axiosFetchInstance: AxiosFetchInstance = {

View File

@ -30,7 +30,7 @@ import type {
BeforeFetchFunction,
FetchErrorFunction,
} from '@/axios/type'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
/**
*

View File

@ -27,7 +27,7 @@ import type {
BeforeFetchFunction,
FetchErrorFunction,
} from '@/axios/type'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
/**
*

View File

@ -7,7 +7,7 @@ import type {
Axios,
AxiosResponse,
} from 'axios'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
export type AxiosHeaderValue =
| AxiosHeaders

View File

@ -49,7 +49,7 @@ import { RMoreDropdown } from '@/components'
import { useSettingGetters } from '@/store'
import type { WatchStopHandle } from 'vue'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
import type { DebouncedFunc } from 'lodash-es'
import type { UseResizeObserverReturn } from '@vueuse/core'
import type { ECharts, EChartsCoreOption } from 'echarts/core'
@ -124,9 +124,7 @@ export default defineComponent({
try {
echarts.use(props.use?.filter(Boolean))
} catch (e) {
console.error(
'register chart Core error: wrong property and method passed in extend attribute',
)
console.error('RChart register error: ', e)
}
}

View File

@ -1,6 +1,6 @@
import type * as echarts from 'echarts/core' // `echarts` 核心模块
import type { PropType, VNode } from 'vue'
import type { MaybeArray } from '@/types/modules/utils'
import type { MaybeArray } from '@/types'
import type {
LoadingOptions,
AutoResize,

View File

@ -2,7 +2,7 @@ import { gridProps } from 'naive-ui'
import type { PropType } from 'vue'
import type { CollapseToggleText } from './type'
import type { AnyFC, MaybeArray } from '@/types/modules/utils'
import type { AnyFC, MaybeArray } from '@/types'
const props = {
open: {

View File

@ -10,7 +10,7 @@
*/
import type { PropType } from 'vue'
import type { MaybeArray } from '@/types/modules/utils'
import type { MaybeArray } from '@/types'
const props = {
color: {

View File

@ -10,7 +10,7 @@
*/
import type { PropType } from 'vue'
import type { MaybeArray } from '@/types/modules/utils'
import type { MaybeArray } from '@/types'
import type { SpinProps } from 'naive-ui'
const props = {

View File

@ -32,6 +32,11 @@ export default defineComponent({
}))
const uuidEl = uuid()
let intractable: null | ReturnType<typeof interact>
// 记录拖拽的位置
const position = {
x: 0,
y: 0,
}
/**
*
@ -44,7 +49,16 @@ export default defineComponent({
const target = document.getElementById(uuidEl)
if (target) {
setupDraggable(target, props.preset).then((res) => {
setupDraggable(target, props.preset, {
scheduler: (event) => {
const target = event.target
position.x += event.dx
position.y += event.dy
target.style.transform = `translate(${position.x}px, ${position.y}px)`
},
}).then((res) => {
intractable = res
})
}
@ -60,6 +74,12 @@ export default defineComponent({
) {
nextTick(() => {
setupInteract()
const target = document.getElementById(uuidEl)
if (props.memoryPosition && target) {
target.style.transform = `translate(${position.x}px, ${position.y}px)`
}
})
} else {
intractable?.unset()

View File

@ -13,6 +13,16 @@ import { modalProps } from 'naive-ui'
const props = {
...modalProps,
memoryPosition: {
/**
*
*
*
* @default true
*/
type: Boolean,
default: true,
},
/**
*
*

View File

@ -1,6 +1,11 @@
import interact from 'interactjs'
import type { ModalProps } from 'naive-ui'
import type { AnyFC } from '@/types'
interface SetupDraggableOptions {
scheduler?: AnyFC
}
/**
*
@ -15,7 +20,10 @@ import type { ModalProps } from 'naive-ui'
export const setupDraggable = (
bindModal: HTMLElement,
preset: ModalProps['preset'],
options?: SetupDraggableOptions,
): Promise<ReturnType<typeof interact>> => {
const { scheduler } = options ?? {}
return new Promise((resolve) => {
setTimeout(() => {
const allowFromStr =
@ -35,16 +43,7 @@ export const setupDraggable = (
],
listeners: {
move: (event) => {
const target = event.target
const x =
(parseFloat(target.getAttribute('data-x')) || 0) + event.dx
const y =
(parseFloat(target.getAttribute('data-y')) || 0) + event.dy
target.style.transform = 'translate(' + x + 'px, ' + y + 'px)'
target.setAttribute('data-x', x)
target.setAttribute('data-y', y)
scheduler?.(event)
},
},
})

View File

@ -23,4 +23,8 @@
color: #ffffff;
}
}
& .n-spin-content--spinning img {
filter: blur(6px);
}
}

View File

@ -59,9 +59,6 @@ export default defineComponent({
const { expose } = ctx
const qrcodeURL = ref<QRCodeRenderResponse>()
const spinOverrides = {
opacitySpinning: '0.01',
}
let gifBuffer: GIFBuffer
let watchCallback!: WatchStopHandle
@ -153,7 +150,6 @@ export default defineComponent({
return {
qrcodeURL,
spinOverrides,
errorActionClick,
}
},
@ -162,7 +158,6 @@ export default defineComponent({
<div class="ray-qrcode">
<NSpin
show={this.status === 'loading'}
themeOverrides={this.spinOverrides}
description={this.loadingDescription}
>
<img src={this.qrcodeURL as string | undefined} />
@ -182,7 +177,7 @@ export default defineComponent({
this.$slots.errorAction()
) : (
<>
<NButton text>
<NButton text type="primary" color="#ffffff">
{{
default: () => this.errorActionDescription,
icon: () => (

View File

@ -11,7 +11,7 @@
import type { QRCodeStatus, QRCodeLevel } from './type'
import type { PropType, VNode } from 'vue'
import type { MaybeArray } from '@/types/modules/utils'
import type { MaybeArray } from '@/types'
import type { Options } from 'awesome-qr'
const props = {

View File

@ -22,7 +22,7 @@ import { call, renderNode, uuid } from '@/utils'
import config from './config'
import type { DropdownOption, DataTableInst } from 'naive-ui'
import type { ComponentSize } from '@/types/modules/component'
import type { ComponentSize } from '@/types'
import type { C as CType } from './type'
export default defineComponent({

View File

@ -27,8 +27,8 @@ import { call } from '@/utils'
import type { TreeOption, TreeDropInfo } from 'naive-ui'
import type { C } from '../type'
import type { AnyFC } from '@/types/modules/utils'
import type { MaybeArray } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
import type { MaybeArray } from '@/types'
type FixedClick = (type: 'left' | 'right', option: C, index: number) => void

View File

@ -16,8 +16,8 @@ import { call } from '@/utils'
import props from '../props'
import config from '../config'
import type { ComponentSize } from '@/types/modules/component'
import type { MaybeArray } from '@/types/modules/utils'
import type { ComponentSize } from '@/types'
import type { MaybeArray } from '@/types'
export default defineComponent({
name: 'TableSizeSelect',

View File

@ -12,10 +12,10 @@
import { dataTableProps } from 'naive-ui'
import type { PropType, VNode, VNodeChild } from 'vue'
import type { MaybeArray } from '@/types/modules/utils'
import type { MaybeArray } from '@/types'
import type { DropdownOption, DataTableColumn } from 'naive-ui'
import type { DownloadTableOptions, PrintTableOptions } from './type'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
const props = {
...dataTableProps,

View File

@ -8,7 +8,7 @@ import type {
DataTableBaseColumn,
} from 'naive-ui'
import type { VNode } from 'vue'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
import type { PrintDomOptions } from '@/utils'
export type TableActionIcon = string | (() => VNode)

View File

@ -18,7 +18,7 @@ import { debounce } from 'lodash-es'
import { useEventListener } from '@vueuse/core'
import type { DebounceBindingOptions } from './type'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
import type { DebouncedFunc } from 'lodash-es'
import type { CustomDirectiveFC } from '@/directives/type'

View File

@ -1,5 +1,5 @@
import type { DebounceSettings } from 'lodash-es'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
export interface DebounceBindingOptions {
func: AnyFC

View File

@ -18,7 +18,7 @@ import { throttle } from 'lodash-es'
import { useEventListener } from '@vueuse/core'
import type { ThrottleBindingOptions } from './type'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
import type { DebouncedFunc } from 'lodash-es'
import type { CustomDirectiveFC } from '@/directives/type'

View File

@ -1,5 +1,5 @@
import type { ThrottleSettings } from 'lodash-es'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
export interface ThrottleBindingOptions {
func: AnyFC

View File

@ -27,7 +27,7 @@
* createVariableState({ your state })
*/
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
/**
*

View File

@ -11,11 +11,10 @@
import { useEventListener, onClickOutside } from '@vueuse/core'
import type { BasicTarget } from '@/types/modules/vue'
import type { BasicTarget } from '@/types'
import type {
MaybeElementRef,
MaybeElement,
UseEventSourceOptions,
MaybeRefOrGetter,
} from '@vueuse/core'

View File

@ -11,7 +11,7 @@
import { useMenuGetters, useMenuActions } from '@/store'
import type { AppMenuOption } from '@/types/modules/app'
import type { AppMenuOption } from '@/types'
export type Target = number | AppMenuOption

View File

@ -12,7 +12,7 @@
import { useMenuGetters, useMenuActions } from '@/store'
import { redirectRouterToDashboard } from '@/router/helper/routerCopilot'
import type { MenuTagOptions, Key } from '@/types/modules/app'
import type { MenuTagOptions, Key } from '@/types'
export type CloseMenuTag = Key | MenuTagOptions

View File

@ -13,7 +13,7 @@ import domToImage from 'dom-to-image'
import { unrefElement } from '@/utils'
import type { Options as ReDomToImageOptions } from 'dom-to-image'
import type { BasicTarget, TargetType } from '@/types/modules/vue'
import type { BasicTarget, TargetType } from '@/types'
export type ImageType = keyof typeof domToImageMethods

View File

@ -12,7 +12,7 @@
import { unrefElement, effectDispose, isValueType } from '@/utils'
import { useWindowSize } from '@vueuse/core'
import type { BasicTarget } from '@/types/modules/vue'
import type { BasicTarget } from '@/types'
export interface UseElementFullscreenOptions {
beforeEnter?: () => void
@ -159,3 +159,7 @@ export const useElementFullscreen = (
toggleFullscreen,
}
}
export type UseElementFullscreenReturnTypes = ReturnType<
typeof useElementFullscreen
>

View File

@ -18,7 +18,7 @@ const getI18nKey = (namespace: string | undefined, key: string) => {
return key
}
if (key.startsWith(namespace)) {
if (key[0] === namespace) {
return key
}

View File

@ -2,7 +2,7 @@
import print from 'print-js'
import { unrefElement } from '@/utils'
import type { BasicTarget } from '@/types/modules/vue'
import type { BasicTarget } from '@/types'
export interface UsePrintOptions
extends Omit<print.Configuration, 'printable'> {}

View File

@ -20,8 +20,8 @@ import { getVariableToRefs, setVariable } from '@/global-variable'
import { useMenuGetters, useMenuActions } from '@/store'
import type { MenuInst } from 'naive-ui'
import type { NaiveMenuOptions } from '@/types/modules/component'
import type { AppMenuOption } from '@/types/modules/app'
import type { NaiveMenuOptions } from '@/types'
import type { AppMenuOption } from '@/types'
export default defineComponent({
name: 'AppMenu',

View File

@ -52,7 +52,7 @@ import { throttle } from 'lodash-es'
import { useAppRoot } from '@/hooks/template'
import type { ScrollbarInst } from 'naive-ui'
import type { MenuTagOptions, AppMenuOption } from '@/types/modules/app'
import type { MenuTagOptions, AppMenuOption } from '@/types'
export default defineComponent({
name: 'AppMenuTag',
@ -423,7 +423,7 @@ export default defineComponent({
}
},
render() {
const { iconConfig, getRootPath, uuidScrollBar } = this
const { iconConfig, getRootPath, uuidScrollBar, getMenuTagOptions } = this
const { maximize, closeCurrentMenuTag, scrollX, $t } = this
return (
@ -472,7 +472,7 @@ export default defineComponent({
align="center"
justify="start"
>
{this.getMenuTagOptions.map((curr, idx) => (
{getMenuTagOptions.map((curr, idx) => (
<NButton
key={curr.key}
class={['menu-tag__btn']}
@ -502,8 +502,7 @@ export default defineComponent({
},
}}
</span>
{(curr.closeable ||
this.getMenuTagOptions.length === 1) &&
{(curr.closeable || getMenuTagOptions.length === 1) &&
curr.key !== getRootPath ? (
<NIcon
class="menu-tag__btn-icon"

View File

@ -27,7 +27,7 @@ import { useMenuGetters, useMenuActions } from '@/store'
import { useDevice } from '@/hooks/web'
import type { DropdownOption } from 'naive-ui'
import type { AppMenuOption } from '@/types/modules/app'
import type { AppMenuOption } from '@/types'
export default defineComponent({
name: 'SiderBarBreadcrumb',

View File

@ -31,7 +31,7 @@ import { useDevice } from '@/hooks/web'
import { useEventListener } from '@vueuse/core'
import type { AppRouteMeta } from '@/router/type'
import type { AppMenuOption } from '@/types/modules/app'
import type { AppMenuOption } from '@/types'
export default defineComponent({
name: 'GlobalSearch',

View File

@ -27,7 +27,7 @@ import { APP_THEME } from '@/app-config/designConfig'
import { useSettingGetters, useSettingActions } from '@/store'
import type { PropType } from 'vue'
import type { Placement } from '@/types/modules/component'
import type { Placement } from '@/types'
const SettingDrawer = defineComponent({
name: 'SettingDrawer',

View File

@ -22,7 +22,7 @@ import { getStorage } from '@/utils'
import { SYSTEM_DEFAULT_LOCAL } from '@/app-config/localConfig'
import { APP_CATCH_KEY } from '@/app-config/appConfig'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
import type {
AppLocalesModules,
AppLocalesDropdownMixedOption,

View File

@ -4,7 +4,7 @@ import type {
DropdownDividerOption,
DropdownRenderOption,
} from 'naive-ui'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
export interface AppCurrentAppMessages {
'zh-CN': object

View File

@ -21,7 +21,8 @@ import { cloneDeep } from 'lodash-es'
import type { AppRouteRecordRaw } from '@/router/type'
const isRootPath = (path: string) => path.startsWith('/')
// 是否为根路由
const isRootPath = (path: string) => path[0] === '/'
/**
*
@ -41,31 +42,25 @@ const routePromotion = (
return []
}
const sourceArr = arr
for (const curr of arr) {
const newPath = path + (isRootPath(curr.path) ? curr.path : '/' + curr.path)
sourceArr.forEach((curr) => {
if (curr.children?.length) {
routePromotion(
curr.children,
result,
path + (isRootPath(curr.path) ? curr.path : '/' + curr.path),
)
} else {
const newPath =
path + (isRootPath(curr.path) ? curr.path : '/' + curr.path)
routePromotion(curr.children, result, newPath)
const newCurr: AppRouteRecordRaw = {
continue
} else {
result.push({
...curr,
path: newPath,
}
result.push(newCurr)
})
}
})
}
return result
}
// 获取所有已展开的路由
export const expandRoutes = (arr: AppRouteRecordRaw[]) => {
if (!Array.isArray(arr)) {
return []

View File

@ -18,7 +18,7 @@ import { useAppRoot } from '@/hooks/template'
import type { Router } from 'vue-router'
import type { AppRouteMeta } from '@/router/type'
import type { AppMenuOption } from '@/types/modules/app'
import type { AppMenuOption } from '@/types'
/**
*

View File

@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/ban-ts-comment */
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { RouteRecordRaw } from 'vue-router'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
import type { DefineComponent, VNode } from 'vue'
export type Component<T = any> =

View File

@ -79,7 +79,6 @@ export const useMenuGetters = () => {
export const useMenuActions = () => {
const {
changeMenuModelValue,
setupAppMenu,
collapsedMenu,
spliceMenTagOptions,
emptyMenuTagOptions,
@ -88,7 +87,6 @@ export const useMenuActions = () => {
return {
changeMenuModelValue,
setupAppMenu,
collapsedMenu,
spliceMenTagOptions,
emptyMenuTagOptions,

View File

@ -21,7 +21,7 @@
import { APP_KEEP_ALIVE } from '@/app-config/appConfig'
import type { KeepAliveStoreState } from './type'
import type { AppMenuOption } from '@/types/modules/app'
import type { AppMenuOption } from '@/types'
export const piniaKeepAliveStore = defineStore(
'keepAlive',

View File

@ -39,11 +39,7 @@ const isMatch = (
return false
}
if (node[key] === value) {
return true
}
return false
return node[key] === value
}
/**
@ -95,7 +91,7 @@ export const parseAndFindMatchingNodes = (
key: string | number,
value: string | number,
) => {
const temp = []
const temp: AppMenuOption[] = []
for (const it of options) {
const innerTemp = findMatchingNodes(it, key, value)

View File

@ -25,7 +25,7 @@
import { NEllipsis } from 'naive-ui'
import { setStorage } from '@/utils'
import { setStorage, pick } from '@/utils'
import { validRole, validMenuItemShow } from '@/router/helper/routerCopilot'
import {
parseAndFindMatchingNodes,
@ -35,18 +35,16 @@ import {
} from './helper'
import { useI18n } from '@/hooks/web'
import { getAppRawRoutes } from '@/router/appRouteModules'
import { throttle } from 'lodash-es'
import { useKeepAliveActions } from '@/store'
import type { AppRouteRecordRaw } from '@/router/type'
import type { AppMenuOption, MenuTagOptions } from '@/types/modules/app'
import type { AppMenuOption, MenuTagOptions } from '@/types'
import type { MenuState } from '@/store/modules/menu/type'
import type { LocationQuery } from 'vue-router'
export const piniaMenuStore = defineStore(
'menu',
() => {
const router = useRouter()
const { push, getRoutes } = useRouter()
const route = useRoute()
const { t } = useI18n()
const { setKeepAliveInclude } = useKeepAliveActions()
@ -86,8 +84,7 @@ export const piniaMenuStore = defineStore(
})
if (option.path === getCatchMenuKey()) {
/** 设置标签页(初始化时执行设置一次, 避免含有平级路由模式情况时出现不能正确设置标签页的情况) */
setMenuTagOptionsWhenMenuValueChange(option.path, attr)
menuState.currentMenuOption = attr
}
attr.show = validMenuItemShow(attr)
@ -121,21 +118,7 @@ export const piniaMenuStore = defineStore(
key: string | number,
option: AppMenuOption,
) => {
const { meta } = option as unknown as AppRouteRecordRaw
menuState.breadcrumbOptions = getCompleteRoutePath(menuState.options, key)
if (meta.sameLevel) {
nextTick().then(() => {
const fd = menuState.breadcrumbOptions.find((curr) => {
return curr.path === option.path
})
if (!fd) {
menuState.breadcrumbOptions.push(option as unknown as AppMenuOption)
}
})
}
}
/**
@ -204,46 +187,68 @@ export const piniaMenuStore = defineStore(
*
* , key key
*/
if (!String(key).startsWith('/')) {
if (String(key)[0] === '/') {
/** 根路由直接跳转 */
push({
path,
query,
})
} else {
/** 如果不是根路由, 则拼接完整路由并跳转 */
const _path = getCompleteRoutePath(menuState.options, key)
.map((curr) => curr.key)
.join('/')
router.push({
push({
path: _path,
query,
})
} else {
/** 根路由直接跳转 */
router.push({
path,
query,
})
}
/** 检查是否为根路由 */
const count = (path.match(isRootPathReg) || []).length
const { sameLevel } = meta
/** 更新缓存队列 */
setKeepAliveInclude(option as unknown as AppMenuOption)
setKeepAliveInclude(option)
/** 更新浏览器标题 */
updateDocumentTitle(option as unknown as AppMenuOption)
updateDocumentTitle(option)
if (!meta.sameLevel || (meta.sameLevel && count === 1)) {
// 如果不为 sameLevel则会执行更新覆盖更新面包屑、添加标签菜单、更新缓存
if (!sameLevel || (sameLevel && count === 1)) {
/** 更新标签菜单 */
setMenuTagOptionsWhenMenuValueChange(key, option)
/** 更新面包屑 */
setBreadcrumbOptions(key, option)
menuState.menuKey = key
menuState.currentMenuOption = option
/** 缓存菜单 key(sessionStorage) */
setStorage('menuKey', key)
} else {
setBreadcrumbOptions(menuState.menuKey || '', option)
}
// 使用 pick 提取仅需要的字段,避免 vue 抛错空引用,导致性能损耗
const breadcrumbOption = pick(resolveOption(option), [
'breadcrumbLabel',
'children',
'key',
'meta',
'name',
'path',
'show',
])
// 查看是否重复
const find = menuState.breadcrumbOptions.find(
(curr) => curr.key === breadcrumbOption.key,
)
menuState.currentMenuOption = option
// 如果未重复追加
if (!find) {
menuState.breadcrumbOptions.push(
breadcrumbOption as unknown as AppMenuOption,
)
}
}
}
}
@ -270,21 +275,22 @@ export const piniaMenuStore = defineStore(
combinePath = splitPath[splitPath.length - 1]
}
// 如果当前菜单 key 与路由地址相同,说明不是手动更新 url 则不会触发更新
if (combinePath === menuState.menuKey) {
return
}
const findMenuOption = router
.getRoutes()
.find((curr) =>
count > 1 ? path === curr.path : combinePath === curr.path,
)
// 直接使用完整 url检查是否在 routes 中
const findMenuOption = getRoutes().find((curr) => curr.path === routePath)
if (findMenuOption) {
// 使用 pick 提取仅需要的字段,避免 vue 抛错空引用,导致性能损耗
const pickOption = pick(findMenuOption, [
'children',
'meta',
'path',
'name',
'redirect',
]) as unknown as AppMenuOption
changeMenuModelValue(
count > 1 ? combinePath : path,
resolveOption(findMenuOption as unknown as AppMenuOption),
resolveOption(pickOption),
query,
)
}
@ -320,6 +326,17 @@ export const piniaMenuStore = defineStore(
0,
)
// 初始化后更新面包屑、标签菜单
if (menuState.currentMenuOption) {
const { currentMenuOption } = menuState
setBreadcrumbOptions(currentMenuOption.key, currentMenuOption)
setMenuTagOptionsWhenMenuValueChange(
currentMenuOption.key,
currentMenuOption,
)
}
resolve()
})
}
@ -384,8 +401,7 @@ export const piniaMenuStore = defineStore(
return {
...toRefs(menuState),
changeMenuModelValue: throttle(changeMenuModelValue, 500),
setupAppMenu,
changeMenuModelValue,
collapsedMenu,
spliceMenTagOptions,
emptyMenuTagOptions,

View File

@ -1,8 +1,4 @@
import type {
AppMenuOption,
MenuTagOptions,
AppMenuKey,
} from '@/types/modules/app'
import type { AppMenuOption, MenuTagOptions, AppMenuKey } from '@/types'
export interface MenuState {
menuKey: AppMenuKey

View File

@ -7,7 +7,7 @@ import { useDayjs } from '@/hooks/web'
import type { SettingState } from '@/store/modules/setting/type'
import type { LocalKey } from '@/hooks/web'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
export const piniaSettingStore = defineStore(
'setting',

View File

@ -1,5 +1,5 @@
import type { GlobalThemeOverrides } from 'naive-ui'
import type { Placement } from '@/types/modules/component'
import type { Placement } from '@/types'
export interface WatermarkConfig {
content: string

16
src/types/global.d.ts vendored
View File

@ -8,12 +8,28 @@ import type {
LoadingBarApi,
NotificationApi,
} from 'naive-ui'
import type { NativeElements, ReservedProps, VNode } from 'vue'
export declare global {
declare interface UnknownObjectKey {
[propName: string]: any
}
namespace JSX {
export interface Element extends VNode {}
export interface ElementClass {
$props: {}
}
export interface ElementAttributesProperty {
$props: {}
}
export interface IntrinsicElements extends NativeElements {
// allow arbitrary elements
[name: string]: any
}
export interface IntrinsicAttributes extends ReservedProps {}
}
declare const __DEV__: boolean
declare const __APP_CFG__: AppConfig

8
src/types/index.ts Normal file
View File

@ -0,0 +1,8 @@
export type * from './modules/app'
export type * from './modules/appConfig'
export type * from './modules/axios'
export type * from './modules/cfg'
export type * from './modules/component'
export type * from './modules/helper'
export type * from './modules/utils'
export type * from './modules/vue'

View File

@ -5,7 +5,7 @@ import type {
AliasOptions,
UserConfigExport,
} from 'vite'
import type { Recordable } from '@/types/modules/helper'
import type { Recordable } from '@/types'
import type { GlobalThemeOverrides } from 'naive-ui'
export interface LayoutSideBarLogo {

View File

@ -3,8 +3,8 @@ import type {
DownloadAnyFileDataType,
BasicTypes,
AnyFC,
} from '@/types/modules/utils'
import type { Recordable } from '@/types/modules/helper'
} from '@/types'
import type { Recordable } from '@/types'
/**
*

View File

@ -9,7 +9,7 @@
* @remark
*/
import type { StorageLike, RemoveStorageKey } from '@/types/modules/utils'
import type { StorageLike, RemoveStorageKey } from '@/types'
/**
*

View File

@ -4,7 +4,7 @@
// import MD5 from 'crypto-js/md5'
// import BASE64 from 'crypto-js/enc-base64'
// import type { WordArray, CipherParams } from '@/types/modules/utils'
// import type { WordArray, CipherParams } from '@/types'
/**
*

View File

@ -13,7 +13,7 @@ import { omit } from './basic'
import { useDomToImage, usePrint } from '@/hooks/web'
import type { UsePrintOptions, UseDomToImageOptions } from '@/hooks/web'
import type { BasicTarget } from '@/types/modules/vue'
import type { BasicTarget } from '@/types'
export interface PrintDomOptions {
printOptions?: Omit<UsePrintOptions, 'printable' | 'type' | 'base64'>

View File

@ -1,11 +1,8 @@
import { APP_REGEX } from '@/app-config/regexConfig'
import { effectDispose, unrefElement, isValueType } from '@/utils'
import type {
PartialCSSStyleDeclaration,
ElementSelector,
} from '@/types/modules/utils'
import type { BasicTarget } from '@/types/modules/vue'
import type { PartialCSSStyleDeclaration, ElementSelector } from '@/types'
import type { BasicTarget } from '@/types'
/**
*

View File

@ -32,7 +32,7 @@ import { cloneDeep } from 'lodash-es'
import { isValueType } from '@/utils'
import type { Options } from 'currency.js'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
export type CurrencyArguments = string | number | currency

View File

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { AnyFC, MaybeArray } from '@/types/modules/utils'
import type { AnyFC, MaybeArray } from '@/types'
function call(funcs: MaybeArray<() => void>): void

View File

@ -11,7 +11,7 @@
import { getCurrentScope, onScopeDispose } from 'vue'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
/**
*

View File

@ -9,7 +9,7 @@
* @remark
*/
import type { BasicTarget, TargetType, TargetValue } from '@/types/modules/vue'
import type { BasicTarget, TargetType, TargetValue } from '@/types'
import type { ComponentPublicInstance } from 'vue'
/**

View File

@ -12,7 +12,7 @@
import { effectDispose } from './effectDispose'
import type { WatchOptionsBase } from 'vue'
import type { AnyFC } from '@/types/modules/utils'
import type { AnyFC } from '@/types'
/**
*

View File

@ -20,7 +20,7 @@ import {
NFormItem,
} from 'naive-ui'
import type { ConditionalPick } from '@/types/modules/helper'
import type { ConditionalPick } from '@/types'
import type {
DebounceBindingOptions,
ThrottleBindingOptions,

View File

@ -28,6 +28,16 @@ export default defineComponent({
render() {
return (
<NSpace vertical wrapItem={false}>
<NCard title="props">
<NSpace vertical>
<h3>
memoryPosition: 是否记住上一次被拖拽的位置
true
</h3>
<h3>fullscreen: 全屏模态框</h3>
<h3>dad: 启用拖拽 false </h3>
</NSpace>
</NCard>
<RModal
v-model:show={this.modal1}
title="全屏模态框"

View File

@ -58,7 +58,7 @@ export default defineComponent({
logoImage={LOGO}
status="error"
onReload={() => {
window.$message.error('relod props')
window.$message.info('reload event')
}}
/>
<RQRCode

View File

@ -69,7 +69,7 @@ const RouterDemoHome = defineComponent({
for (let i = 0; i < 10; i++) {
dataSource.push({
name: '张三',
name: '张三' + i,
address: 'New York No. 1 Lake Park',
phone: '010-121212',
key: i,

View File

@ -12,6 +12,7 @@
"esModuleInterop": true,
"lib": ["ESNext", "DOM", "es5", "es6", "dom.iterable", "es2022"],
"skipLibCheck": true,
"jsxImportSource": "vue",
"baseUrl": "./",
"rootDir": "./",
"paths": {

View File

@ -5,7 +5,7 @@ import pkg from './package.json'
import vitePlugins from './vite.plugin.config'
// https://vitejs.dev/config/
export default defineConfig(async ({ mode }) => {
export default defineConfig(({ mode }) => {
const { dependencies, devDependencies, name, version } = pkg
const {
server,