Compare commits

...

23 Commits

Author SHA1 Message Date
muwoo
2cdfcbbbae 🚑 修复颜色问题导致的下载按钮不可点击 2023-08-01 16:39:51 +08:00
muwoo
eef24dbb76 🐛 fix #210 2023-08-01 14:58:42 +08:00
muwoo
7a96bf395a 💄 detach 窗口样式修复 2023-08-01 12:14:52 +08:00
muwoo
676c2b9c6a 🐛 fix #212 2023-08-01 11:41:43 +08:00
muwoo
6516042809 🐛 修复 #212 2023-08-01 11:41:18 +08:00
muwoo
f72ae23691 🐛 fix #212 2023-07-31 18:09:33 +08:00
muwoo
5946e06693 🐛 fix #212 2023-07-31 17:45:22 +08:00
muwoo
cc6098258c Merge branch 'master' of github.com:rubickCenter/rubick 2023-07-19 09:44:07 +08:00
muwoo
47bada5c01 增加用户体系 2023-07-19 09:43:48 +08:00
木偶
e236ee15b2 Merge pull request #199 from du00cs/du00cs-patch-1
Update README.md
2023-07-03 10:26:26 +08:00
Ninglin Du
6dcec6cede Update README.md 2023-07-02 01:58:58 +08:00
muwoo
ca6629988a 💚 修复 ci 构建问题
git push
2023-06-26 15:07:29 +08:00
muwoo
40c92dbd99 💚 修复macos electron-builder 构建问题:https://github.com/nklayman/vue-cli-plugin-electron-builder/issues/1701 2023-06-26 14:44:48 +08:00
muwoo
a827438dbe 🐛 fix #185 2023-06-26 10:18:06 +08:00
layyback
e2ea081d25 init mac codesign 2023-06-25 14:21:18 +08:00
璃白
46eeb8d320 Merge pull request #195 from rubickCenter/feature/update
🔨 resolve packages
2023-06-24 23:26:45 +08:00
layyback
16e8d90141 🔨 resolve packages 2023-06-24 23:26:01 +08:00
璃白
867a7b1fec Merge pull request #194 from rubickCenter/feature/update
 add windows auto-update feature
2023-06-24 23:03:39 +08:00
layyback
d7d7e1423e 📝 add release notes 2023-06-24 23:01:56 +08:00
layyback
1fc3d00f9c 📝 add release notes 2023-06-24 22:57:38 +08:00
layyback
6ea706127d add windows auto-update feature 2023-06-24 22:49:22 +08:00
木偶
53ec3a8bb2 Merge pull request #193 from 1129921824/master
优化-全局快捷键优化及提示信息更正错别字
2023-06-24 15:04:13 +08:00
sunyuqiang
7802d359c4 优化-全局快捷键优化及提示信息更正错别字 2023-06-24 11:35:03 +08:00
68 changed files with 1175 additions and 320 deletions

View File

@@ -1,7 +1,7 @@
<template>
<div :class="[platform, 'detach']">
<div class="info">
<img :src="plugInfo.logo" />
<img :src="plugInfo.logo"/>
<input
autofocus
@input="changeValue"
@@ -11,17 +11,25 @@
/>
<span v-else>{{ plugInfo.pluginName }}</span>
</div>
<div class="handle">
<div class="devtool" @click="openDevTool" title="开发者工具"></div>
<div class="handle-container">
<div class="handle">
<div class="devtool" @click="openDevTool" title="开发者工具"></div>
</div>
<div class="window-handle" v-if="platform !== 'darwin'">
<div class="minimize" @click="minimize"></div>
<div class="maximize" @click="maximize"></div>
<div class="close" @click="close"></div>
</div>
</div>
</div>
</template>
<script setup>
import throttle from "lodash.throttle";
import { ref } from "vue";
import throttle from 'lodash.throttle';
import { ref } from 'vue';
const { ipcRenderer } = window.require('electron');
const { ipcRenderer } = window.require("electron");
const platform = ref(window.process.platform);
const showInput = ref(false);
@@ -43,8 +51,8 @@ try {
}
const changeValue = throttle((e) => {
ipcRenderer.send("msg-trigger", {
type: "detachInputChange",
ipcRenderer.send('msg-trigger', {
type: 'detachInputChange',
data: {
text: e.target.value,
},
@@ -52,7 +60,19 @@ const changeValue = throttle((e) => {
}, 500);
const openDevTool = () => {
ipcRenderer.send("msg-trigger", { type: "openPluginDevTools" });
ipcRenderer.send('msg-trigger', { type: 'openPluginDevTools' });
};
const minimize = () => {
ipcRenderer.send('detach:service', { type: 'minimize' });
};
const maximize = () => {
ipcRenderer.send('detach:service', { type: 'maximize' });
};
const close = () => {
ipcRenderer.send('detach:service', { type: 'close' });
};
Object.assign(window, {
@@ -79,10 +99,10 @@ html, body {
.detach {
width: 100%;
height: 56px;
height: 60px;
display: flex;
align-items: center;
background: #eee;
color: var(--color-text-primary);
}
.detach {
@@ -112,8 +132,8 @@ html, body {
}
.detach input {
background-color: #FFFFFF;
color: #333333;
background-color: var(--color-body-bg);
color: var(--color-text-primary);
width: 360px;
height: 36px;
line-height: 36px;
@@ -152,8 +172,50 @@ html, body {
background-color: #dee2e6;
}
.detach .devtool {
background: center / 18px no-repeat url("./assets/devtool.svg");
.handle .devtool {
background: center no-repeat url("./assets/tool.svg")
}
.handle-container {
display: flex;
align-items: center;
}
.window-handle {
display: flex;
align-items: center;
-webkit-app-region: no-drag;
}
.window-handle > div {
width: 48px;
height: 56px;
cursor: pointer;
}
.window-handle > div:hover {
background-color: #dee2e6;
}
.window-handle .minimize {
background: center / 20px no-repeat url("./assets/minimize.svg");
}
.window-handle .maximize {
background: center / 20px no-repeat url("./assets/maximize.svg");
}
.window-handle .unmaximize {
background: center / 20px no-repeat url("./assets/unmaximize.svg");
}
.window-handle .close {
background: center / 20px no-repeat url("./assets/close.svg");
}
.window-handle .close:hover {
background-color: #e53935 !important;
background-image: url("./assets/close-hover.svg") !important;
}
</style>

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205429990" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2034" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M529.066667 524.8l241.066666-241.066667c8.533333-8.533333 8.533333-21.333333 0-29.866666s-21.333333-8.533333-29.866666 0L499.2 494.933333 258.133333 253.866667c-8.533333-8.533333-21.333333-8.533333-29.866666 0s-8.533333 21.333333 0 29.866666L469.333333 524.8 228.266667 765.866667c-8.533333 8.533333-8.533333 21.333333 0 29.866666 4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4L499.2 554.666667l241.066667 241.066666c4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4c8.533333-8.533333 8.533333-21.333333 0-29.866666L529.066667 524.8z" fill="#ffffff" p-id="2035"></path></svg>

After

Width:  |  Height:  |  Size: 1011 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205429990" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2034" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M529.066667 524.8l241.066666-241.066667c8.533333-8.533333 8.533333-21.333333 0-29.866666s-21.333333-8.533333-29.866666 0L499.2 494.933333 258.133333 253.866667c-8.533333-8.533333-21.333333-8.533333-29.866666 0s-8.533333 21.333333 0 29.866666L469.333333 524.8 228.266667 765.866667c-8.533333 8.533333-8.533333 21.333333 0 29.866666 4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4L499.2 554.666667l241.066667 241.066666c4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4c8.533333-8.533333 8.533333-21.333333 0-29.866666L529.066667 524.8z" fill="#888888" p-id="2035"></path></svg>

After

Width:  |  Height:  |  Size: 1011 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z" fill="none" stroke="#888" stroke-width="3" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M24 11C25.3807 11 26.5 12.1193 26.5 13.5C26.5 14.8807 25.3807 16 24 16C22.6193 16 21.5 14.8807 21.5 13.5C21.5 12.1193 22.6193 11 24 11Z" fill="#888"/><path d="M24.5 34V20H23.5H22.5" stroke="#888" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M21 34H28" stroke="#888" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg>

After

Width:  |  Height:  |  Size: 995 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205323520" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1376" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M832 832H192V192h640v640z m-597.333333-42.666667h554.666666V234.666667H234.666667v554.666666z" fill="#888888" p-id="1377"></path></svg>

After

Width:  |  Height:  |  Size: 510 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205449254" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2381" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M768 533.333333H256c-12.8 0-21.333333-8.533333-21.333333-21.333333s8.533333-21.333333 21.333333-21.333333h512c12.8 0 21.333333 8.533333 21.333333 21.333333s-8.533333 21.333333-21.333333 21.333333z" fill="#888888" p-id="2382"></path></svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#icon-3d122e4c72881c3e)"><path d="M10.6963 17.5042C13.3347 14.8657 16.4701 14.9387 19.8781 16.8076L32.62 9.74509L31.8989 4.78683L43.2126 16.1005L38.2656 15.3907L31.1918 28.1214C32.9752 31.7589 33.1337 34.6647 30.4953 37.3032C30.4953 37.3032 26.235 33.0429 22.7171 29.525L6.44305 41.5564L18.4382 25.2461C14.9202 21.7281 10.6963 17.5042 10.6963 17.5042Z" fill="#888" stroke="#888" stroke-width="3" stroke-linejoin="round"/></g><defs><clipPath id="icon-3d122e4c72881c3e"><rect width="48" height="48" fill="#FFF"/></clipPath></defs></svg>

After

Width:  |  Height:  |  Size: 685 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M34.0003 41L44 24L34.0003 7H14.0002L4 24L14.0002 41H34.0003Z" fill="none" stroke="#888" stroke-width="3" stroke-linejoin="round"/><path d="M24 29C26.7614 29 29 26.7614 29 24C29 21.2386 26.7614 19 24 19C21.2386 19 19 21.2386 19 24C19 26.7614 21.2386 29 24 29Z" fill="none" stroke="#888" stroke-width="3" stroke-linejoin="round"/></svg>

After

Width:  |  Height:  |  Size: 539 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M44 16C44 22.6274 38.6274 28 32 28C29.9733 28 28.0639 27.4975 26.3896 26.6104L9 44L4 39L21.3896 21.6104C20.5025 19.9361 20 18.0267 20 16C20 9.37258 25.3726 4 32 4C34.0267 4 35.9361 4.50245 37.6104 5.38959L30 13L35 18L42.6104 10.3896C43.4975 12.0639 44 13.9733 44 16Z" fill="none" stroke="#888" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg>

After

Width:  |  Height:  |  Size: 570 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205464128" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2718" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M855.466667 168.533333h-554.666667V277.333333H192v554.666667h554.666667v-108.8h108.8v-554.666667zM704 789.333333H234.666667V320h469.333333v469.333333z m108.8-108.8H746.666667V277.333333H343.466667V211.2h469.333333v469.333333z" fill="#888888" p-id="2719"></path></svg>

After

Width:  |  Height:  |  Size: 642 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#icon-7599d19572881c3e)"><path d="M10.6963 17.5042C13.3347 14.8657 16.4701 14.9387 19.8781 16.8076L32.62 9.74509L31.8989 4.78683L43.2126 16.1005L38.2656 15.3907L31.1918 28.1214C32.9752 31.7589 33.1337 34.6647 30.4953 37.3032C30.4953 37.3032 26.235 33.0429 22.7171 29.525L6.44305 41.5564L18.4382 25.2461C14.9202 21.7281 10.6963 17.5042 10.6963 17.5042Z" fill="none" stroke="#888" stroke-width="3" stroke-linejoin="round"/></g><defs><clipPath id="icon-7599d19572881c3e"><rect width="48" height="48" fill="#888"/></clipPath></defs></svg>

After

Width:  |  Height:  |  Size: 685 B

View File

@@ -0,0 +1,25 @@
:root {
--color-text-primary: rgba(0, 0, 0, 0.85);
--color-text-content: #141414;
--color-text-desc: rgba(0, 0, 0, 0.45);
// 背景色
--color-body-bg: #fff;
--color-menu-bg: #f3efef;
--color-list-hover: #e2e2e2;
--color-input-hover: #fff;
// 边框
--color-border-light: #f0f0f0;
}
.dark {
--color-text-primary: #e8e8f0;
--color-text-content: #ccccd8;
--color-text-desc: #8f8fa6;
// 背景色
--color-body-bg: #1c1c28;
--color-menu-bg: #1c1c28;
--color-list-hover: #33333d;
--color-input-hover: #33333d;
// 边框
--color-border-light: #33333d;
}

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M21 38C30.3888 38 38 30.3888 38 21C38 11.6112 30.3888 4 21 4C11.6112 4 4 11.6112 4 21C4 30.3888 11.6112 38 21 38Z" fill="none" stroke="#888" stroke-width="3" stroke-linejoin="round"/><path d="M21 15L21 27" stroke="#888" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M15 21L27 21" stroke="#888" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M33.2218 33.2218L41.7071 41.7071" stroke="#888" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg>

After

Width:  |  Height:  |  Size: 720 B

View File

@@ -1,4 +1,5 @@
import { createApp } from "vue";
import App from "./App.vue";
import { createApp } from 'vue';
import App from './App.vue';
import './assets/var.less';
createApp(App).mount("#app");
createApp(App).mount('#app');

View File

@@ -18,13 +18,11 @@ rubick 之前的插件管理,依托于云服务器存储,我们需要为服
## 下载 rubick
[rubick 下载安装地址](https://github.com/rubickCenter/rubick/releases)
macos 选择 `pkg` 文件windows 选择 `exe` 文件。
macos 选择 `pkg` 文件windows 选择 `exe` 文件Debian/Ubuntu选择`deb`
安装完成后打开 rubick 即可看到主搜索界面:
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/26f0fbe2c69246b6a3ed139b0df1ca0b~tplv-k3u1fbpfcp-watermark.image)
目前支持 windows 和 macos。linux 小伙伴正在开发中
## 功能说明
接下来详细介绍 rubick 所包含和支持的功能

1
feature/.env.development Normal file
View File

@@ -0,0 +1 @@
VUE_APP_API_BASE=http://localhost:7001/

1
feature/.env.production Normal file
View File

@@ -0,0 +1 @@
VUE_APP_API_BASE=https://rubick.vip/api/

View File

@@ -8,14 +8,15 @@
"lint": "vue-cli-service lint"
},
"dependencies": {
"@vue/cli-service": "~4.5.0",
"@ant-design/icons-vue": "^6.0.1",
"@vue/cli-service": "~4.5.0",
"ant-design-vue": "3.2.14",
"axios": "^0.24.0",
"core-js": "^3.6.5",
"lodash.debounce": "^4.0.8",
"lodash.throttle": "^4.1.1",
"markdown-it": "^12.2.0",
"nanoid": "^4.0.2",
"vue": "3.2.45",
"vue-router": "^4.0.0-0",
"vuex": "^4.0.0-0"

View File

@@ -22,13 +22,7 @@
<template #icon>
<SettingOutlined />
</template>
设置
</a-menu-item>
<a-menu-item key="account">
<template #icon>
<UserOutlined />
</template>
账户
账户与设置
</a-menu-item>
<a-menu-item key="dev">
<template #icon>
@@ -43,18 +37,18 @@
</template>
<script setup lang="ts">
import { ref } from "vue";
import { useRouter } from "vue-router";
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import {
HeartOutlined,
UserOutlined,
AppstoreOutlined,
SettingOutlined,
BugOutlined
} from "@ant-design/icons-vue";
import { useStore } from "vuex";
BugOutlined,
} from '@ant-design/icons-vue';
import { useStore } from 'vuex';
const router = useRouter();
const active = ref(["market"]);
const active = ref(['market']);
const changeMenu = (key: any) => {
router.push(key);
};
@@ -65,7 +59,7 @@ window.rubick.onPluginEnter(({ code }: { code: string }) => {
});
const store = useStore();
const init = () => store.dispatch("init");
const init = () => store.dispatch('init');
init();
</script>
<style lang="less" scoped>
@@ -77,7 +71,6 @@ init();
.main-container {
display: flex;
align-items: flex-start;
background: var(--color-body-bg);
flex-direction: column;
.slider-bar {

View File

@@ -1,7 +1,6 @@
@import "~ant-design-vue/dist/antd.less"; // 引入官方提供的 less 样式入口文件
@primary-color: #ff4ea4; // 全局主色
@link-color: #ff4ea4; // 链接色
@error-color: #ff4ea4; // 错误色
:root {

View File

@@ -0,0 +1,30 @@
import axios from 'axios';
const instance = axios.create({
baseURL: process.env.VUE_APP_API_BASE,
});
export default {
async getScanCode({ scene }: { scene: string }) {
const res = await instance.get('/users/getScanCode', {
params: {
scene,
},
});
return res.data;
},
async checkLoginStatus({ scene }: { scene: string }) {
const res = await instance.post('/users/checkLoginStatus', {
scene,
});
return res.data;
},
async getUserInfo({ openId }: { openId: string }) {
const res = await instance.post('/users/getUserInfo', {
openId,
});
return res.data;
},
};

View File

@@ -1,8 +1,17 @@
import { createApp } from "vue";
import Antd from "ant-design-vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import "./assets/ant-reset.less";
import { createApp } from 'vue';
import Antd, { ConfigProvider } from 'ant-design-vue';
import App from './App.vue';
import router from './router';
import store from './store';
import './assets/ant-reset.less';
import 'ant-design-vue/dist/antd.variable.min.css';
createApp(App).use(store).use(Antd).use(router).mount("#app");
const { remote } = window.require('electron');
const { perf } = remote.getGlobal('OP_CONFIG').get();
ConfigProvider.config({
theme: perf.custom || {},
});
createApp(App).use(store).use(Antd).use(router).mount('#app');

View File

@@ -1,39 +1,39 @@
import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router";
import Market from "../views/market/index.vue";
import Installed from "../views/installed/index.vue";
import Account from "../views/account/index.vue";
import Settings from "../views/settings/index.vue";
import Dev from "../views/dev/index.vue";
import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router';
import Market from '../views/market/index.vue';
import Installed from '../views/installed/index.vue';
import Account from '../views/account/index.vue';
import Settings from '../views/settings/user.vue';
import Dev from '../views/dev/index.vue';
const routes: Array<RouteRecordRaw> = [
{
path: "/market",
name: "market",
path: '/market',
name: 'market',
component: Market,
},
{
path: "/installed",
name: "installed",
path: '/installed',
name: 'installed',
component: Installed,
},
{
path: "/account",
name: "account",
path: '/account',
name: 'account',
component: Account,
},
{
path: "/settings",
name: "settings",
path: '/settings',
name: 'settings',
component: Settings,
},
{
path: "/dev",
name: "dev",
path: '/dev',
name: 'dev',
component: Dev,
},
{
path: "/:catchAll(.*)",
name: "market",
path: '/:catchAll(.*)',
name: 'market',
component: Market,
},
];

View File

@@ -1,5 +1,5 @@
import { createStore } from "vuex";
import request from "@/assets/request";
import { createStore } from 'vuex';
import request from '@/assets/request';
const isDownload = (item: Market.Plugin, targets: any[]) => {
let isDownload = false;
@@ -29,74 +29,84 @@ export default createStore({
const totalPlugins = await request.getTotalPlugins();
const localPlugins = window.market.getLocalPlugins();
totalPlugins.forEach(
(origin: Market.Plugin) => {
origin.isdownload = isDownload(origin, localPlugins);
origin.isloading = false;
}
);
commit("commonUpdate", {
totalPlugins.forEach((origin: Market.Plugin) => {
origin.isdownload = isDownload(origin, localPlugins);
origin.isloading = false;
});
// 修复卸载失败,一直转圈的问题。
localPlugins.forEach((origin: Market.Plugin) => {
origin.isloading = false;
});
commit('commonUpdate', {
localPlugins,
totalPlugins,
});
},
startDownload({ commit, state }, name) {
const totalPlugins = JSON.parse(JSON.stringify(state.totalPlugins));
totalPlugins.forEach(
(origin: Market.Plugin) => {
if (origin.name === name) {
origin.isloading = true;
}
totalPlugins.forEach((origin: Market.Plugin) => {
if (origin.name === name) {
origin.isloading = true;
}
);
commit("commonUpdate", {
});
commit('commonUpdate', {
totalPlugins,
});
},
startUnDownload({ commit, state }, name) {
const localPlugins = window.market.getLocalPlugins();
localPlugins.forEach(
(origin: Market.Plugin) => {
if (origin.name === name) {
origin.isloading = true;
}
localPlugins.forEach((origin: Market.Plugin) => {
if (origin.name === name) {
origin.isloading = true;
}
);
commit("commonUpdate", {
});
commit('commonUpdate', {
localPlugins,
});
},
errorUnDownload({ commit, state }, name) {
const localPlugins = window.market.getLocalPlugins();
// 修复卸载失败,一直转圈的问题。
localPlugins.forEach((origin: Market.Plugin) => {
if (origin.name === name) {
origin.isloading = false;
}
});
commit('commonUpdate', {
localPlugins,
});
},
successDownload({ commit, state }, name) {
const totalPlugins = JSON.parse(JSON.stringify(state.totalPlugins));
totalPlugins.forEach(
(origin: Market.Plugin) => {
if (origin.name === name) {
origin.isloading = false;
origin.isdownload = true;
}
totalPlugins.forEach((origin: Market.Plugin) => {
if (origin.name === name) {
origin.isloading = false;
origin.isdownload = true;
}
);
});
const localPlugins = window.market.getLocalPlugins();
commit("commonUpdate", {
commit('commonUpdate', {
totalPlugins,
localPlugins,
});
},
async updateLocalPlugin({ commit }) {
const localPlugins = window.market.getLocalPlugins();
const totalPlugins = await request.getTotalPlugins();
totalPlugins.forEach(
(origin: Market.Plugin) => {
origin.isdownload = isDownload(origin, localPlugins);
origin.isloading = false;
}
);
totalPlugins.forEach((origin: Market.Plugin) => {
origin.isdownload = isDownload(origin, localPlugins);
origin.isloading = false;
});
commit("commonUpdate", {
commit('commonUpdate', {
localPlugins,
totalPlugins,
});

View File

@@ -1,13 +1,72 @@
<template>
<div class="account">
<a-result status="404" title="玩命开发中" sub-title="个人中心正在开发中敬请期待...">
<a-result
v-if="!userInfo"
title="请先登录"
sub-title="用户暂未登录无法体验更多设置"
>
<template #extra>
<a-button @click="showModal" type="primary">
使用微信小程序登录
</a-button>
</template>
</a-result>
<a-modal :footer="null" v-model:visible="visible">
<a-result
title="请使用微信扫码登录!"
sub-title="使用微信扫描上面的 rubick 小程序二维码进行授权登录"
>
<template #icon>
<img width="200" :src="imgCode" />
</template>
</a-result>
</a-modal>
</div>
</template>
<script>
export default {
<script setup>
import { nanoid } from 'nanoid';
import { ref, watch } from 'vue';
import { message } from 'ant-design-vue';
import service from '../../assets/service';
const userInfo = ref(window.rubick.dbStorage.getItem('rubick-user-info'));
const imgCode = ref('');
const scene = nanoid();
const visible = ref(false);
const showModal = () => {
visible.value = true;
if (!imgCode.value && !userInfo.value) {
service.getScanCode({ scene }).then(res => {
imgCode.value = `data:image/png;base64,${res.dataUrl}`;
});
}
};
let timer = null;
watch([visible], () => {
if (visible.value) {
timer = setInterval(() => {
service.checkLoginStatus({ scene }).then((res) => {
console.log(res);
if (res.openId) {
window.rubick.dbStorage.setItem('rubick-user-info', res);
userInfo.value = res;
message.success('登录成功!');
visible.value = false;
clearInterval(timer);
timer = null;
}
});
}, 2000);
} else {
clearInterval(timer);
timer = null;
}
});
</script>
<style lang="less" scoped>

View File

@@ -64,7 +64,6 @@
:key="cmd"
v-for="cmd in item.cmds"
:class="{ executable: !cmd.label }"
:color="!cmd.label && '#87d068'"
>
<span
@click="
@@ -116,6 +115,7 @@ import { computed, ref, toRaw } from 'vue';
import path from 'path';
import MarkdownIt from 'markdown-it';
import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons-vue';
import { message } from 'ant-design-vue';
const { ipcRenderer } = window.require('electron');
@@ -134,6 +134,7 @@ const localPlugins = computed(() =>
);
const updateLocalPlugin = () => store.dispatch('updateLocalPlugin');
const startUnDownload = (name) => store.dispatch('startUnDownload', name);
const errorUnDownload = (name) => store.dispatch('errorUnDownload', name);
const currentSelect = ref([0]);
@@ -147,7 +148,7 @@ const superPanelPlugins = ref(
_id: 'super-panel-plugins',
}
);
console.log(toRaw(superPanelPlugins.value.data));
const addCmdToSuperPanel = ({ cmd, code }) => {
const plugin = {
...toRaw(pluginDetail.value),
@@ -217,8 +218,13 @@ const readme = computed(() => {
const deletePlugin = async (plugin) => {
startUnDownload(plugin.name);
const timer = setTimeout(() => {
errorUnDownload(plugin.name);
message.error('卸载超时,请重试!');
}, 20000);
await window.market.deletePlugin(plugin);
updateLocalPlugin();
clearTimeout(timer);
};
</script>
@@ -329,7 +335,7 @@ const deletePlugin = async (plugin) => {
&.executable {
cursor: pointer;
color: var(--ant-info-color);
&:hover {
transform: translateY(-2px);
}

View File

@@ -7,7 +7,7 @@
<a-list-item v-if="item" @click="showDetail(item)">
<template #actions>
<a-button
style="color: #ff4ea4"
class="download-plugin-btn"
type="text"
:loading="item.isloading"
>
@@ -134,6 +134,9 @@ const showDetail = async item => {
}
.panel-item {
margin: 20px 0;
.download-plugin-btn {
color: var(--ant-primary-color);
}
.title {
margin-bottom: 30px;
color: var(--color-text-primary);

View File

@@ -6,6 +6,7 @@
v-model:value="searchValue"
placeholder="搜索插件"
style="width: 100%"
class="search"
@search="onSearch"
/>
</div>
@@ -104,6 +105,13 @@ const { searchValue, current } = toRefs(state);
overflow: hidden;
background: var(--color-menu-bg);
height: calc(~"100vh - 46px");
.search {
:deep(.ant-btn), :deep(.ant-input), :deep(.ant-input-group-addon) {
color: var(--ant-primary-color) !important;
background: var(--color-input-hover);
border-color: var(--color-border-light);
}
}
.container {
background: var(--color-body-bg);
width: calc(~'100% - 200px');

View File

@@ -2,27 +2,33 @@
<div class="settings">
<div class="left-menu">
<a-menu v-model:selectedKeys="currentSelect" mode="inline">
<a-menu-item key="userInfo">
<template #icon>
<UserOutlined/>
</template>
账户信息
</a-menu-item>
<a-menu-item key="normal">
<template #icon>
<ToolOutlined />
<ToolOutlined/>
</template>
基本设置
</a-menu-item>
<a-menu-item key="global">
<template #icon>
<LaptopOutlined />
<LaptopOutlined/>
</template>
全局快捷键
</a-menu-item>
<a-menu-item key="superpanel">
<template #icon>
<FileAddOutlined />
<FileAddOutlined/>
</template>
超级面板设置
</a-menu-item>
<a-menu-item key="localhost">
<template #icon>
<DatabaseOutlined />
<DatabaseOutlined/>
</template>
内网部署配置
</a-menu-item>
@@ -38,7 +44,7 @@
<template #title>
<span>{{ tipText }}</span>
<template v-if="isWindows">
<br />
<br/>
<span
style="cursor: pointer; text-decoration: underline"
@click="resetDefault('Alt')"
@@ -128,7 +134,7 @@
按下快捷键自动搜索对应关键字当关键字结果完全匹配且结果唯一时会直接指向该功能
</div>
<h3 style="margin-top: 10px">示例</h3>
<a-divider style="margin: 5px 0" />
<a-divider style="margin: 5px 0"/>
<a-list item-layout="horizontal" :data-source="examples">
<template #renderItem="{ item }">
<a-list-item>
@@ -177,12 +183,13 @@
</div>
</div>
<div @click="addConfig" class="add-global">
<PlusCircleOutlined />
<PlusCircleOutlined/>
新增全局快捷功能
</div>
</div>
<Localhost v-if="currentSelect[0] === 'localhost'" />
<SuperPanel v-if="currentSelect[0] === 'superpanel'" />
<Localhost v-if="currentSelect[0] === 'localhost'"/>
<SuperPanel v-if="currentSelect[0] === 'superpanel'"/>
<UserInfo v-if="currentSelect[0] === 'userInfo'"/>
</div>
</div>
</template>
@@ -195,14 +202,16 @@ import {
MinusCircleOutlined,
PlusCircleOutlined,
FileAddOutlined,
UserOutlined,
} from '@ant-design/icons-vue';
import debounce from 'lodash.debounce';
import { ref, reactive, watch, toRefs, computed, toRaw } from 'vue';
import {ref, reactive, watch, toRefs, computed, toRaw} from 'vue';
import keycodes from './keycode';
import Localhost from './localhost.vue';
import SuperPanel from './super-panel.vue';
import UserInfo from './user-info';
const { remote, ipcRenderer } = window.require('electron');
const {remote, ipcRenderer} = window.require('electron');
const examples = [
{
@@ -213,6 +222,10 @@ const examples = [
title: '快捷键 「 Alt + Q」 关键字 「 取色」',
desc: '按下Alt + Q 直接打开屏幕取色功能',
},
{
title: '快捷键 「 Ctrl + Alt + Q」 关键字 「 截屏」',
desc: '按下 Ctrl + Alt + Q 进行截屏',
},
];
const state = reactive({
@@ -220,6 +233,7 @@ const state = reactive({
common: {},
local: {},
global: [],
custom: {},
});
const isWindows = window?.rubick?.isWindows();
@@ -228,11 +242,12 @@ const tipText = computed(() => {
return `先按功能键Ctrl、Shift、${optionKeyName}),再按其他普通键。`;
});
const currentSelect = ref(['normal']);
const currentSelect = ref(['userInfo']);
const { perf, global: defaultGlobal } = remote.getGlobal('OP_CONFIG').get();
const {perf, global: defaultGlobal} = remote.getGlobal('OP_CONFIG').get();
state.shortCut = perf.shortCut;
state.custom = perf.custom;
state.common = perf.common;
state.local = perf.local;
state.global = defaultGlobal;
@@ -245,6 +260,7 @@ const setConfig = debounce(() => {
shortCut: state.shortCut,
common: state.common,
local: state.local,
custom: state.custom,
},
global: state.global,
})
@@ -255,71 +271,65 @@ const setConfig = debounce(() => {
watch(state, setConfig);
const changeShortCutOld = (e, key) => {
if (e.altKey && e.keyCode !== 18) {
const compose = `Option+${keycodes[e.keyCode].toUpperCase()}`;
state.shortCut[key] = compose;
}
if (e.ctrlKey && e.keyCode !== 17) {
const compose = `Ctrl+${keycodes[e.keyCode].toUpperCase()}`;
state.shortCut[key] = compose;
}
if (e.shiftKey && e.keyCode !== 16) {
const compose = `Shift+${keycodes[e.keyCode].toUpperCase()}`;
state.shortCut[key] = compose;
}
if (e.metaKey && e.keyCode !== 93) {
const compose = `Command+${keycodes[e.keyCode].toUpperCase()}`;
state.shortCut[key] = compose;
}
};
const changeShortCut = (e, key) => {
let compose = '';
// 添加是否包含功能键的判断
let incluFuncKeys = false;
if (e.ctrlKey && e.keyCode !== 17) {
compose += '+Ctrl';
incluFuncKeys = true;
}
if (e.shiftKey && e.keyCode !== 16) {
compose += '+Shift';
incluFuncKeys = true;
}
if (e.altKey && e.keyCode !== 18) {
compose += '+Option';
incluFuncKeys = true;
}
if (e.metaKey && e.keyCode !== 93) {
compose += '+Command';
incluFuncKeys = true;
}
compose += '+'+keycodes[e.keyCode].toUpperCase();
compose += '+' + keycodes[e.keyCode].toUpperCase();
compose = compose.substring(1)
console.log(compose);
if(e.keyCode !== 16 && e.keyCode !== 17 && e.keyCode !== 18 && e.keyCode !== 93){
if (incluFuncKeys && e.keyCode !== 16 && e.keyCode !== 17 && e.keyCode !== 18 && e.keyCode !== 93) {
state.shortCut[key] = compose;
}else{
} else {
// 不做处理
}
};
const changeGlobalKey = (e, index) => {
let compose;
if (e.altKey && e.keyCode !== 18) {
compose = `Alt+${keycodes[e.keyCode].toUpperCase()}`;
}
let compose = '';
// 添加是否包含功能键的判断
let incluFuncKeys = false;
if (e.ctrlKey && e.keyCode !== 17) {
compose = `Ctrl+${keycodes[e.keyCode].toUpperCase()}`;
compose += '+Ctrl';
incluFuncKeys = true;
}
if (e.shiftKey && e.keyCode !== 16) {
compose = `Shift+${keycodes[e.keyCode].toUpperCase()}`;
compose += '+Shift';
incluFuncKeys = true;
}
if (e.altKey && e.keyCode !== 18) {
compose += '+Option';
incluFuncKeys = true;
}
if (e.metaKey && e.keyCode !== 93) {
compose = `Command+${keycodes[e.keyCode].toUpperCase()}`;
compose += '+Command';
incluFuncKeys = true;
}
if (compose) {
compose += '+' + keycodes[e.keyCode].toUpperCase();
compose = compose.substring(1)
if (incluFuncKeys && e.keyCode !== 16 && e.keyCode !== 17 && e.keyCode !== 18 && e.keyCode !== 93) {
state.global[index].key = compose;
} else {
// 不做处理
}
// f1 - f12
if (e.keyCode >= 112 && e.keyCode <= 123) {
if (!incluFuncKeys && e.keyCode >= 112 && e.keyCode <= 123) {
compose = keycodes[e.keyCode].toUpperCase();
}
if (compose) {
state.global[index].key = compose;
}
};
@@ -356,11 +366,12 @@ const addConfig = () => {
});
};
const { shortCut, common, local, global } = toRefs(state);
const {shortCut, common, local, global} = toRefs(state);
</script>
<style lang="less" scoped>
<style lang="less">
@import '~@/assets/common.less';
.settings {
box-sizing: border-box;
width: 100%;
@@ -368,6 +379,12 @@ const { shortCut, common, local, global } = toRefs(state);
background: var(--color-body-bg);
height: calc(~'100vh - 46px');
display: flex;
.ant-menu {
background: var(--color-body-bg) !important;
color: var(--color-text-content) !important;
}
.settings-detail {
padding: 20px;
box-sizing: border-box;
@@ -375,16 +392,20 @@ const { shortCut, common, local, global } = toRefs(state);
overflow: auto;
height: 100%;
background: var(--color-body-bg);
.setting-item {
margin-bottom: 20px;
.ant-form-item {
margin-bottom: 0;
}
.title {
color: #6c9fe2;
color: var(--ant-primary-color);
font-size: 15px;
margin-bottom: 10px;
}
.settings-item-li {
padding-left: 20px;
display: flex;
@@ -392,20 +413,31 @@ const { shortCut, common, local, global } = toRefs(state);
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
.label {
color: var(--color-text-content);
}
.value {
width: 300px;
cursor: pointer;
text-align: center;
border: 1px solid var(--color-border-light);
color: #6c9fe2;
color: var(--ant-primary-color);
font-size: 14px;
height: 24px;
font-weight: lighter;
background: var(--color-input-hover);
.ant-input {
text-align: center;
color: var(--ant-primary-color);
font-size: 14px;
font-weight: lighter;
background: var(--color-input-hover);
}
}
:deep(.ant-switch) {
.ant-switch {
&:not(.ant-switch-checked) {
background: var(--color-list-hover);
}
@@ -413,48 +445,56 @@ const { shortCut, common, local, global } = toRefs(state);
}
}
}
.feature-container {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 10px;
font-size: 14px;
.item {
flex: 1;
color: var(--color-text-content);
}
.short-cut {
margin-left: 20px;
}
.value {
cursor: pointer;
text-align: center;
border: 1px solid var(--color-border-light);
color: #6c9fe2;
color: var(--ant-primary-color);
font-size: 14px;
height: 24px;
font-weight: lighter;
margin-top: 10px;
position: relative;
background: var(--color-input-hover);
:deep(.ant-input) {
color: #6c9fe2;
.ant-input {
color: var(--ant-primary-color);
font-weight: lighter;
background: none;
}
:deep(.anticon) {
.anticon {
color: var(--color-text-desc);
}
&.ant-input-affix-wrapper {
display: flex;
}
&:hover {
.anticon {
display: block;
color: var(--color-text-content);
}
}
.anticon {
position: absolute;
display: none;
@@ -464,24 +504,29 @@ const { shortCut, common, local, global } = toRefs(state);
}
}
}
.add-global {
color: #6c9fe2;
color: var(--ant-primary-color);
margin-top: 20px;
width: 100%;
text-align: center;
cursor: pointer;
}
:deep(.ant-collapse) {
.ant-collapse {
background: var(--color-input-hover);
.ant-collapse-content {
background: var(--color-input-hover);
color: var(--color-text-content);
}
h3,
.ant-collapse-header,
.ant-list-item-meta-title {
color: var(--color-text-primary);
}
.ant-list-item-meta-description {
color: var(--color-text-desc);
}

View File

@@ -0,0 +1,178 @@
<template>
<div class="user-info">
<div class="info-container">
<a-result
class="user-info-result"
:title="userInfo.name || 'rubick 用户'"
sub-title="软件偏好设置完成后需重启软件头像和昵称请前往小程序设置"
>
<template #icon>
<a-avatar :size="64" v-if="!userInfo.avatar">
<template #icon><UserOutlined /></template>
</a-avatar>
<a-avatar :src="userInfo.avatar" :size="64" v-else />
</template>
</a-result>
</div>
<div class="settings-container">
<div class="setting-item">
<div class="title">主题色设置</div>
<div class="settings-item-li">
<div class="label">主色调</div>
<a-input v-model:value="custom.primaryColor" class="value">
<template #prefix>
<div :style="{ background: custom.primaryColor, width: '10px', height: '10px' }"></div>
</template>
</a-input>
</div>
<div class="settings-item-li">
<div class="label">错误色</div>
<a-input v-model:value="custom.errorColor" class="value">
<template #prefix>
<div :style="{ background: custom.errorColor, width: '10px', height: '10px' }"></div>
</template>
</a-input>
</div>
<div class="settings-item-li">
<div class="label">警告色</div>
<a-input v-model:value="custom.warningColor" class="value">
<template #prefix>
<div :style="{ background: custom.warningColor, width: '10px', height: '10px' }"></div>
</template>
</a-input>
</div>
<div class="settings-item-li">
<div class="label">成功色</div>
<a-input v-model:value="custom.successColor" class="value">
<template #prefix>
<div :style="{ background: custom.successColor, width: '10px', height: '10px' }"></div>
</template>
</a-input>
</div>
<div class="settings-item-li">
<div class="label">提醒色</div>
<a-input v-model:value="custom.infoColor" class="value">
<template #prefix>
<div :style="{ background: custom.infoColor, width: '10px', height: '10px' }"></div>
</template>
</a-input>
</div>
</div>
<div class="setting-item">
<div class="title">用户个性化设置</div>
<div class="settings-item-li">
<div class="label">主搜索框欢迎语</div>
<a-input v-model:value="custom.placeholder" class="value"></a-input>
</div>
<div class="settings-item-li">
<div class="label">界面 logo</div>
<div class="img-container">
<img
class="custom-img"
:src="custom.logo"
/>
<a-button @click="changeLogo" size="small" type="link">点我替换</a-button>
</div>
</div>
</div>
<div class="footer-btn">
<a-button @click="reset" type="danger">恢复默认设置</a-button>
</div>
</div>
</div>
</template>
<script setup>
import {reactive, ref, toRefs, watch} from 'vue';
import { Modal } from 'ant-design-vue';
import { UserOutlined } from '@ant-design/icons-vue';
import debounce from 'lodash.debounce';
import service from '../../assets/service';
const { remote, ipcRenderer } = window.require('electron');
const state = reactive({
custom: {},
});
const { perf } = remote.getGlobal('OP_CONFIG').get();
state.custom = perf.custom || {};
const userInfo = ref(window.rubick.dbStorage.getItem('rubick-user-info'));
service.getUserInfo({ openId: userInfo.value.openId }).then((res) => {
userInfo.value = res;
});
const setConfig = debounce(() => {
remote.getGlobal('OP_CONFIG').set(
JSON.parse(
JSON.stringify({
perf: {
...perf,
custom: state.custom,
},
})
)
);
ipcRenderer.send('re-register');
}, 500);
watch(state, setConfig);
const { custom } = toRefs(state);
const changeLogo = () => {
const [logoPath] = window.rubick.showOpenDialog({
title: '请选择 logo 路径',
filters: [{ name: 'images', extensions: ['png'] }],
properties: ['openFile'],
});
state.custom.logo = `file://${logoPath}`;
};
const reset = () => {
Modal.warning({
title: '确定恢复默认设置吗?',
content: '回复后之前的设置将会被清空',
onOk() {
const defaultcustom = remote.getGlobal('OP_CONFIG').getDefaultConfig().perf.custom;
state.custom = JSON.parse(JSON.stringify(defaultcustom));
},
});
};
</script>
<style lang="less">
.settings-container {
margin-top: 18px;
}
.user-info-result {
padding: 0;
&.ant-result {
padding: 24px;
}
.icon {
font-size: 48px;
}
.ant-result-icon {
margin-bottom: 12px;
}
.ant-result-title {
font-size: 18px;
}
}
.img-container {
width: 300px;
}
.custom-img {
width: 60px;
height: 60px;
}
.footer-btn {
text-align: right;
border-top: 1px dashed #ddd;
padding-top: 12px;
}
</style>

View File

@@ -0,0 +1,88 @@
<template>
<div class="account">
<a-result
v-if="!userInfo"
title="请先登录"
sub-title="登录后可开启用户个性化设置"
>
<template #extra>
<a-button @click="showModal" type="primary">
使用微信小程序登录
</a-button>
</template>
</a-result>
<Index v-else />
<a-modal :footer="null" v-model:visible="visible">
<a-result
title="请使用微信扫码登录!"
sub-title="使用微信扫描上面的 rubick 小程序二维码进行授权登录"
>
<template #icon>
<img width="200" :src="imgCode" />
</template>
</a-result>
</a-modal>
</div>
</template>
<script setup>
import { nanoid } from 'nanoid';
import { ref, watch } from 'vue';
import { message } from 'ant-design-vue';
import Index from './index';
import service from '../../assets/service';
const userInfo = ref(window.rubick.dbStorage.getItem('rubick-user-info'));
const imgCode = ref('');
const scene = nanoid();
const visible = ref(false);
const showModal = () => {
visible.value = true;
if (!imgCode.value && !userInfo.value) {
service.getScanCode({ scene }).then(res => {
imgCode.value = `data:image/png;base64,${res.dataUrl}`;
});
}
};
let timer = null;
watch([visible], () => {
if (visible.value) {
timer = setInterval(() => {
service.checkLoginStatus({ scene }).then((res) => {
console.log(res);
if (res.openId) {
window.rubick.dbStorage.setItem('rubick-user-info', res);
userInfo.value = res;
message.success('登录成功!');
visible.value = false;
clearInterval(timer);
timer = null;
}
});
}, 2000);
} else {
clearInterval(timer);
timer = null;
}
});
</script>
<style lang="less" scoped>
.account {
box-sizing: border-box;
width: 100%;
overflow-x: hidden;
background: var(--color-body-bg);
height: calc(~"100vh - 46px");
:deep(.ant-result-title) {
color: var(--color-text-primary);
}
:deep(.ant-result-subtitle) {
color: var(--color-text-desc);
}
}
</style>

View File

@@ -6408,6 +6408,11 @@ nanoid@^3.3.4:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
nanoid@^4.0.2:
version "4.0.2"
resolved "https://registry.npmmirror.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e"
integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -9112,6 +9117,11 @@ uuid@^8.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
uuid@^9.0.0:
version "9.0.0"
resolved "https://registry.npmmirror.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
v8-compile-cache@^2.0.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"

View File

@@ -1,6 +1,6 @@
{
"name": "rubick",
"version": "2.2.8",
"version": "2.3.6",
"author": "muwoo <2424880409@qq.com>",
"private": true,
"scripts": {
@@ -20,10 +20,11 @@
},
"dependencies": {
"@better-scroll/core": "^2.4.2",
"ant-design-vue": "^2.2.8",
"ant-design-vue": "3.2.14",
"axios": "^1.3.4",
"core-js": "^3.6.5",
"cross-spawn": "^7.0.3",
"electron-updater": "^4.6.5",
"extract-file-icon": "^0.3.2",
"fix-path": "^3.0.0",
"get-mac-apps": "^1.0.2",
@@ -63,5 +64,7 @@
"vue-cli-plugin-electron-builder": "~2.1.1",
"worker-plugin": "^5.0.1"
},
"__npminstall_done": false
"resolutions": {
"vue-cli-plugin-electron-builder/electron-builder": "^23.0.3"
}
}

View File

@@ -1 +0,0 @@
body,html{margin:0;padding:0;font-family:system-ui,PingFang SC,Helvetica Neue,Microsoft Yahei,sans-serif;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden}.detach{width:100%;height:56px;background:#eee;flex:1;display:flex;align-items:center;font-size:18px;padding-left:10px;font-weight:500;box-sizing:border-box;justify-content:space-between}.detach.darwin{padding-left:80px}.detach.darwin,.detach.win32{-webkit-app-region:drag}.detach img{width:36px;height:36px;margin-right:10px}.detach input{background-color:#fff;color:#333;width:360px;height:36px;line-height:36px;border-radius:4px;font-size:14px;border:none;padding:0 10px;outline:none;-webkit-app-region:no-drag}.detach input::-webkit-input-placeholder{color:#aaa;-webkit-user-select:none;user-select:none}.detach .info{display:flex;align-items:center}.handle{display:flex;-webkit-app-region:no-drag}.handle>div{width:36px;height:36px;border-radius:18px;cursor:pointer;margin-right:6px}.handle>div:hover{background-color:#dee2e6}.detach .devtool{background:50%/18px no-repeat url(../img/devtool.87e078f5.svg)}

View File

@@ -0,0 +1 @@
body,html{margin:0;padding:0;font-family:system-ui,PingFang SC,Helvetica Neue,Microsoft Yahei,sans-serif;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden}.detach{width:100%;height:60px;color:var(--color-text-primary);flex:1;display:flex;align-items:center;font-size:18px;padding-left:10px;font-weight:500;box-sizing:border-box;justify-content:space-between}.detach.darwin{padding-left:80px}.detach.darwin,.detach.win32{-webkit-app-region:drag}.detach img{width:36px;height:36px;margin-right:10px}.detach input{background-color:var(--color-body-bg);color:var(--color-text-primary);width:360px;height:36px;line-height:36px;border-radius:4px;font-size:14px;border:none;padding:0 10px;outline:none;-webkit-app-region:no-drag}.detach input::-webkit-input-placeholder{color:#aaa;-webkit-user-select:none;user-select:none}.detach .info{display:flex;align-items:center}.handle{display:flex;-webkit-app-region:no-drag}.handle>div{width:36px;height:36px;border-radius:18px;cursor:pointer;margin-right:6px}.handle>div:hover{background-color:#dee2e6}.handle .devtool{background:50% no-repeat url(../img/tool.4b0524aa.svg)}.handle-container,.window-handle{display:flex;align-items:center}.window-handle{-webkit-app-region:no-drag}.window-handle>div{width:48px;height:56px;cursor:pointer}.window-handle>div:hover{background-color:#dee2e6}.window-handle .minimize{background:50%/20px no-repeat url(../img/minimize.384634d1.svg)}.window-handle .maximize{background:50%/20px no-repeat url(../img/maximize.f11a5dfe.svg)}.window-handle .unmaximize{background:50%/20px no-repeat url(../img/unmaximize.36583168.svg)}.window-handle .close{background:50%/20px no-repeat url(../img/close.cc2cafaa.svg)}.window-handle .close:hover{background-color:#e53935!important;background-image:url(../img/close-hover.c92ca454.svg)!important}:root{--color-text-primary:rgba(0,0,0,0.85);--color-text-content:#141414;--color-text-desc:rgba(0,0,0,0.45);--color-body-bg:#fff;--color-menu-bg:#f3efef;--color-list-hover:#e2e2e2;--color-input-hover:#fff;--color-border-light:#f0f0f0}.dark{--color-text-primary:#e8e8f0;--color-text-content:#ccccd8;--color-text-desc:#8f8fa6;--color-body-bg:#1c1c28;--color-menu-bg:#1c1c28;--color-list-hover:#33333d;--color-input-hover:#33333d;--color-border-light:#33333d}

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205429990" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2034" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M529.066667 524.8l241.066666-241.066667c8.533333-8.533333 8.533333-21.333333 0-29.866666s-21.333333-8.533333-29.866666 0L499.2 494.933333 258.133333 253.866667c-8.533333-8.533333-21.333333-8.533333-29.866666 0s-8.533333 21.333333 0 29.866666L469.333333 524.8 228.266667 765.866667c-8.533333 8.533333-8.533333 21.333333 0 29.866666 4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4L499.2 554.666667l241.066667 241.066666c4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4c8.533333-8.533333 8.533333-21.333333 0-29.866666L529.066667 524.8z" fill="#ffffff" p-id="2035"></path></svg>

After

Width:  |  Height:  |  Size: 1011 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205429990" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2034" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M529.066667 524.8l241.066666-241.066667c8.533333-8.533333 8.533333-21.333333 0-29.866666s-21.333333-8.533333-29.866666 0L499.2 494.933333 258.133333 253.866667c-8.533333-8.533333-21.333333-8.533333-29.866666 0s-8.533333 21.333333 0 29.866666L469.333333 524.8 228.266667 765.866667c-8.533333 8.533333-8.533333 21.333333 0 29.866666 4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4L499.2 554.666667l241.066667 241.066666c4.266667 4.266667 10.666667 6.4 14.933333 6.4s10.666667-2.133333 14.933333-6.4c8.533333-8.533333 8.533333-21.333333 0-29.866666L529.066667 524.8z" fill="#888888" p-id="2035"></path></svg>

After

Width:  |  Height:  |  Size: 1011 B

View File

@@ -1 +0,0 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1576121932768" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2610" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M344.792 518.575L303.4 477.184a26.947 26.947 0 0 1 38.13-38.13l60.174 60.173a26.947 26.947 0 0 1 0.27 37.834L114.392 833.16a26.947 26.947 0 0 0 0.27 37.834l68.984 68.958a26.947 26.947 0 0 0 38.077 0l291.301-291.3a26.947 26.947 0 0 1 38.104 0l146.324 146.323a26.947 26.947 0 1 1-38.104 38.13L532.076 705.833 259.853 978.055a80.842 80.842 0 0 1-114.337 0L76.53 909.096a80.842 80.842 0 0 1-0.809-113.475l269.043-277.046z m473.546 155.54a26.947 26.947 0 1 1-38.104 38.104L597.288 529.273a26.947 26.947 0 0 1 0-38.103l148.13-148.103a26.947 26.947 0 0 1 15.36-7.653l88.603-12.18 89.627-170.927-56.697-60.39-167.37 97.254-16.546 85.53a26.947 26.947 0 0 1-7.384 13.96l-148.13 148.102a26.947 26.947 0 0 1-38.103 0l-77.474-77.474a26.947 26.947 0 1 1 38.104-38.103l58.422 58.422 123.23-123.23 17.273-89.466a26.947 26.947 0 0 1 12.935-18.19l196.5-114.175a26.947 26.947 0 0 1 33.173 4.85l84.48 90.004a26.947 26.947 0 0 1 4.203 30.963l-104.96 200.165a26.947 26.947 0 0 1-20.21 14.201l-93.346 12.854-122.637 122.637 163.867 163.894z" p-id="2611" fill="#888888"></path><path d="M610.816 784.573a26.947 26.947 0 0 1 38.104-38.104l52.089 52.09a26.947 26.947 0 0 1-38.104 38.103l-52.089-52.09zM368.371 543.42a26.947 26.947 0 1 1 37.995-38.185L705.671 803.22a26.947 26.947 0 0 1 7.814 21.45 111.373 111.373 0 0 0 31.475 87.471 107.79 107.79 0 1 0 68.662-183.727c-2.129 0.135-3.934 0.081-5.578-0.054a26.947 26.947 0 0 1-19.537-7.868L485.24 417.954a26.947 26.947 0 1 1 38.05-38.158l295.181 294.481A161.684 161.684 0 1 1 706.83 950.272a165.16 165.16 0 0 1-47.642-117.275L368.37 543.421z" p-id="2612" fill="#888888"></path><path d="M783.076 874.036a53.895 53.895 0 1 0 76.22-76.219 53.895 53.895 0 1 0-76.22 76.219zM421.807 588.989a26.947 26.947 0 0 1 38.104 38.13L221.723 865.28a26.947 26.947 0 1 1-38.104-38.104L421.807 588.99z m81.597-229.808a26.947 26.947 0 1 1-38.104 38.104l-37.996-37.996a26.947 26.947 0 0 1-5.847-29.345c0.808-1.914 1.05-2.426 3.368-7.06l0.189-0.432c0.754-1.509 1.24-2.506 1.159-2.263a188.632 188.632 0 0 0-43.601-198.818 187.877 187.877 0 0 0-129.698-55.215 189.736 189.736 0 0 0-73.135 13.15l-2.506 0.97-1.752 0.728a26.947 26.947 0 0 1-21.073-49.61c1.887-0.809 1.887-0.809 3.423-1.402l2.102-0.808a242.068 242.068 0 0 1 93.992-16.896 241.772 241.772 0 0 1 166.723 70.98 242.526 242.526 0 0 1 57.722 250.88l25.007 25.033zM25.869 160.013a26.947 26.947 0 0 1 49.61 21.02 187.284 187.284 0 0 0-14.74 65.374 188.039 188.039 0 0 0 55.054 141.743 188.632 188.632 0 0 0 44.463 33.037 26.947 26.947 0 1 1-25.411 47.536 242.526 242.526 0 0 1-57.129-42.47A241.907 241.907 0 0 1 6.9 244.035a243.443 243.443 0 0 1 18.97-84.022z m224.337 337.274a26.947 26.947 0 0 1-0.215-53.895 189.17 189.17 0 0 0 61.79-10.644c4.366-1.51 7.168-2.21 10.94-1.563a26.947 26.947 0 0 1 18.81 7.895l33.145 33.146a26.947 26.947 0 0 1-38.103 38.13l-21.99-22.016a243.308 243.308 0 0 1-64.377 8.947z" p-id="2613" fill="#888888"></path><path d="M148.48 77.824a26.947 26.947 0 1 1 38.104-38.104l161.792 161.82a26.947 26.947 0 0 1 7.087 25.6l-22.986 91.35a26.947 26.947 0 0 1-19.564 19.565L221.56 361.04a26.947 26.947 0 0 1-25.6-7.06L30.343 188.362a26.947 26.947 0 1 1 38.13-38.103L223.26 305.044l60.901-15.306 15.306-60.9L148.48 77.823z" p-id="2614" fill="#888888"></path></svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205323520" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1376" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M832 832H192V192h640v640z m-597.333333-42.666667h554.666666V234.666667H234.666667v554.666666z" fill="#888888" p-id="1377"></path></svg>

After

Width:  |  Height:  |  Size: 510 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205449254" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2381" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M768 533.333333H256c-12.8 0-21.333333-8.533333-21.333333-21.333333s8.533333-21.333333 21.333333-21.333333h512c12.8 0 21.333333 8.533333 21.333333 21.333333s-8.533333 21.333333-21.333333 21.333333z" fill="#888888" p-id="2382"></path></svg>

After

Width:  |  Height:  |  Size: 613 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" fill="white" fill-opacity="0.01"/><path d="M44 16C44 22.6274 38.6274 28 32 28C29.9733 28 28.0639 27.4975 26.3896 26.6104L9 44L4 39L21.3896 21.6104C20.5025 19.9361 20 18.0267 20 16C20 9.37258 25.3726 4 32 4C34.0267 4 35.9361 4.50245 37.6104 5.38959L30 13L35 18L42.6104 10.3896C43.4975 12.0639 44 13.9733 44 16Z" fill="none" stroke="#888" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg>

After

Width:  |  Height:  |  Size: 570 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1618205464128" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2718" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M855.466667 168.533333h-554.666667V277.333333H192v554.666667h554.666667v-108.8h108.8v-554.666667zM704 789.333333H234.666667V320h469.333333v469.333333z m108.8-108.8H746.666667V277.333333H343.466667V211.2h469.333333v469.333333z" fill="#888888" p-id="2719"></path></svg>

After

Width:  |  Height:  |  Size: 642 B

View File

@@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>detach</title><link href="css/app.2f947ac7.css" rel="preload" as="style"><link href="js/app.3ff37760.js" rel="preload" as="script"><link href="js/chunk-vendors.32f0b2e2.js" rel="preload" as="script"><link href="css/app.2f947ac7.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but detach doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.32f0b2e2.js"></script><script src="js/app.3ff37760.js"></script></body></html>
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>detach</title><link href="css/app.65d55ce4.css" rel="preload" as="style"><link href="js/app.7471434d.js" rel="preload" as="script"><link href="js/chunk-vendors.29c10bf6.js" rel="preload" as="script"><link href="css/app.65d55ce4.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but detach doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.29c10bf6.js"></script><script src="js/app.7471434d.js"></script></body></html>

View File

@@ -1,2 +0,0 @@
(function(e){function t(t){for(var r,a,c=t[0],l=t[1],i=t[2],p=0,b=[];p<c.length;p++)a=c[p],Object.prototype.hasOwnProperty.call(u,a)&&u[a]&&b.push(u[a][0]),u[a]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);s&&s(t);while(b.length)b.shift()();return o.push.apply(o,i||[]),n()}function n(){for(var e,t=0;t<o.length;t++){for(var n=o[t],r=!0,c=1;c<n.length;c++){var l=n[c];0!==u[l]&&(r=!1)}r&&(o.splice(t--,1),e=a(a.s=n[0]))}return e}var r={},u={app:0},o=[];function a(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,a),n.l=!0,n.exports}a.m=e,a.c=r,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)a.d(n,r,function(t){return e[t]}.bind(null,r));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="";var c=window["webpackJsonp"]=window["webpackJsonp"]||[],l=c.push.bind(c);c.push=t,c=c.slice();for(var i=0;i<c.length;i++)t(c[i]);var s=l;o.push([0,"chunk-vendors"]),n()})({0:function(e,t,n){e.exports=n("cd49")},cd49:function(e,t,n){"use strict";n.r(t);var r=n("7a23"),u=n("84a2"),o=n.n(u);const a={class:"info"},c=["src"],l=["value","placeholder"],i={key:1};var s={__name:"App",setup(e){const{ipcRenderer:t}=window.require("electron"),n=Object(r["f"])(window.process.platform),u=Object(r["f"])(!1),s=localStorage.getItem("rubick-system-detach")||"{}",p=Object(r["f"])({});window.initDetach=e=>{p.value=e,u.value=e.subInput&&(!!e.subInput.value||!!e.subInput.placeholder),localStorage.setItem("rubick-system-detach",JSON.stringify(e))};try{window.initDetach(JSON.parse(s))}catch(v){}const b=o()(e=>{t.send("msg-trigger",{type:"detachInputChange",data:{text:e.target.value}})},500),d=()=>{t.send("msg-trigger",{type:"openPluginDevTools"})};return Object.assign(window,{setSubInputValue:({value:e})=>{p.value.subInput.value=e},setSubInput:e=>{p.value.subInput.placeholder=e},removeSubInput:()=>{p.value.subInput=null}}),(e,t)=>{var o,s;return Object(r["e"])(),Object(r["b"])("div",{class:Object(r["d"])([n.value,"detach"])},[Object(r["c"])("div",a,[Object(r["c"])("img",{src:p.value.logo},null,8,c),u.value?(Object(r["e"])(),Object(r["b"])("input",{key:0,autofocus:"",onInput:t[0]||(t[0]=(...e)=>Object(r["h"])(b)&&Object(r["h"])(b)(...e)),value:null===(o=p.value.subInput)||void 0===o?void 0:o.value,placeholder:null===(s=p.value.subInput)||void 0===s?void 0:s.placeholder},null,40,l)):(Object(r["e"])(),Object(r["b"])("span",i,Object(r["g"])(p.value.pluginName),1))]),Object(r["c"])("div",{class:"handle"},[Object(r["c"])("div",{class:"devtool",onClick:d,title:"开发者工具"})])],2)}}};n("f7aa");const p=s;var b=p;Object(r["a"])(b).mount("#app")},df03:function(e,t,n){},f7aa:function(e,t,n){"use strict";n("df03")}});
//# sourceMappingURL=app.3ff37760.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
(function(e){function t(t){for(var c,o,l=t[0],a=t[1],i=t[2],p=0,d=[];p<l.length;p++)o=l[p],Object.prototype.hasOwnProperty.call(r,o)&&r[o]&&d.push(r[o][0]),r[o]=0;for(c in a)Object.prototype.hasOwnProperty.call(a,c)&&(e[c]=a[c]);s&&s(t);while(d.length)d.shift()();return u.push.apply(u,i||[]),n()}function n(){for(var e,t=0;t<u.length;t++){for(var n=u[t],c=!0,l=1;l<n.length;l++){var a=n[l];0!==r[a]&&(c=!1)}c&&(u.splice(t--,1),e=o(o.s=n[0]))}return e}var c={},r={app:0},u=[];function o(t){if(c[t])return c[t].exports;var n=c[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.m=e,o.c=c,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var c in e)o.d(n,c,function(t){return e[t]}.bind(null,c));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="";var l=window["webpackJsonp"]=window["webpackJsonp"]||[],a=l.push.bind(l);l.push=t,l=l.slice();for(var i=0;i<l.length;i++)t(l[i]);var s=a;u.push([0,"chunk-vendors"]),n()})({0:function(e,t,n){e.exports=n("cd49")},"0980":function(e,t,n){},4011:function(e,t,n){},cd49:function(e,t,n){"use strict";n.r(t);var c=n("79c4"),r=n("c965"),u=n.n(r);const o={class:"info"},l=["src"],a=["value","placeholder"],i={key:1};var s={__name:"App",setup(e){const{ipcRenderer:t}=window.require("electron"),n=Object(c["f"])(window.process.platform),r=Object(c["f"])(!1),s=localStorage.getItem("rubick-system-detach")||"{}",p=Object(c["f"])({});window.initDetach=e=>{p.value=e,r.value=e.subInput&&(!!e.subInput.value||!!e.subInput.placeholder),localStorage.setItem("rubick-system-detach",JSON.stringify(e))};try{window.initDetach(JSON.parse(s))}catch(O){}const d=u()(e=>{t.send("msg-trigger",{type:"detachInputChange",data:{text:e.target.value}})},500),b=()=>{t.send("msg-trigger",{type:"openPluginDevTools"})},v=()=>{t.send("detach:service",{type:"minimize"})},f=()=>{t.send("detach:service",{type:"maximize"})},h=()=>{t.send("detach:service",{type:"close"})};return Object.assign(window,{setSubInputValue:({value:e})=>{p.value.subInput.value=e},setSubInput:e=>{p.value.subInput.placeholder=e},removeSubInput:()=>{p.value.subInput=null}}),(e,t)=>{var u,s;return Object(c["e"])(),Object(c["b"])("div",{class:Object(c["d"])([n.value,"detach"])},[Object(c["c"])("div",o,[Object(c["c"])("img",{src:p.value.logo},null,8,l),r.value?(Object(c["e"])(),Object(c["b"])("input",{key:0,autofocus:"",onInput:t[0]||(t[0]=(...e)=>Object(c["h"])(d)&&Object(c["h"])(d)(...e)),value:null===(u=p.value.subInput)||void 0===u?void 0:u.value,placeholder:null===(s=p.value.subInput)||void 0===s?void 0:s.placeholder},null,40,a)):(Object(c["e"])(),Object(c["b"])("span",i,Object(c["g"])(p.value.pluginName),1))]),Object(c["c"])("div",{class:"handle-container"},[Object(c["c"])("div",{class:"handle"},[Object(c["c"])("div",{class:"devtool",onClick:b,title:"开发者工具"})]),Object(c["c"])("div",{class:"window-handle"},[Object(c["c"])("div",{class:"minimize",onClick:v}),Object(c["c"])("div",{class:"maximize",onClick:f}),Object(c["c"])("div",{class:"close",onClick:h})])])],2)}}};n("d648");const p=s;var d=p;n("4011");Object(c["a"])(d).mount("#app")},d648:function(e,t,n){"use strict";n("0980")}});
//# sourceMappingURL=app.7471434d.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -24,7 +24,7 @@
<div class="rubick-select">
<div class="select-tag" style="display: none;"></div>
<span class="main-input ant-input-affix-wrapper">
<input placeholder="Hi, Rubick2" type="text" id="search" class="ant-input">
<input placeholder="你好 rubick" type="text" id="search" class="ant-input">
<span class="ant-input-suffix">
<div class="suffix-tool">
<span tabindex="-1" role="img" aria-label="more" class="anticon anticon-more icon-more">

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>

2
release/releaseNotes.md Normal file
View File

@@ -0,0 +1,2 @@
- init mac codesign
- 发布时间 2023-06-25

View File

@@ -1,8 +1,15 @@
import commonConst from '@/common/utils/commonConst';
export default {
version: 5,
version: 11,
perf: {
custom: {
primaryColor: '#ff4ea4',
errorColor: '#ed6d46',
warningColor: '#e5a84b',
successColor: '#c0d695',
infoColor: '#aa8eeB',
logo: `file://${__static}/logo.png`,
placeholder: '你好 rubick',
},
shortCut: {
showAndHidden: 'Option+R',
separate: 'Ctrl+D',
@@ -12,8 +19,7 @@ export default {
common: {
start: true,
space: true,
// 是否失焦隐藏。默认在dev环境不隐藏在打包后隐藏。
hideOnBlur: commonConst.production(),
hideOnBlur: true,
autoPast: false,
darkMode: false,
},

View File

@@ -1,17 +1,20 @@
import path from "path";
import fs from "fs";
import getLocalDataFile from "./getLocalDataFile";
import defaultConfigForAnyPlatform from "../constans/defaultConfig";
import path from 'path';
import fs from 'fs';
import getLocalDataFile from './getLocalDataFile';
import defaultConfigForAnyPlatform from '../constans/defaultConfig';
const configPath = path.join(getLocalDataFile(), "./rubick-config.json");
const configPath = path.join(getLocalDataFile(), './rubick-config.json');
global.OP_CONFIG = {
config: null,
getDefaultConfig() {
return defaultConfigForAnyPlatform;
},
get() {
try {
if (!global.OP_CONFIG.config) {
global.OP_CONFIG.config = JSON.parse(
fs.readFileSync(configPath, "utf8") ||
fs.readFileSync(configPath, 'utf8') ||
JSON.stringify(defaultConfigForAnyPlatform)
);
}

View File

@@ -1,9 +1,13 @@
import { app, BrowserWindow, protocol } from 'electron';
import { BrowserWindow, ipcMain, nativeTheme } from 'electron';
import path from 'path';
export default () => {
let win: any;
const init = (pluginInfo, viewInfo, view) => {
ipcMain.on('detach:service', async (event, arg: { type: string }) => {
const data = await operation[arg.type]();
event.returnValue = data;
});
createWindow(pluginInfo, viewInfo, view);
};
@@ -19,6 +23,7 @@ export default () => {
frame: true,
show: false,
enableLargerThanScreen: true,
backgroundColor: nativeTheme.shouldUseDarkColors ? '#1c1c28' : '#fff',
x: viewInfo.x,
y: viewInfo.y,
webPreferences: {
@@ -27,6 +32,7 @@ export default () => {
backgroundThrottling: false,
contextIsolation: false,
webviewTag: true,
devTools: true,
nodeIntegration: true,
},
});
@@ -44,6 +50,11 @@ export default () => {
});
win.once('ready-to-show', () => {
const darkMode = global.OP_CONFIG.get().perf.common.darkMode;
darkMode &&
win.webContents.executeJavaScript(
`document.body.classList.add("dark");window.rubick.theme="dark"`
);
win.setBrowserView(view);
win.webContents.executeJavaScript(
`window.initDetach(${JSON.stringify(pluginInfo)})`
@@ -64,6 +75,19 @@ export default () => {
const getWindow = () => win;
const operation = {
minimize: () => {
win.focus();
win.minimize();
},
maximize: () => {
win.isMaximized() ? win.unmaximize() : win.maximize();
},
close: () => {
win.close();
},
};
return {
init,
getWindow,

View File

@@ -1,4 +1,4 @@
import main from "./main";
import runner from "./runner";
import detach from "./detach";
import main from './main';
import runner from './runner';
import detach from './detach';
export { main, runner, detach };

View File

@@ -1,6 +1,7 @@
import { app, BrowserWindow, protocol } from "electron";
import path from "path";
import { createProtocol } from "vue-cli-plugin-electron-builder/lib";
import { app, BrowserWindow, protocol, nativeTheme } from 'electron';
import path from 'path';
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib';
import versonHandler from '../common/versionHandler';
export default () => {
let win: any;
@@ -15,9 +16,10 @@ export default () => {
resizable: true,
width: 800,
frame: false,
title: "拉比克",
title: '拉比克',
show: false,
skipTaskbar: true,
backgroundColor: nativeTheme.shouldUseDarkColors ? '#1c1c28' : '#fff',
webPreferences: {
webSecurity: false,
enableRemoteModule: true,
@@ -25,40 +27,41 @@ export default () => {
contextIsolation: false,
webviewTag: true,
nodeIntegration: true,
preload: path.join(__static, "preload.js")
}
preload: path.join(__static, 'preload.js'),
},
});
if (process.env.WEBPACK_DEV_SERVER_URL) {
// Load the url of the dev server if in development mode
win.loadURL(process.env.WEBPACK_DEV_SERVER_URL as string);
} else {
createProtocol("app");
createProtocol('app');
// Load the index.html when not in development
win.loadURL("app://./index.html");
win.loadURL('app://./index.html');
}
protocol.interceptFileProtocol("image", (req, callback) => {
protocol.interceptFileProtocol('image', (req, callback) => {
const url = req.url.substr(8);
callback(decodeURI(url));
});
win.on("closed", () => {
win.on('closed', () => {
win = undefined;
});
win.on("show", () => {
win.on('show', () => {
win.webContents.executeJavaScript(
`window.rubick && window.rubick.hooks && typeof window.rubick.hooks.onShow === "function" && window.rubick.hooks.onShow()`
);
versonHandler.checkUpdate();
// win.webContents.openDevTools();
});
win.on("hide", () => {
win.on('hide', () => {
win.webContents.executeJavaScript(
`window.rubick && window.rubick.hooks && typeof window.rubick.hooks.onHide === "function" && window.rubick.hooks.onHide()`
);
});
// 判断失焦是否隐藏
win.on("blur", () => {
win.on('blur', () => {
const config = { ...global.OP_CONFIG.get() };
if (config.perf.common.hideOnBlur) {
win.hide();
@@ -70,6 +73,6 @@ export default () => {
return {
init,
getWindow
getWindow,
};
};

View File

@@ -78,6 +78,7 @@ export default () => {
window.setBrowserView(view);
view.webContents.loadURL(pluginIndexPath);
view.webContents.once('dom-ready', () => {
if (!view) return;
const height = pluginSetting && pluginSetting.height;
window.setSize(800, height || 660);
view.setBounds({ x: 0, y: 60, width: 800, height: height || 600 });

View File

@@ -69,7 +69,7 @@ const registerHotKey = (mainWindow: BrowserWindow): void => {
)
);
mainWindow.setAlwaysOnTop(true);
mainWindow.setAlwaysOnTop(false);
mainWindow.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true });
mainWindow.focus();
mainWindow.setVisibleOnAllWorkspaces(false, {
@@ -84,7 +84,7 @@ const registerHotKey = (mainWindow: BrowserWindow): void => {
data &&
new Notification({
title: '截图完成',
body: '截图存储到系统剪贴板中',
body: '截图存储到系统剪贴板中',
}).show();
});
});

View File

@@ -1,26 +1,24 @@
/* eslint-disable */
import path from "path";
import fs from "fs";
import { PLUGIN_INSTALL_DIR } from "@/common/constans/main";
import path from 'path';
import fs from 'fs';
import { PLUGIN_INSTALL_DIR } from '@/common/constans/main';
export default () => {
// 读取所有插件
const totalPlugins = global.LOCAL_PLUGINS.getLocalPlugins();
let systemPlugins = totalPlugins.filter((plugin) => plugin.pluginType === "system");
let systemPlugins = totalPlugins.filter(
(plugin) => plugin.pluginType === 'system'
);
systemPlugins = systemPlugins.map((plugin) => {
const pluginPath = path.resolve(
PLUGIN_INSTALL_DIR,
"node_modules",
'node_modules',
plugin.name
);
return {
...plugin,
indexPath: path.join(
pluginPath,
"./",
plugin.entry
),
}
indexPath: path.join(pluginPath, './', plugin.entry),
};
});
const hooks = {
@@ -39,14 +37,14 @@ export default () => {
// @ts-ignore
hooks.onReady.forEach((hook: any) => {
try {
hook(ctx);
hook && hook(ctx);
} catch (e) {
console.log(e);
}
});
}
};
return {
triggerReadyHooks
triggerReadyHooks,
};
}
};

View File

@@ -0,0 +1,99 @@
import { dialog } from 'electron';
import { autoUpdater } from 'electron-updater';
import pkg from '../../../package.json';
import API from './api';
import commonConst from '@/common/utils/commonConst';
import { main } from '../browsers';
import { app } from 'electron';
class VersionHandler {
private lastestVersion: string;
private currentVersion: string;
private releaseNotes: string;
private isUpdate: boolean;
constructor() {
this.lastestVersion = '';
this.currentVersion = pkg.version;
this.releaseNotes = '';
this.isUpdate = false;
autoUpdater.autoDownload = false;
autoUpdater.autoInstallOnAppQuit = false;
}
checkForMacAndWindows() {
let sendUpdateMsg = false;
autoUpdater.removeAllListeners();
// update-available 会触发多次,限制只通知一次
autoUpdater.checkForUpdates();
autoUpdater.on('download-progress', ({ percent }) => {
console.log('下载进度', percent);
// if (percent < 50) {
// }
this.isUpdate = true;
});
autoUpdater.on('update-available', (info) => {
if (sendUpdateMsg) return;
const { version, releaseName = 'normal', releaseNotes } = info;
this.lastestVersion = version;
sendUpdateMsg = true;
autoUpdater.on('update-downloaded', () => {
console.log('下载完成');
this.isUpdate = false;
if (releaseName === 'major') {
autoUpdater.quitAndInstall(true, true);
}
const mainWindow = main().getWindow();
dialog
.showMessageBox(mainWindow, {
title: '版本更新',
message: `发现新版本${this.lastestVersion},是否更新\n\n${releaseNotes}`,
type: 'info',
buttons: ['稍后提示', '立即更新'],
})
.then(({ response }) => {
console.log(response);
if (response === 1) {
this.update();
}
});
});
// 自动下载安装包
if (!this.isUpdate) {
autoUpdater.downloadUpdate();
console.log('download');
}
});
autoUpdater.on('update-not-available', (info) => {
if (sendUpdateMsg) return;
sendUpdateMsg = true;
});
autoUpdater.on('error', () => {
this.isUpdate = false;
});
}
checkUpdate(): void {
this.checkForMacAndWindows();
}
update() {
let sendUpdateMsg = false;
this.checkUpdate();
autoUpdater.on('update-downloaded', () => {
if (sendUpdateMsg) return;
sendUpdateMsg = true;
this.isUpdate = false;
autoUpdater.quitAndInstall(true, true);
// App.quit();
});
}
}
export default new VersionHandler();

View File

@@ -60,7 +60,7 @@ const renderTitle = (title) => {
if (!props.searchValue) return title;
const result = title.toLowerCase().split(props.searchValue.toLowerCase());
if (result && result.length > 1) {
return `<div>${result[0]}<span style='color: red'>${props.searchValue}</span>${result[1]}</div>`;
return `<div>${result[0]}<span style='color: var(--ant-error-color)'>${props.searchValue}</span>${result[1]}</div>`;
} else {
return `<div>${result[0]}</div>`;
}
@@ -109,6 +109,7 @@ const sort = (options) => {
background: var(--color-body-bg);
color: var(--color-text-content);
border-color: var(--color-border-light);
border-bottom: 1px solid var(--color-border-light);
&.active {
background: var(--color-list-hover);
}

View File

@@ -22,7 +22,7 @@
@keydown.up="e => keydownEvent(e, 'up')"
@keydown="e => checkNeedInit(e)"
:value="searchValue"
:placeholder="placeholder || 'Hi, Rubick2'"
:placeholder="placeholder || config.perf.custom.placeholder"
@keypress.enter="e => keydownEvent(e, 'enter')"
@keypress.space="e => keydownEvent(e, 'space')"
@focus="emit('focus')"
@@ -43,7 +43,7 @@
<img class="icon-tool" :src="currentPlugin.logo" />
</div>
<div @click="() => emit('openMenu')" v-else class="rubick-logo">
<img src="../assets/logo.png" />
<img :src="config.perf.custom.logo" />
</div>
</div>
</template>
@@ -249,7 +249,7 @@ window.rubick.hooks.onHide = () => {
height: 32px;
position: relative;
color: #fff;
background-color: rgba(255, 78, 164, 0.8);
background-color: var(--ant-primary-color);
display: inline-flex;
align-items: center;
margin-right: 1px;
@@ -305,7 +305,7 @@ window.rubick.hooks.onHide = () => {
color: var(--color-text-content);
}
.loading {
color: #ff4ea4;
color: var(--ant-primary-color);
position: absolute;
top: 0;
left: 0;

View File

@@ -1,7 +1,25 @@
import { createApp } from 'vue';
import { Button, List, Spin, Input, Avatar, Tag } from 'ant-design-vue';
import {
Button,
List,
Spin,
Input,
Avatar,
Tag,
ConfigProvider,
} from 'ant-design-vue';
import App from './App.vue';
import 'ant-design-vue/dist/antd.variable.min.css';
const { remote } = window.require('electron');
const { perf } = remote.getGlobal('OP_CONFIG').get();
ConfigProvider.config({
theme: perf.custom || {},
});
createApp(App)
.use(Button)
.use(List)

View File

@@ -33,6 +33,17 @@ module.exports = {
directories: {
output: 'build',
},
releaseInfo: {
releaseName: 'normal', // normal 弹窗 / major 强制更新
releaseNotesFile: './release/releaseNotes.md',
},
publish: [
{
provider: 'github',
owner: 'rubickCenter',
repo: 'rubick',
},
],
// files: ["dist_electron/**/*"],
dmg: {
contents: [
@@ -51,7 +62,12 @@ module.exports = {
},
mac: {
icon: 'public/icons/icon.icns',
target: ['pkg'],
target: ['dmg', 'zip'],
gatekeeperAssess: false,
entitlementsInherit: './release/entitlements.mac.plist',
entitlements: './release/entitlements.mac.plist',
hardenedRuntime: true,
category: 'public.app-category.developer-tools',
extendInfo: {
LSUIElement: 1,
},

296
yarn.lock
View File

@@ -36,9 +36,9 @@
resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz#8630da8eb4471a4aabdaed7d1ff6a97dcb2cf05a"
integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==
"@ant-design/icons-vue@^6.0.0":
"@ant-design/icons-vue@^6.1.0":
version "6.1.0"
resolved "https://registry.yarnpkg.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz#f9324fdc0eb4cea943cf626d2bf3db9a4ff4c074"
resolved "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz#f9324fdc0eb4cea943cf626d2bf3db9a4ff4c074"
integrity sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==
dependencies:
"@ant-design/colors" "^6.0.0"
@@ -1025,6 +1025,19 @@
dir-compare "^2.4.0"
fs-extra "^9.0.1"
"@electron/universal@1.2.1":
version "1.2.1"
resolved "https://registry.npmmirror.com/@electron/universal/-/universal-1.2.1.tgz#3c2c4ff37063a4e9ab1e6ff57db0bc619bc82339"
integrity sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==
dependencies:
"@malept/cross-spawn-promise" "^1.1.0"
asar "^3.1.0"
debug "^4.3.1"
dir-compare "^2.4.0"
fs-extra "^9.0.1"
minimatch "^3.0.4"
plist "^3.0.4"
"@gar/promisify@^1.0.1":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
@@ -1423,6 +1436,11 @@
dependencies:
"@types/node" "*"
"@types/semver@^7.3.6":
version "7.5.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a"
integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==
"@types/semver@^7.3.9":
version "7.3.10"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.10.tgz#5f19ee40cbeff87d916eedc8c2bfe2305d957f73"
@@ -2295,22 +2313,23 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies:
color-convert "^2.0.1"
ant-design-vue@^2.2.8:
version "2.2.8"
resolved "https://registry.yarnpkg.com/ant-design-vue/-/ant-design-vue-2.2.8.tgz#fa87cf6842d8ee9a0d8af393ff4099ecc4072f2b"
integrity sha512-3graq9/gCfJQs6hznrHV6sa9oDmk/D1H3Oo0vLdVpPS/I61fZPk8NEyNKCHpNA6fT2cx6xx9U3QS63uuyikg/Q==
ant-design-vue@3.2.14:
version "3.2.14"
resolved "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.14.tgz#04684ef9b855380059582a76bc9dd3c937f0fcc3"
integrity sha512-v4qeZGpmONUOvz6lyp/fJVoVthqV16CiG1rGrUZVB2IgRjCy59y2/F+RA67ZSJmjGIvqsE+tLoPmjJ0HVXg9XA==
dependencies:
"@ant-design/icons-vue" "^6.0.0"
"@ant-design/colors" "^6.0.0"
"@ant-design/icons-vue" "^6.1.0"
"@babel/runtime" "^7.10.5"
"@ctrl/tinycolor" "^3.4.0"
"@simonwep/pickr" "~1.8.0"
array-tree-filter "^2.1.0"
async-validator "^3.3.0"
async-validator "^4.0.0"
dayjs "^1.10.5"
dom-align "^1.12.1"
dom-scroll-into-view "^2.0.0"
lodash "^4.17.21"
lodash-es "^4.17.15"
moment "^2.27.0"
omit.js "^2.0.0"
resize-observer-polyfill "^1.5.1"
scroll-into-view-if-needed "^2.2.25"
shallow-equal "^1.0.0"
@@ -2343,6 +2362,11 @@ app-builder-bin@3.7.1:
resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.7.1.tgz#cb0825c5e12efc85b196ac3ed9c89f076c61040e"
integrity sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==
app-builder-bin@4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0"
integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==
app-builder-lib@22.13.1:
version "22.13.1"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.13.1.tgz#9beee0dd3df32fcce303b933d187bf986efe3381"
@@ -2373,35 +2397,36 @@ app-builder-lib@22.13.1:
semver "^7.3.5"
temp-file "^3.4.0"
app-builder-lib@22.14.13:
version "22.14.13"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.14.13.tgz#c1f5b6afc86596357598bb90b69eef06c7c2eeb3"
integrity sha512-SufmrtxU+D0Tn948fjEwAOlCN9757UXLkzzTWXMwZKR/5hisvgqeeBepWfphMIE6OkDGz0fbzEhL1P2Pty4XMg==
app-builder-lib@23.6.0:
version "23.6.0"
resolved "https://registry.npmmirror.com/app-builder-lib/-/app-builder-lib-23.6.0.tgz#03cade02838c077db99d86212d61c5fc1d6da1a8"
integrity sha512-dQYDuqm/rmy8GSCE6Xl/3ShJg6Ab4bZJMT8KaTKGzT436gl1DN4REP3FCWfXoh75qGTJ+u+WsdnnpO9Jl8nyMA==
dependencies:
"7zip-bin" "~5.1.1"
"@develar/schema-utils" "~2.6.5"
"@electron/universal" "1.0.5"
"@electron/universal" "1.2.1"
"@malept/flatpak-bundler" "^0.4.0"
async-exit-hook "^2.0.1"
bluebird-lst "^1.0.9"
builder-util "22.14.13"
builder-util-runtime "8.9.2"
builder-util "23.6.0"
builder-util-runtime "9.1.1"
chromium-pickle-js "^0.2.0"
debug "^4.3.2"
ejs "^3.1.6"
electron-osx-sign "^0.5.0"
electron-publish "22.14.13"
debug "^4.3.4"
ejs "^3.1.7"
electron-osx-sign "^0.6.0"
electron-publish "23.6.0"
form-data "^4.0.0"
fs-extra "^10.0.0"
hosted-git-info "^4.0.2"
fs-extra "^10.1.0"
hosted-git-info "^4.1.0"
is-ci "^3.0.0"
isbinaryfile "^4.0.8"
isbinaryfile "^4.0.10"
js-yaml "^4.1.0"
lazy-val "^1.0.5"
minimatch "^3.0.4"
minimatch "^3.1.2"
read-config-file "6.2.0"
sanitize-filename "^1.6.3"
semver "^7.3.5"
semver "^7.3.7"
tar "^6.1.11"
temp-file "^3.4.0"
aproba@^1.1.1:
@@ -2494,9 +2519,9 @@ array.prototype.reduce@^1.0.4:
es-array-method-boxes-properly "^1.0.0"
is-string "^1.0.7"
asar@^3.0.3:
asar@^3.0.3, asar@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221"
resolved "https://registry.npmmirror.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221"
integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg==
dependencies:
chromium-pickle-js "^0.2.0"
@@ -2566,10 +2591,10 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async-validator@^3.3.0:
version "3.5.2"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.5.2.tgz#68e866a96824e8b2694ff7a831c1a25c44d5e500"
integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==
async-validator@^4.0.0:
version "4.2.5"
resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339"
integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
async@^2.6.4:
version "2.6.4"
@@ -3030,6 +3055,14 @@ builder-util-runtime@8.9.2:
debug "^4.3.2"
sax "^1.2.4"
builder-util-runtime@9.1.1:
version "9.1.1"
resolved "https://registry.npmmirror.com/builder-util-runtime/-/builder-util-runtime-9.1.1.tgz#2da7b34e78a64ad14ccd070d6eed4662d893bd60"
integrity sha512-azRhYLEoDvRDR8Dhis4JatELC/jUvYjm4cVSj7n9dauGTOM2eeNn9KS0z6YA6oDsjI1xphjNbY6PZZeHPzzqaw==
dependencies:
debug "^4.3.4"
sax "^1.2.4"
builder-util@22.13.1:
version "22.13.1"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.13.1.tgz#fb2165c725b9405f0605a765cf91ec1870995ada"
@@ -3051,20 +3084,20 @@ builder-util@22.13.1:
stat-mode "^1.0.0"
temp-file "^3.4.0"
builder-util@22.14.13:
version "22.14.13"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.14.13.tgz#41b5b7b4ee53aff4e09cc007fb144522598f3ce6"
integrity sha512-oePC/qrrUuerhmH5iaCJzPRAKlSBylrhzuAJmRQClTyWnZUv6jbaHh+VoHMbEiE661wrj2S2aV7/bQh12cj1OA==
builder-util@23.6.0:
version "23.6.0"
resolved "https://registry.npmmirror.com/builder-util/-/builder-util-23.6.0.tgz#1880ec6da7da3fd6fa19b8bd71df7f39e8d17dd9"
integrity sha512-QiQHweYsh8o+U/KNCZFSvISRnvRctb8m/2rB2I1JdByzvNKxPeFLlHFRPQRXab6aYeXc18j9LpsDLJ3sGQmWTQ==
dependencies:
"7zip-bin" "~5.1.1"
"@types/debug" "^4.1.6"
"@types/fs-extra" "^9.0.11"
app-builder-bin "3.7.1"
app-builder-bin "4.0.0"
bluebird-lst "^1.0.9"
builder-util-runtime "8.9.2"
builder-util-runtime "9.1.1"
chalk "^4.1.1"
cross-spawn "^7.0.3"
debug "^4.3.2"
debug "^4.3.4"
fs-extra "^10.0.0"
http-proxy-agent "^5.0.0"
https-proxy-agent "^5.0.0"
@@ -3507,6 +3540,15 @@ cliui@^7.0.2:
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
cliui@^8.0.1:
version "8.0.1"
resolved "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
dependencies:
string-width "^4.2.0"
strip-ansi "^6.0.1"
wrap-ansi "^7.0.0"
clone-buffer@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
@@ -4123,6 +4165,11 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
dayjs@^1.10.5:
version "1.11.9"
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a"
integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -4130,7 +4177,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
dependencies:
ms "2.0.0"
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -4373,23 +4420,23 @@ dmg-builder@22.13.1:
optionalDependencies:
dmg-license "^1.0.9"
dmg-builder@22.14.13:
version "22.14.13"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.14.13.tgz#cc613f3c18e889b8777d525991fd52f50a564f8c"
integrity sha512-xNOugB6AbIRETeU2uID15sUfjdZZcKdxK8xkFnwIggsM00PJ12JxpLNPTjcRoUnfwj3WrPjilrO64vRMwNItQg==
dmg-builder@23.6.0:
version "23.6.0"
resolved "https://registry.npmmirror.com/dmg-builder/-/dmg-builder-23.6.0.tgz#d39d3871bce996f16c07d2cafe922d6ecbb2a948"
integrity sha512-jFZvY1JohyHarIAlTbfQOk+HnceGjjAdFjVn3n8xlDWKsYNqbO4muca6qXEZTfGXeQMG7TYim6CeS5XKSfSsGA==
dependencies:
app-builder-lib "22.14.13"
builder-util "22.14.13"
builder-util-runtime "8.9.2"
app-builder-lib "23.6.0"
builder-util "23.6.0"
builder-util-runtime "9.1.1"
fs-extra "^10.0.0"
iconv-lite "^0.6.2"
js-yaml "^4.1.0"
optionalDependencies:
dmg-license "^1.0.9"
dmg-license "^1.0.11"
dmg-license@^1.0.9:
dmg-license@^1.0.11, dmg-license@^1.0.9:
version "1.0.11"
resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a"
resolved "https://registry.npmmirror.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a"
integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==
dependencies:
"@types/plist" "^3.0.1"
@@ -4588,6 +4635,13 @@ ejs@^3.1.6:
dependencies:
jake "^10.8.5"
ejs@^3.1.7:
version "3.1.9"
resolved "https://registry.npmmirror.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361"
integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
dependencies:
jake "^10.8.5"
electron-builder@22.13.1:
version "22.13.1"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.13.1.tgz#419b2736c0b08f54cb024bc02cfae6b878b34fc3"
@@ -4606,23 +4660,23 @@ electron-builder@22.13.1:
update-notifier "^5.1.0"
yargs "^17.0.1"
electron-builder@^22.2.0:
version "22.14.13"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.14.13.tgz#fd40564685cf5422a8f8d667940af3d3776f4fb8"
integrity sha512-3fgLxqF2TXVKiUPeg74O4V3l0l3j7ERLazo8sUbRkApw0+4iVAf2BJkHsHMaXiigsgCoEzK/F4/rB5rne/VAnw==
electron-builder@^22.2.0, electron-builder@^23.0.3:
version "23.6.0"
resolved "https://registry.npmmirror.com/electron-builder/-/electron-builder-23.6.0.tgz#c79050cbdce90ed96c5feb67c34e9e0a21b5331b"
integrity sha512-y8D4zO+HXGCNxFBV/JlyhFnoQ0Y0K7/sFH+XwIbj47pqaW8S6PGYQbjoObolKBR1ddQFPt4rwp4CnwMJrW3HAw==
dependencies:
"@types/yargs" "^17.0.1"
app-builder-lib "22.14.13"
builder-util "22.14.13"
builder-util-runtime "8.9.2"
app-builder-lib "23.6.0"
builder-util "23.6.0"
builder-util-runtime "9.1.1"
chalk "^4.1.1"
dmg-builder "22.14.13"
dmg-builder "23.6.0"
fs-extra "^10.0.0"
is-ci "^3.0.0"
lazy-val "^1.0.5"
read-config-file "6.2.0"
update-notifier "^5.1.0"
yargs "^17.0.1"
simple-update-notifier "^1.0.7"
yargs "^17.5.1"
electron-clipboard-ex@^1.3.3:
version "1.3.3"
@@ -4654,6 +4708,18 @@ electron-osx-sign@^0.5.0:
minimist "^1.2.0"
plist "^3.0.1"
electron-osx-sign@^0.6.0:
version "0.6.0"
resolved "https://registry.npmmirror.com/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz#9b69c191d471d9458ef5b1e4fdd52baa059f1bb8"
integrity sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg==
dependencies:
bluebird "^3.5.0"
compare-version "^0.1.2"
debug "^2.6.8"
isbinaryfile "^3.0.2"
minimist "^1.2.0"
plist "^3.0.1"
electron-publish@22.13.1:
version "22.13.1"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.13.1.tgz#7d3aedf988f995c149cc620aef0772559342ea03"
@@ -4667,14 +4733,14 @@ electron-publish@22.13.1:
lazy-val "^1.0.5"
mime "^2.5.2"
electron-publish@22.14.13:
version "22.14.13"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.14.13.tgz#8b71e6975af8cc6ac5b21f293ade23f8704047c7"
integrity sha512-0oP3QiNj3e8ewOaEpEJV/o6Zrmy2VarVvZ/bH7kyO/S/aJf9x8vQsKVWpsdmSiZ5DJEHgarFIXrnO0ZQf0P9iQ==
electron-publish@23.6.0:
version "23.6.0"
resolved "https://registry.npmmirror.com/electron-publish/-/electron-publish-23.6.0.tgz#ac9b469e0b07752eb89357dd660e5fb10b3d1ce9"
integrity sha512-jPj3y+eIZQJF/+t5SLvsI5eS4mazCbNYqatv5JihbqOstIM13k0d1Z3vAWntvtt13Itl61SO6seicWdioOU5dg==
dependencies:
"@types/fs-extra" "^9.0.11"
builder-util "22.14.13"
builder-util-runtime "8.9.2"
builder-util "23.6.0"
builder-util-runtime "9.1.1"
chalk "^4.1.1"
fs-extra "^10.0.0"
lazy-val "^1.0.5"
@@ -4685,6 +4751,20 @@ electron-to-chromium@^1.4.202:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz#afaa8b58313807501312d598d99b953568d60f91"
integrity sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==
electron-updater@^4.6.5:
version "4.6.5"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-4.6.5.tgz#e9a75458bbfd6bb41a58a829839e150ad2eb2d3d"
integrity sha512-kdTly8O9mSZfm9fslc1mnCY+mYOeaYRy7ERa2Fed240u01BKll3aiupzkd07qKw69KvhBSzuHroIW3mF0D8DWA==
dependencies:
"@types/semver" "^7.3.6"
builder-util-runtime "8.9.2"
fs-extra "^10.0.0"
js-yaml "^4.1.0"
lazy-val "^1.0.5"
lodash.escaperegexp "^4.1.2"
lodash.isequal "^4.5.0"
semver "^7.3.5"
electron@^13.0.0:
version "13.6.9"
resolved "https://registry.yarnpkg.com/electron/-/electron-13.6.9.tgz#7bd83cc1662ceaaa09dcd132a7b507cec888b028"
@@ -5597,7 +5677,7 @@ from2@^2.1.0:
inherits "^2.0.1"
readable-stream "^2.0.0"
fs-extra@^10.0.0:
fs-extra@^10.0.0, fs-extra@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
@@ -6126,9 +6206,9 @@ hosted-git-info@^2.1.4:
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
hosted-git-info@^4.0.2:
hosted-git-info@^4.0.2, hosted-git-info@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
dependencies:
lru-cache "^6.0.0"
@@ -6934,9 +7014,9 @@ isbinaryfile@^3.0.2:
dependencies:
buffer-alloc "^1.2.0"
isbinaryfile@^4.0.8:
isbinaryfile@^4.0.10, isbinaryfile@^4.0.8:
version "4.0.10"
resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
resolved "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3"
integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==
isexe@^2.0.0:
@@ -7399,6 +7479,16 @@ lodash.defaultsdeep@^4.6.1:
resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6"
integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
lodash.escaperegexp@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==
lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
lodash.kebabcase@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
@@ -7724,7 +7814,7 @@ minimatch@3.0.4:
dependencies:
brace-expansion "^1.1.7"
minimatch@^3.0.4, minimatch@^3.1.1:
minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -7771,6 +7861,11 @@ minipass@^3.0.0, minipass@^3.1.1:
dependencies:
yallist "^4.0.0"
minipass@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
minizlib@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
@@ -7815,11 +7910,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
moment@^2.27.0:
version "2.29.4"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
move-concurrently@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@@ -8202,11 +8292,6 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
omit.js@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f"
integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==
on-finished@2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
@@ -9763,9 +9848,9 @@ semver-diff@^3.1.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
semver@7.0.0:
semver@7.0.0, semver@~7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
resolved "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
@@ -9780,6 +9865,13 @@ semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
dependencies:
lru-cache "^6.0.0"
semver@^7.3.7:
version "7.5.3"
resolved "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e"
integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==
dependencies:
lru-cache "^6.0.0"
send@0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
@@ -9950,6 +10042,13 @@ simple-swizzle@^0.2.2:
dependencies:
is-arrayish "^0.3.1"
simple-update-notifier@^1.0.7:
version "1.1.0"
resolved "https://registry.npmmirror.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82"
integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==
dependencies:
semver "~7.0.0"
slash@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
@@ -10490,6 +10589,18 @@ tar@^6.0.2:
mkdirp "^1.0.3"
yallist "^4.0.0"
tar@^6.1.11:
version "6.1.15"
resolved "https://registry.npmmirror.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69"
integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==
dependencies:
chownr "^2.0.0"
fs-minipass "^2.0.0"
minipass "^5.0.0"
minizlib "^2.1.1"
mkdirp "^1.0.3"
yallist "^4.0.0"
temp-file@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.4.0.tgz#766ea28911c683996c248ef1a20eea04d51652c7"
@@ -11719,9 +11830,9 @@ yargs-parser@^20.2.2:
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
yargs-parser@^21.0.0:
yargs-parser@^21.0.0, yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
yargs@^13.3.2:
@@ -11783,6 +11894,19 @@ yargs@^17.0.1:
y18n "^5.0.5"
yargs-parser "^21.0.0"
yargs@^17.5.1:
version "17.7.2"
resolved "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
dependencies:
cliui "^8.0.1"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
string-width "^4.2.3"
y18n "^5.0.5"
yargs-parser "^21.1.1"
yauzl@^2.10.0:
version "2.10.0"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"