完成自动保存和手动保存

This commit is contained in:
锦恢 2024-10-21 01:54:14 +08:00
parent 419906f49e
commit 5c9b11f76f
21 changed files with 1407 additions and 63 deletions

871
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -11,6 +11,7 @@
"axios": "^1.7.7",
"bson": "^6.8.0",
"core-js": "^3.8.3",
"crypto": "^1.0.1",
"element-plus": "^2.6.3",
"lodash.get": "^4.4.2",
"mitt": "^3.0.1",
@ -26,6 +27,7 @@
"@babel/core": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"crypto-browserify": "^3.12.0",
"ignore-loader": "^0.1.2",
"unplugin-auto-import": "^0.17.5",
"unplugin-vue-components": "^0.26.0"

View File

@ -1,6 +1,6 @@
@font-face {
font-family: "iconfont"; /* Project id 4440655 */
src: url('iconfont.woff2?t=1729428865198') format('woff2');
src: url('iconfont.woff2?t=1729445186153') format('woff2');
}
.iconfont {
@ -11,6 +11,10 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-gou:before {
content: "\e84b";
}
.icon-menu:before {
content: "\e607";
}

Binary file not shown.

Binary file not shown.

View File

@ -3,7 +3,7 @@ console.log('digital-vcd-viewer mode: ' + mode);
let vscode = window.acquireVsCodeApi === undefined ? undefined : acquireVsCodeApi();
import { globalLookup } from '@/hook/global';
import { globalLookup, globalSetting } from '@/hook/global';
import { makeSaveViewPayload } from '@/hook/recover';
import axios from 'axios';
@ -40,6 +40,9 @@ function debounceSaveView(delay) {
let timer;
const configPool = {};
return function (config) {
if (!globalSetting.autoSaveView) {
return;
}
// 记录所有的 payload tag
Object.assign(configPool, config);

View File

@ -62,7 +62,7 @@ emitter.on('right-nav', index => {
position: fixed;
top: 0;
right: 0;
z-index: 60;
z-index: 230;
}
.vcd-function-panel {

View File

@ -0,0 +1,26 @@
<template>
<div>
<div class="status">
<span :class="{'iconfont icon-gou': globalSetting.autoSaveView }"></span>
</div>
<div class="item"
@click="globalSetting.autoSaveView = !globalSetting.autoSaveView"
>
<span>{{ t('filemenu.auto-save') }}</span>
<span></span>
</div>
</div>
</template>
<script setup>
import { globalSetting } from '@/hook/global';
import { defineComponent } from 'vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
defineComponent({ name: 'auto-save-view' });
</script>

View File

@ -1,50 +1,104 @@
<template>
<div class="file-menu">
<div>
<div class="file-menu" :style="btnStyle">
<div
class="btn"
@click.stop="fileMenuContext.show = !fileMenuContext.show"
>
<span class="iconfont icon-menu"></span>
</div>
<!-- 菜单列表 -->
<transition name="collapse-from-top" mode="out-in">
<div class="list" v-show="fileMenuContext.show">
<Save></Save>
<SaveAs></SaveAs>
<SaveView></SaveView>
<SaveAsView></SaveAsView>
<LoadView></LoadView>
<AutoSaveView></AutoSaveView>
</div>
</transition>
</div>
</template>
<script setup>
import { defineComponent } from 'vue';
import { computed, defineComponent } from 'vue';
import { fileMenuContext } from './control';
import Save from './save.vue';
import SaveAs from './save-as.vue';
import SaveView from './save-view.vue';
import SaveAsView from './save-as-view.vue';
import AutoSaveView from './auto-save-view.vue';
import LoadView from './load-view.vue';
defineComponent({ name: 'file-menu' });
const btnStyle = computed(() => ({
borderRadius: fileMenuContext.show ? '99em': '.5em'
}));
</script>
<style>
:root {
--menu-btn-width: calc(var(--toolbar-item-height) + 3px);
}
.file-menu {
height: var(--toolbar-item-height);
width: var(--toolbar-item-height);
border-radius: .5em;
cursor: pointer;
height: var(--menu-btn-width);
width: var(--menu-btn-width);
background-color: var(--sidebar);
position: relative;
}
/* 这是按钮主体的 css */
.file-menu .btn {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
width: 100%;
cursor: pointer;
}
.file-menu .list {
position: absolute;
top: 10px;
left: 0;
top: calc(var(--menu-btn-width) + 10px);
left: 5px;
border-radius: .5em;
box-shadow: 0 0 10px 1px rgb(16, 16, 16);
background-color: var(--sidebar);
border: solid 1px var(--sidebar-border);
z-index: 200;
display: flex;
flex-direction: column;
padding: 10px 7px;
font-size: .75rem;
}
.file-menu .list .item {
margin: 2.5px;
padding: 4px;
width: 230px;
display: flex;
border-radius: .5em;
justify-content: space-between;
cursor: pointer;
transition: var(--animation-3s);
}
.file-menu .list > div {
display: flex;
align-items: center;
}
.file-menu .list .item:hover {
background-color: var(--sidebar-item-selected);
transition: var(--animation-3s);
}
.file-menu .list .status {
display: flex;
align-items: center;
font-size: 1.1rem;
width: 17px;
}
</style>

View File

@ -0,0 +1,19 @@
<template>
<div>
<div class="status"></div>
<div class="item">
<span>{{ t('filemenu.load-view') }}</span>
<span><code>Ctrl+K</code></span>
</div>
</div>
</template>
<script setup>
import { defineComponent } from 'vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
defineComponent({ name: 'load-view' });
</script>

View File

@ -0,0 +1,20 @@
<template>
<div>
<div class="status"></div>
<div class="item">
<span>{{ t('filemenu.save-as-view') }}</span>
<span><code>Shift+Ctrl+S</code></span>
</div>
</div>
</template>
<script setup>
import { defineComponent } from 'vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
defineComponent({ name: 'save-as-view' });
</script>

View File

@ -1,13 +0,0 @@
<template>
<div>
<div>save as</div>
</div>
</template>
<script setup>
import { defineComponent } from 'vue';
defineComponent({ name: 'save-as' });
</script>

View File

@ -0,0 +1,38 @@
<template>
<div>
<div class="status"></div>
<div class="item" @click="manualSaveView()">
<span>{{ t('filemenu.save-view') }}</span>
<span><code>Ctrl+S</code></span>
</div>
</div>
</template>
<script setup>
import { saveView } from '@/api';
import { globalLookup } from '@/hook/global';
import { makeSaveViewPayload } from '@/hook/recover';
import { defineComponent } from 'vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
defineComponent({ name: 'save-view' });
function manualSaveView() {
const payload = makeSaveViewPayload({ all: true });
const savePath = globalLookup.originVcdViewFile;
saveView(savePath, payload);
}
document.addEventListener('keydown', (event) => {
if (event.ctrlKey && event.key === 's') {
event.preventDefault();
manualSaveView();
}
})
</script>

View File

@ -1,13 +0,0 @@
<template>
<div>
<div>save</div>
</div>
</template>
<script setup>
import { defineComponent } from 'vue';
defineComponent({ name: 'save' });
</script>

View File

@ -2,6 +2,7 @@
<div
class="toolbar-container"
@mouseenter="onEnter()"
@click="toolBarClick()"
>
<div class="toolbar-body">
<FileMenu></FileMenu>
@ -28,6 +29,7 @@ import ValueSearch from './value-search.vue';
import FileMenu from './file-menu';
import { MovingPivot } from '../pivot/cursor';
import { fileMenuContext } from './file-menu/control';
defineComponent({ name: 'toolbar' });
@ -36,6 +38,10 @@ function onEnter() {
MovingPivot.show = false;
}
function toolBarClick() {
fileMenuContext.show = false;
}
</script>
<style>
@ -44,16 +50,18 @@ function onEnter() {
top: 0;
left: 0;
width: 100%;
min-width: 1000px;
height: var(--toolbar-height);
user-select: none;
background-color: var(--background);
z-index: 60;
z-index: 220;
}
.toolbar-body {
display: flex;
height: 100%;
align-items: top;
padding-left: 20px;
padding-left: 7px;
padding-top: 8px;
}
</style>

View File

@ -194,6 +194,7 @@ export const globalSetting = reactive({
minGridWidth: 300,
prerender: false,
renderAnimation: false,
autoSaveView: true
});
function loadSetting() {

View File

@ -231,14 +231,7 @@ export function recoverSession(topModules) {
recoverConfig.rightNavIndex = null;
// 更新后端缓存
saveViewApi({
waves: true,
views: true,
state: true,
pivots: true,
treeviewExpands: true,
rightNavIndex: true
});
saveViewApi({all: true});
}
/**
@ -330,6 +323,7 @@ function stableClone(obj) {
* @property {boolean} pivots
* @property {boolean} treeviewExpands
* @property {boolean} rightNavIndex
* @property {boolean} all
*/
@ -360,8 +354,10 @@ export function makeSaveViewPayload(config) {
const payload = {};
config = config || {};
const all = defaultFalseWrapper(config, 'all');
// 波形 profile
if (defaultFalseWrapper(config, 'waves')) {
if (all || defaultFalseWrapper(config, 'waves')) {
// 有 waves 也一定要有 views
config.views = true;
@ -377,7 +373,7 @@ export function makeSaveViewPayload(config) {
// 视图列表
if (defaultFalseWrapper(config, 'views')) {
if (all || defaultFalseWrapper(config, 'views')) {
const views = [];
for (const view of globalLookup.currentWiresRenderView) {
// link 转换成 names
@ -399,14 +395,14 @@ export function makeSaveViewPayload(config) {
// 窗口状态
if (defaultFalseWrapper(config, 'state')) {
if (all || defaultFalseWrapper(config, 'state')) {
const state = globalLookup.pstate;
Object.assign(payload, { state });
}
// 信标相关
if (defaultFalseWrapper(config, 'pivots')) {
if (all || defaultFalseWrapper(config, 'pivots')) {
const pivots = [];
for (const pivot of UserPivots.values()) {
pivots.push(pivot);
@ -416,7 +412,7 @@ export function makeSaveViewPayload(config) {
// 右侧信号展开信息
if (defaultFalseWrapper(config, 'treeviewExpands')) {
if (all || defaultFalseWrapper(config, 'treeviewExpands')) {
const treeviewExpands = [];
for (const signal of TreeviewExpandSignals) {
treeviewExpands.push(signal.nameClass);
@ -426,7 +422,7 @@ export function makeSaveViewPayload(config) {
// 右侧控制面板打开序号
if (defaultFalseWrapper(config, 'rightNavIndex')) {
if (all || defaultFalseWrapper(config, 'rightNavIndex')) {
const rightNavIndex = controlPanel.currentIndex;
Object.assign(payload, { rightNavIndex });
}

View File

@ -116,6 +116,11 @@
"confirm": "confirm",
"cancel": "cancel",
"tips": "Tips",
"filemenu.save-view": "保存视图文件",
"filemenu.save-as-view": "另存为视图文件",
"filemenu.load-view": "导入视图文件",
"filemenu.auto-save": "自动保存",
"current-version": "current version",
"copyright": "The copyright of this software belongs to <a href=\"https://github.com/Digital-EDA\" target=\"_blank\">Digital-IDE</a> project team. Welcome to <a href=\"https://github.com/Digital-EDA/Digital-IDE\">Star</a>."

View File

@ -115,6 +115,11 @@
"cancel": "取消",
"tips": "提示",
"filemenu.save-view": "保存视图文件",
"filemenu.save-as-view": "另存为视图文件",
"filemenu.load-view": "导入视图文件",
"filemenu.auto-save": "自动保存",
"current-version": "当前版本",
"copyright": "本软件版权归 <a href=\"https://github.com/Digital-EDA\" target=\"_blank\">Digital-IDE</a> 项目组所有,欢迎 <a href=\"https://github.com/Digital-EDA/Digital-IDE\">Star</a>。"
}

View File

@ -16,5 +16,10 @@ module.exports = {
loader: [
{ test: /\.vcd$/, loader: 'ignore-loader' }
]
}
},
resolve: {
fallback: {
"crypto": require.resolve('crypto-browserify')
}
},
};

319
yarn.lock
View File

@ -2105,6 +2105,15 @@ array-union@^2.1.0:
resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
asn1.js@^4.10.1:
version "4.10.1"
resolved "https://registry.npmmirror.com/asn1.js/-/asn1.js-4.10.1.tgz"
integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
dependencies:
bn.js "^4.0.0"
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
async-validator@^4.2.5:
version "4.2.5"
resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz"
@ -2228,6 +2237,26 @@ bluebird@^3.1.1:
resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
bn.js@^4.0.0:
version "4.12.0"
resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
bn.js@^4.1.0:
version "4.12.0"
resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
bn.js@^4.11.9:
version "4.12.0"
resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
bn.js@^5.2.1:
version "5.2.1"
resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz"
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
body-parser@1.20.3:
version "1.20.3"
resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz"
@ -2281,6 +2310,67 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz"
integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
browserify-aes@^1.0.4, browserify-aes@^1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz"
integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
dependencies:
buffer-xor "^1.0.3"
cipher-base "^1.0.0"
create-hash "^1.1.0"
evp_bytestokey "^1.0.3"
inherits "^2.0.1"
safe-buffer "^5.0.1"
browserify-cipher@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz"
integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
dependencies:
browserify-aes "^1.0.4"
browserify-des "^1.0.0"
evp_bytestokey "^1.0.0"
browserify-des@^1.0.0:
version "1.0.2"
resolved "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz"
integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
dependencies:
cipher-base "^1.0.1"
des.js "^1.0.0"
inherits "^2.0.1"
safe-buffer "^5.1.2"
browserify-rsa@^4.0.0, browserify-rsa@^4.1.0:
version "4.1.1"
resolved "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz"
integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==
dependencies:
bn.js "^5.2.1"
randombytes "^2.1.0"
safe-buffer "^5.2.1"
browserify-sign@^4.0.0:
version "4.2.3"
resolved "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.3.tgz"
integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==
dependencies:
bn.js "^5.2.1"
browserify-rsa "^4.1.0"
create-hash "^1.2.0"
create-hmac "^1.1.7"
elliptic "^6.5.5"
hash-base "~3.0"
inherits "^2.0.4"
parse-asn1 "^5.1.7"
readable-stream "^2.3.8"
safe-buffer "^5.2.1"
browserslist@^4.0.0, browserslist@^4.16.3, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.22.3, "browserslist@>= 4.21.0":
version "4.23.0"
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.0.tgz"
@ -2301,6 +2391,11 @@ buffer-from@^1.0.0:
resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
buffer-xor@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz"
integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz"
@ -2434,6 +2529,14 @@ chrome-trace-event@^1.0.2:
resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz"
integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz"
integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
dependencies:
inherits "^2.0.1"
safe-buffer "^5.0.1"
clean-css@^5.2.2:
version "5.3.3"
resolved "https://registry.npmmirror.com/clean-css/-/clean-css-5.3.3.tgz"
@ -2669,6 +2772,37 @@ cosmiconfig@^7.0.0:
path-type "^4.0.0"
yaml "^1.10.0"
create-ecdh@^4.0.0:
version "4.0.4"
resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz"
integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
dependencies:
bn.js "^4.1.0"
elliptic "^6.5.3"
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz"
integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
dependencies:
cipher-base "^1.0.1"
inherits "^2.0.1"
md5.js "^1.3.4"
ripemd160 "^2.0.1"
sha.js "^2.4.0"
create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
version "1.1.7"
resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz"
integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
dependencies:
cipher-base "^1.0.3"
create-hash "^1.1.0"
inherits "^2.0.1"
ripemd160 "^2.0.0"
safe-buffer "^5.0.1"
sha.js "^2.4.8"
cross-spawn@^6.0.0:
version "6.0.5"
resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz"
@ -2689,6 +2823,28 @@ cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
crypto-browserify@^3.12.0:
version "3.12.0"
resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz"
integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
dependencies:
browserify-cipher "^1.0.0"
browserify-sign "^4.0.0"
create-ecdh "^4.0.0"
create-hash "^1.1.0"
create-hmac "^1.1.0"
diffie-hellman "^5.0.0"
inherits "^2.0.1"
pbkdf2 "^3.0.3"
public-encrypt "^4.0.0"
randombytes "^2.0.0"
randomfill "^1.0.3"
crypto@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz"
integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==
css-declaration-sorter@^6.3.1:
version "6.4.1"
resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz"
@ -2898,6 +3054,14 @@ depd@2.0.0:
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
des.js@^1.0.0:
version "1.1.0"
resolved "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz"
integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==
dependencies:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
destroy@1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
@ -2908,6 +3072,15 @@ detect-node@^2.0.4:
resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz"
integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
diffie-hellman@^5.0.0:
version "5.0.3"
resolved "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz"
integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
dependencies:
bn.js "^4.1.0"
miller-rabin "^4.0.0"
randombytes "^2.0.0"
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz"
@ -3018,6 +3191,19 @@ element-plus@^2.6.3:
memoize-one "^6.0.0"
normalize-wheel-es "^1.2.0"
elliptic@^6.5.3, elliptic@^6.5.5:
version "6.5.7"
resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.7.tgz"
integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==
dependencies:
bn.js "^4.11.9"
brorand "^1.1.0"
hash.js "^1.0.0"
hmac-drbg "^1.0.1"
inherits "^2.0.4"
minimalistic-assert "^1.0.1"
minimalistic-crypto-utils "^1.0.1"
emitter-component@^1.1.1:
version "1.1.2"
resolved "https://registry.npmmirror.com/emitter-component/-/emitter-component-1.1.2.tgz"
@ -3186,6 +3372,14 @@ events@^3.2.0:
resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz"
integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
dependencies:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz"
@ -3528,6 +3722,14 @@ has-symbols@^1.0.3:
resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
hash-base@^3.0.0, hash-base@~3.0:
version "3.0.4"
resolved "https://registry.npmmirror.com/hash-base/-/hash-base-3.0.4.tgz"
integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==
dependencies:
inherits "^2.0.1"
safe-buffer "^5.0.1"
hash-sum@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz"
@ -3538,6 +3740,14 @@ hash-sum@^2.0.0:
resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz"
integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
hash.js@^1.0.0, hash.js@^1.0.3:
version "1.1.7"
resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz"
integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
dependencies:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
hasown@^2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.1.tgz"
@ -3555,6 +3765,15 @@ highlight.js@^10.7.1:
resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz"
integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
hmac-drbg@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz"
integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
dependencies:
hash.js "^1.0.3"
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
@ -4139,6 +4358,15 @@ make-dir@^3.0.2, make-dir@^3.1.0:
dependencies:
semver "^6.0.0"
md5.js@^1.3.4:
version "1.3.5"
resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz"
integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
dependencies:
hash-base "^3.0.0"
inherits "^2.0.1"
safe-buffer "^5.1.2"
mdn-data@2.0.14:
version "2.0.14"
resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz"
@ -4196,6 +4424,14 @@ micromatch@^4.0.2, micromatch@^4.0.4:
braces "^3.0.3"
picomatch "^2.3.1"
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz"
integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
dependencies:
bn.js "^4.0.0"
brorand "^1.0.1"
"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
@ -4231,11 +4467,16 @@ mini-css-extract-plugin@^2.5.3:
schema-utils "^4.0.0"
tapable "^2.2.1"
minimalistic-assert@^1.0.0:
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"
integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz"
@ -4568,6 +4809,18 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
parse-asn1@^5.0.0, parse-asn1@^5.1.7:
version "5.1.7"
resolved "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.7.tgz"
integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==
dependencies:
asn1.js "^4.10.1"
browserify-aes "^1.2.0"
evp_bytestokey "^1.0.3"
hash-base "~3.0"
pbkdf2 "^3.1.2"
safe-buffer "^5.2.1"
parse-json@^5.0.0:
version "5.2.0"
resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz"
@ -4648,6 +4901,17 @@ pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2:
resolved "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz"
integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
pbkdf2@^3.0.3, pbkdf2@^3.1.2:
version "3.1.2"
resolved "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz"
integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
dependencies:
create-hash "^1.1.2"
create-hmac "^1.1.4"
ripemd160 "^2.0.1"
safe-buffer "^5.0.1"
sha.js "^2.4.8"
picocolors@^0.2.1:
version "0.2.1"
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz"
@ -4997,6 +5261,18 @@ pseudomap@^1.0.2:
resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz"
integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
public-encrypt@^4.0.0:
version "4.0.3"
resolved "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz"
integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
dependencies:
bn.js "^4.1.0"
browserify-rsa "^4.0.0"
create-hash "^1.1.0"
parse-asn1 "^5.0.0"
randombytes "^2.0.1"
safe-buffer "^5.1.2"
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz"
@ -5022,13 +5298,21 @@ queue-microtask@^1.2.2:
resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
randombytes@^2.1.0:
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz"
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
dependencies:
safe-buffer "^5.1.0"
randomfill@^1.0.3:
version "1.0.4"
resolved "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz"
integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
dependencies:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz"
@ -5076,6 +5360,19 @@ readable-stream@^2.0.1:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^2.3.8:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.0.6, readable-stream@^3.4.0:
version "3.6.2"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz"
@ -5213,6 +5510,14 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.2"
resolved "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz"
integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
dependencies:
hash-base "^3.0.0"
inherits "^2.0.1"
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz"
@ -5220,7 +5525,7 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
version "5.2.1"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@ -5416,6 +5721,14 @@ setprototypeof@1.2.0:
resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
resolved "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz"
integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
dependencies:
inherits "^2.0.1"
safe-buffer "^5.0.1"
shallow-clone@^3.0.0:
version "3.0.1"
resolved "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz"