Merge pull request #218 from rubickCenter/feat/v3.0.0

Feat/v3.0.0
This commit is contained in:
木偶 2023-09-01 18:00:22 +08:00 committed by GitHub
commit 25dd314042
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 462 additions and 329 deletions

View File

@ -1,16 +1,16 @@
const {remote} = require("electron"); const remote = require('@electron/remote');
window.market = { window.market = {
getLocalPlugins() { getLocalPlugins() {
return remote.getGlobal("LOCAL_PLUGINS").getLocalPlugins(); return remote.getGlobal('LOCAL_PLUGINS').getLocalPlugins();
}, },
downloadPlugin(plugin) { downloadPlugin(plugin) {
return remote.getGlobal("LOCAL_PLUGINS").downloadPlugin(plugin); return remote.getGlobal('LOCAL_PLUGINS').downloadPlugin(plugin);
}, },
deletePlugin(plugin) { deletePlugin(plugin) {
return remote.getGlobal("LOCAL_PLUGINS").deletePlugin(plugin); return remote.getGlobal('LOCAL_PLUGINS').deletePlugin(plugin);
}, },
refreshPlugin(plugin) { refreshPlugin(plugin) {
return remote.getGlobal("LOCAL_PLUGINS").refreshPlugin(plugin); return remote.getGlobal('LOCAL_PLUGINS').refreshPlugin(plugin);
}, },
}; };

View File

@ -69,6 +69,7 @@ init();
} }
.main-container { .main-container {
-webkit-app-region: no-drag;
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
background: var(--color-body-bg); background: var(--color-body-bg);

22
feature/src/confOp.ts Normal file
View File

@ -0,0 +1,22 @@
const LOCAL_CONFIG_KEY = 'rubick-local-config';
const localConfig = {
getConfig(): Promise<any> {
const data: any = window.rubick.db.get(LOCAL_CONFIG_KEY) || {};
return data.data;
},
setConfig(data: any) {
const localConfig: any = window.rubick.db.get(LOCAL_CONFIG_KEY) || {};
window.rubick.db.put({
_id: LOCAL_CONFIG_KEY,
_rev: localConfig._rev,
data: {
...localConfig.data,
...data,
},
});
},
};
export default localConfig;

View File

@ -1,10 +1,7 @@
import { createI18n } from 'vue-i18n'; import { createI18n } from 'vue-i18n';
import messages from './langs'; import messages from './langs';
const { remote } = window.require('electron'); import localConfig from '@/confOp';
const { perf } = remote.getGlobal('OP_CONFIG').get(); const { perf }: any = localConfig.getConfig();
console.log(messages);
console.log(perf);
// 2. Create i18n instance with options // 2. Create i18n instance with options
const i18n = createI18n({ const i18n = createI18n({

View File

@ -6,13 +6,12 @@ import store from './store';
import './assets/ant-reset.less'; import './assets/ant-reset.less';
import 'ant-design-vue/dist/antd.variable.min.css'; import 'ant-design-vue/dist/antd.variable.min.css';
import registerI18n from './languages/i18n'; import registerI18n from './languages/i18n';
import localConfig from './confOp';
const { remote } = window.require('electron'); const config: any = localConfig.getConfig();
const { perf } = remote.getGlobal('OP_CONFIG').get();
ConfigProvider.config({ ConfigProvider.config({
theme: perf.custom || {}, theme: config.perf.custom || {},
}); });
createApp(App).use(registerI18n).use(store).use(Antd).use(router).mount('#app'); createApp(App).use(registerI18n).use(store).use(Antd).use(router).mount('#app');

View File

@ -94,7 +94,7 @@
:title="$t('feature.installed.removeFromPanel')" :title="$t('feature.installed.removeFromPanel')"
> >
<MinusCircleOutlined <MinusCircleOutlined
@click="removePluginToSuperPanel(cmd)" @click="removePluginToSuperPanel({ cmd })"
/> />
</a-tooltip> </a-tooltip>
</template> </template>
@ -121,11 +121,11 @@ import { message } from 'ant-design-vue';
const { ipcRenderer } = window.require('electron'); const { ipcRenderer } = window.require('electron');
const { remote } = window.require('electron'); const remote = window.require('@electron/remote');
const fs = window.require('fs'); const fs = window.require('fs');
const md = new MarkdownIt(); const md = new MarkdownIt();
const appPath = remote.app.getPath('cache'); const appPath = remote.app.getPath('userData');
const baseDir = path.join(appPath, './rubick-plugins'); const baseDir = path.join(appPath, './rubick-plugins');
const store = useStore(); const store = useStore();
@ -145,9 +145,9 @@ const pluginDetail = computed(() => {
}); });
const superPanelPlugins = ref( const superPanelPlugins = ref(
window.rubick.db.get('super-panel-plugins') || { window.rubick.db.get('super-panel-user-plugins') || {
data: [], data: [],
_id: 'super-panel-plugins', _id: 'super-panel-user-plugins',
} }
); );
@ -165,13 +165,13 @@ const addCmdToSuperPanel = ({ cmd, code }) => {
window.rubick.db.put(toRaw(superPanelPlugins.value)); window.rubick.db.put(toRaw(superPanelPlugins.value));
}; };
const removePluginToSuperPanel = (cmd) => { const removePluginToSuperPanel = ({ cmd, name }) => {
superPanelPlugins.value.data = toRaw(superPanelPlugins.value).data.filter( superPanelPlugins.value.data = toRaw(superPanelPlugins.value).data.filter(
(item) => { (item) => {
if (name) return item.name !== name;
return item.cmd !== cmd; return item.cmd !== cmd;
} }
); );
console.log(toRaw(superPanelPlugins.value));
window.rubick.db.put(toRaw(superPanelPlugins.value)); window.rubick.db.put(toRaw(superPanelPlugins.value));
}; };
@ -209,7 +209,7 @@ const readme = computed(() => {
baseDir, baseDir,
'node_modules', 'node_modules',
pluginDetail.value.name, pluginDetail.value.name,
'readme.md' 'README.md'
); );
if (fs.existsSync(readmePath)) { if (fs.existsSync(readmePath)) {
const str = fs.readFileSync(readmePath, 'utf-8'); const str = fs.readFileSync(readmePath, 'utf-8');
@ -225,9 +225,12 @@ const deletePlugin = async (plugin) => {
message.error('卸载超时,请重试!'); message.error('卸载超时,请重试!');
}, 20000); }, 20000);
await window.market.deletePlugin(plugin); await window.market.deletePlugin(plugin);
removePluginToSuperPanel({ name: plugin.name });
updateLocalPlugin(); updateLocalPlugin();
clearTimeout(timer); clearTimeout(timer);
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -231,19 +231,20 @@ import {
DatabaseOutlined, DatabaseOutlined,
MinusCircleOutlined, MinusCircleOutlined,
PlusCircleOutlined, PlusCircleOutlined,
FileAddOutlined,
UserOutlined, UserOutlined,
} from '@ant-design/icons-vue'; } from '@ant-design/icons-vue';
import debounce from 'lodash.debounce'; import debounce from 'lodash.debounce';
import { ref, reactive, watch, toRefs, computed, onMounted, toRaw } from 'vue'; import { ref, reactive, watch, toRefs, computed } from 'vue';
import keycodes from './keycode'; import keycodes from './keycode';
import Localhost from './localhost.vue'; import Localhost from './localhost.vue';
import SuperPanel from './super-panel.vue'; import SuperPanel from './super-panel.vue';
import UserInfo from './user-info'; import UserInfo from './user-info';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import localConfig from '@/confOp';
const { locale, t } = useI18n(); const { locale, t } = useI18n();
const { remote, ipcRenderer } = window.require('electron'); const { ipcRenderer } = window.require('electron');
const examples = [ const examples = [
{ {
@ -274,7 +275,7 @@ const tipText = computed(() => {
const currentSelect = ref(['userInfo']); const currentSelect = ref(['userInfo']);
const { perf, global: defaultGlobal } = remote.getGlobal('OP_CONFIG').get(); const { perf, global: defaultGlobal } = localConfig.getConfig();
state.shortCut = perf.shortCut; state.shortCut = perf.shortCut;
state.custom = perf.custom; state.custom = perf.custom;
@ -283,7 +284,7 @@ state.local = perf.local;
state.global = defaultGlobal; state.global = defaultGlobal;
const setConfig = debounce(() => { const setConfig = debounce(() => {
remote.getGlobal('OP_CONFIG').set( localConfig.setConfig(
JSON.parse( JSON.parse(
JSON.stringify({ JSON.stringify({
perf: { perf: {

View File

@ -122,30 +122,29 @@
</div> </div>
</div> </div>
</div> </div>
<div class="footer-btn"> <!-- <div class="footer-btn">-->
<a-button @click="reset" type="danger"> <!-- <a-button @click="reset" type="danger">-->
{{ $t('feature.settings.account.reset') }} <!-- {{ $t('feature.settings.account.reset') }}-->
</a-button> <!-- </a-button>-->
</div> <!-- </div>-->
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { reactive, ref, toRefs, watch } from 'vue'; 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 debounce from 'lodash.debounce';
import localConfig from '@/confOp';
import service from '../../assets/service'; import service from '../../assets/service';
const { remote, ipcRenderer } = window.require('electron'); const { ipcRenderer } = window.require('electron');
const state = reactive({ const state = reactive({
custom: {}, custom: {},
}); });
const { perf } = remote.getGlobal('OP_CONFIG').get(); const { perf } = localConfig.getConfig();
state.custom = perf.custom || {}; state.custom = perf.custom || {};
@ -156,7 +155,7 @@ const userInfo = ref(window.rubick.dbStorage.getItem('rubick-user-info'));
// }); // });
const setConfig = debounce(() => { const setConfig = debounce(() => {
remote.getGlobal('OP_CONFIG').set( localConfig.setConfig(
JSON.parse( JSON.parse(
JSON.stringify({ JSON.stringify({
perf: { perf: {
@ -181,17 +180,17 @@ const changeLogo = () => {
state.custom.logo = `file://${logoPath}`; state.custom.logo = `file://${logoPath}`;
}; };
const reset = () => { // const reset = () => {
Modal.warning({ // Modal.warning({
title: '确定恢复默认设置吗?', // title: '',
content: '回复后之前的设置将会被清空', // content: '',
onOk() { // onOk() {
const defaultcustom = remote.getGlobal('OP_CONFIG').getDefaultConfig() // const defaultcustom = remote.getGlobal('OP_CONFIG').getDefaultConfig()
.perf.custom; // .perf.custom;
state.custom = JSON.parse(JSON.stringify(defaultcustom)); // state.custom = JSON.parse(JSON.stringify(defaultcustom));
}, // },
}); // });
}; // };
</script> </script>
<style lang="less"> <style lang="less">

View File

@ -1,6 +1,6 @@
{ {
"name": "rubick", "name": "rubick",
"version": "2.4.5", "version": "3.0.0",
"author": "muwoo <2424880409@qq.com>", "author": "muwoo <2424880409@qq.com>",
"private": true, "private": true,
"scripts": { "scripts": {
@ -20,6 +20,7 @@
}, },
"dependencies": { "dependencies": {
"@better-scroll/core": "^2.4.2", "@better-scroll/core": "^2.4.2",
"@electron/remote": "^2.0.10",
"ant-design-vue": "3.2.14", "ant-design-vue": "3.2.14",
"axios": "^1.3.4", "axios": "^1.3.4",
"core-js": "^3.6.5", "core-js": "^3.6.5",
@ -52,7 +53,7 @@
"@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-prettier": "^6.0.0",
"@vue/eslint-config-typescript": "^7.0.0", "@vue/eslint-config-typescript": "^7.0.0",
"babel-plugin-import": "^1.13.3", "babel-plugin-import": "^1.13.3",
"electron": "^13.0.0", "electron": "26.0.0",
"electron-builder": "22.13.1", "electron-builder": "22.13.1",
"electron-devtools-installer": "^3.1.0", "electron-devtools-installer": "^3.1.0",
"eslint": "^6.7.2", "eslint": "^6.7.2",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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>feature</title><link href="css/app.518884da.css" rel="preload" as="style"><link href="css/chunk-vendors.7f9dcb72.css" rel="preload" as="style"><link href="js/app.e81c0c2f.js" rel="preload" as="script"><link href="js/chunk-vendors.cc39b888.js" rel="preload" as="script"><link href="css/chunk-vendors.7f9dcb72.css" rel="stylesheet"><link href="css/app.518884da.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but feature doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.cc39b888.js"></script><script src="js/app.e81c0c2f.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>feature</title><link href="css/app.4e3502cb.css" rel="preload" as="style"><link href="css/chunk-vendors.7f9dcb72.css" rel="preload" as="style"><link href="js/app.5fe607e9.js" rel="preload" as="script"><link href="js/chunk-vendors.73a23bae.js" rel="preload" as="script"><link href="css/chunk-vendors.7f9dcb72.css" rel="stylesheet"><link href="css/app.4e3502cb.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but feature doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.73a23bae.js"></script><script src="js/app.5fe607e9.js"></script></body></html>

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

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

@ -1,16 +1,16 @@
const {remote} = require("electron"); const remote = require('@electron/remote');
window.market = { window.market = {
getLocalPlugins() { getLocalPlugins() {
return remote.getGlobal("LOCAL_PLUGINS").getLocalPlugins(); return remote.getGlobal('LOCAL_PLUGINS').getLocalPlugins();
}, },
downloadPlugin(plugin) { downloadPlugin(plugin) {
return remote.getGlobal("LOCAL_PLUGINS").downloadPlugin(plugin); return remote.getGlobal('LOCAL_PLUGINS').downloadPlugin(plugin);
}, },
deletePlugin(plugin) { deletePlugin(plugin) {
return remote.getGlobal("LOCAL_PLUGINS").deletePlugin(plugin); return remote.getGlobal('LOCAL_PLUGINS').deletePlugin(plugin);
}, },
refreshPlugin(plugin) { refreshPlugin(plugin) {
return remote.getGlobal("LOCAL_PLUGINS").refreshPlugin(plugin); return remote.getGlobal('LOCAL_PLUGINS').refreshPlugin(plugin);
}, },
}; };

View File

@ -1,5 +1,5 @@
export default { export default {
version: 12, version: 0,
perf: { perf: {
custom: { custom: {
primaryColor: '#ff4ea4', primaryColor: '#ff4ea4',

View File

@ -1,89 +1,86 @@
import { app } from "electron"; import { app } from 'electron';
import path from "path"; import path from 'path';
const appPath = app.getPath("cache"); const appPath = app.getPath('userData');
console.log(appPath); const PLUGIN_INSTALL_DIR = path.join(appPath, './rubick-plugins');
const PLUGIN_INSTALL_DIR = path.join(appPath, "./rubick-plugins");
const DECODE_KEY = { const DECODE_KEY = {
Backspace: "Backspace", Backspace: 'Backspace',
Tab: "Tab", Tab: 'Tab',
Enter: "Enter", Enter: 'Enter',
MediaPlayPause: "MediaPlayPause", MediaPlayPause: 'MediaPlayPause',
Escape: "Escape", Escape: 'Escape',
Space: "Space", Space: 'Space',
PageUp: "PageUp", PageUp: 'PageUp',
PageDown: "PageDown", PageDown: 'PageDown',
End: "End", End: 'End',
Home: "Home", Home: 'Home',
ArrowLeft: "Left", ArrowLeft: 'Left',
ArrowUp: "Up", ArrowUp: 'Up',
ArrowRight: "Right", ArrowRight: 'Right',
ArrowDown: "Down", ArrowDown: 'Down',
PrintScreen: "PrintScreen", PrintScreen: 'PrintScreen',
Insert: "Insert", Insert: 'Insert',
Delete: "Delete", Delete: 'Delete',
Digit0: "0", Digit0: '0',
Digit1: "1", Digit1: '1',
Digit2: "2", Digit2: '2',
Digit3: "3", Digit3: '3',
Digit4: "4", Digit4: '4',
Digit5: "5", Digit5: '5',
Digit6: "6", Digit6: '6',
Digit7: "7", Digit7: '7',
Digit8: "8", Digit8: '8',
Digit9: "9", Digit9: '9',
KeyA: "A", KeyA: 'A',
KeyB: "B", KeyB: 'B',
KeyC: "C", KeyC: 'C',
KeyD: "D", KeyD: 'D',
KeyE: "E", KeyE: 'E',
KeyF: "F", KeyF: 'F',
KeyG: "G", KeyG: 'G',
KeyH: "H", KeyH: 'H',
KeyI: "I", KeyI: 'I',
KeyJ: "J", KeyJ: 'J',
KeyK: "K", KeyK: 'K',
KeyL: "L", KeyL: 'L',
KeyM: "M", KeyM: 'M',
KeyN: "N", KeyN: 'N',
KeyO: "O", KeyO: 'O',
KeyP: "P", KeyP: 'P',
KeyQ: "Q", KeyQ: 'Q',
KeyR: "R", KeyR: 'R',
KeyS: "S", KeyS: 'S',
KeyT: "T", KeyT: 'T',
KeyU: "U", KeyU: 'U',
KeyV: "V", KeyV: 'V',
KeyW: "W", KeyW: 'W',
KeyX: "X", KeyX: 'X',
KeyY: "Y", KeyY: 'Y',
KeyZ: "Z", KeyZ: 'Z',
F1: "F1", F1: 'F1',
F2: "F2", F2: 'F2',
F3: "F3", F3: 'F3',
F4: "F4", F4: 'F4',
F5: "F5", F5: 'F5',
F6: "F6", F6: 'F6',
F7: "F7", F7: 'F7',
F8: "F8", F8: 'F8',
F9: "F9", F9: 'F9',
F10: "F10", F10: 'F10',
F11: "F11", F11: 'F11',
F12: "F12", F12: 'F12',
Semicolon: ";", Semicolon: ';',
Equal: "=", Equal: '=',
Comma: ",", Comma: ',',
Minus: "-", Minus: '-',
Period: ".", Period: '.',
Slash: "/", Slash: '/',
Backquote: "`", Backquote: '`',
BracketLeft: "[", BracketLeft: '[',
Backslash: "\\", Backslash: '\\',
BracketRight: "]", BracketRight: ']',
Quote: "'", Quote: "'",
}; };

View File

@ -1,8 +1,8 @@
import { remote } from "electron"; import { app } from '@electron/remote';
import path from "path"; import path from 'path';
const appPath = remote.app.getPath("cache"); const appPath = app.getPath('userData');
const PLUGIN_INSTALL_DIR = path.join(appPath, "./rubick-plugins"); const PLUGIN_INSTALL_DIR = path.join(appPath, './rubick-plugins');
export { PLUGIN_INSTALL_DIR }; export { PLUGIN_INSTALL_DIR };

View File

@ -1,17 +1,17 @@
export default { export default {
linux(): boolean { linux(): boolean {
return process.platform === "linux"; return process.platform === 'linux';
}, },
macOS(): boolean { macOS(): boolean {
return process.platform === "darwin"; return process.platform === 'darwin';
}, },
windows(): boolean { windows(): boolean {
return process.platform === "win32"; return process.platform === 'win32';
}, },
production(): boolean { production(): boolean {
return process.env.NODE_ENV !== "development"; return process.env.NODE_ENV !== 'development';
}, },
dev(): boolean { dev(): boolean {
return process.env.NODE_ENV === "development"; return process.env.NODE_ENV === 'development';
}, },
}; };

View File

@ -1,5 +1,4 @@
import { ipcRenderer } from 'electron'; import { ipcRenderer } from 'electron';
import commonConst from './commonConst';
const useDrag = () => { const useDrag = () => {
let animationId: number; let animationId: number;
@ -10,7 +9,7 @@ const useDrag = () => {
let draggable = true; let draggable = true;
const onMouseDown = (e) => { const onMouseDown = (e) => {
if (commonConst.macOS()) return; // if (commonConst.macOS()) return;
draggable = true; draggable = true;
mouseX = e.clientX; mouseX = e.clientX;
mouseY = e.clientY; mouseY = e.clientY;

View File

@ -1,33 +1,33 @@
import commonConst from "./commonConst"; import commonConst from './commonConst';
import { clipboard, remote } from "electron"; import { clipboard } from 'electron';
import plist from "plist"; import plist from 'plist';
import fs from "fs"; import fs from 'fs';
import path from "path"; import path from 'path';
import ofs from "original-fs"; import ofs from 'original-fs';
export default function getCopyFiles(): Array<any> | null { export default function getCopyFiles(): Array<any> | null {
let fileInfo; let fileInfo;
if (commonConst.macOS()) { if (commonConst.macOS()) {
if (!clipboard.has("NSFilenamesPboardType")) return null; if (!clipboard.has('NSFilenamesPboardType')) return null;
const result = clipboard.read("NSFilenamesPboardType"); const result = clipboard.read('NSFilenamesPboardType');
if (!result) return null; if (!result) return null;
try { try {
fileInfo = plist.parse(result); fileInfo = plist.parse(result);
} catch (e) { } catch (e) {
return null; return null;
} }
} else if (process.platform === "win32") { } else if (process.platform === 'win32') {
/* eslint-disable */ /* eslint-disable */
const clipboardEx = require("electron-clipboard-ex"); const clipboardEx = require('electron-clipboard-ex');
fileInfo = clipboardEx.readFilePaths(); fileInfo = clipboardEx.readFilePaths();
// todo // todo
} else { } else {
if (!commonConst.linux()) return null; if (!commonConst.linux()) return null;
if (!clipboard.has("text/uri-list")) return null; if (!clipboard.has('text/uri-list')) return null;
const result = clipboard.read("text/uri-list").match(/^file:\/\/\/.*/gm); const result = clipboard.read('text/uri-list').match(/^file:\/\/\/.*/gm);
if (!result || !result.length) return null; if (!result || !result.length) return null;
fileInfo = result.map((e) => fileInfo = result.map((e) =>
decodeURIComponent(e).replace(/^file:\/\//, "") decodeURIComponent(e).replace(/^file:\/\//, '')
); );
} }
if (!Array.isArray(fileInfo)) return null; if (!Array.isArray(fileInfo)) return null;

View File

@ -1,12 +1,12 @@
import path from "path"; import path from 'path';
import fs from "fs"; import fs from 'fs';
export default (): string => { export default (): string => {
let localDataFile: any = process.env.HOME; let localDataFile: any = process.env.HOME;
if (!localDataFile) { if (!localDataFile) {
localDataFile = process.env.LOCALAPPDATA; localDataFile = process.env.LOCALAPPDATA;
} }
const rubickPath = path.join(localDataFile, "rubick"); const rubickPath = path.join(localDataFile, 'rubick');
if (!fs.existsSync(rubickPath)) { if (!fs.existsSync(rubickPath)) {
fs.mkdirSync(rubickPath); fs.mkdirSync(rubickPath);
} }

View File

@ -1,4 +1,5 @@
import { BrowserWindow, ipcMain, nativeTheme } from 'electron'; import { BrowserWindow, ipcMain, nativeTheme } from 'electron';
import localConfig from '../common/initLocalConfig';
import path from 'path'; import path from 'path';
export default () => { export default () => {
let win: any; let win: any;
@ -9,6 +10,8 @@ export default () => {
event.returnValue = data; event.returnValue = data;
}); });
createWindow(pluginInfo, viewInfo, view); createWindow(pluginInfo, viewInfo, view);
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('@electron/remote/main').enable(win.webContents);
}; };
const createWindow = async (pluginInfo, viewInfo, view) => { const createWindow = async (pluginInfo, viewInfo, view) => {
@ -28,7 +31,6 @@ export default () => {
y: viewInfo.y, y: viewInfo.y,
webPreferences: { webPreferences: {
webSecurity: false, webSecurity: false,
enableRemoteModule: true,
backgroundThrottling: false, backgroundThrottling: false,
contextIsolation: false, contextIsolation: false,
webviewTag: true, webviewTag: true,
@ -49,8 +51,9 @@ export default () => {
win = undefined; win = undefined;
}); });
win.once('ready-to-show', () => { win.once('ready-to-show', async () => {
const darkMode = global.OP_CONFIG.get().perf.common.darkMode; const config = await localConfig.getConfig();
const darkMode = config.perf.common.darkMode;
darkMode && darkMode &&
win.webContents.executeJavaScript( win.webContents.executeJavaScript(
`document.body.classList.add("dark");window.rubick.theme="dark"` `document.body.classList.add("dark");window.rubick.theme="dark"`

View File

@ -43,7 +43,6 @@ export default () => {
height: 600, height: 600,
webPreferences: { webPreferences: {
webSecurity: false, webSecurity: false,
enableRemoteModule: true,
backgroundThrottling: false, backgroundThrottling: false,
contextIsolation: false, contextIsolation: false,
webviewTag: true, webviewTag: true,

View File

@ -2,11 +2,17 @@ import { app, BrowserWindow, protocol, nativeTheme } from 'electron';
import path from 'path'; import path from 'path';
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'; import { createProtocol } from 'vue-cli-plugin-electron-builder/lib';
import versonHandler from '../common/versionHandler'; import versonHandler from '../common/versionHandler';
import localConfig from '@/main/common/initLocalConfig';
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('@electron/remote/main').initialize();
export default () => { export default () => {
let win: any; let win: any;
const init = () => { const init = () => {
createWindow(); createWindow();
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('@electron/remote/main').enable(win.webContents);
}; };
const createWindow = async () => { const createWindow = async () => {
@ -22,7 +28,6 @@ export default () => {
backgroundColor: nativeTheme.shouldUseDarkColors ? '#1c1c28' : '#fff', backgroundColor: nativeTheme.shouldUseDarkColors ? '#1c1c28' : '#fff',
webPreferences: { webPreferences: {
webSecurity: false, webSecurity: false,
enableRemoteModule: true,
backgroundThrottling: false, backgroundThrottling: false,
contextIsolation: false, contextIsolation: false,
webviewTag: true, webviewTag: true,
@ -61,8 +66,8 @@ export default () => {
}); });
// 判断失焦是否隐藏 // 判断失焦是否隐藏
win.on('blur', () => { win.on('blur', async () => {
const config = { ...global.OP_CONFIG.get() }; const config = await localConfig.getConfig();
if (config.perf.common.hideOnBlur) { if (config.perf.common.hideOnBlur) {
win.hide(); win.hide();
} }

View File

@ -2,6 +2,7 @@ import { BrowserView, BrowserWindow, session } from 'electron';
import path from 'path'; import path from 'path';
import commonConst from '../../common/utils/commonConst'; import commonConst from '../../common/utils/commonConst';
import { PLUGIN_INSTALL_DIR as baseDir } from '@/common/constans/main'; import { PLUGIN_INSTALL_DIR as baseDir } from '@/common/constans/main';
import localConfig from '@/main/common/initLocalConfig';
const getRelativePath = (indexPath) => { const getRelativePath = (indexPath) => {
return commonConst.windows() return commonConst.windows()
@ -33,6 +34,8 @@ export default () => {
const init = (plugin, window: BrowserWindow) => { const init = (plugin, window: BrowserWindow) => {
if (view === null || view === undefined) { if (view === null || view === undefined) {
createView(plugin, window); createView(plugin, window);
// eslint-disable-next-line @typescript-eslint/no-var-requires
require('@electron/remote/main').enable(view.webContents);
} }
}; };
@ -65,7 +68,6 @@ export default () => {
view = new BrowserView({ view = new BrowserView({
webPreferences: { webPreferences: {
enableRemoteModule: true,
webSecurity: false, webSecurity: false,
nodeIntegration: true, nodeIntegration: true,
contextIsolation: false, contextIsolation: false,
@ -77,7 +79,7 @@ export default () => {
}); });
window.setBrowserView(view); window.setBrowserView(view);
view.webContents.loadURL(pluginIndexPath); view.webContents.loadURL(pluginIndexPath);
view.webContents.once('dom-ready', () => { view.webContents.once('dom-ready', async () => {
if (!view) return; if (!view) return;
const height = pluginSetting && pluginSetting.height; const height = pluginSetting && pluginSetting.height;
window.setSize(800, height || 660); window.setSize(800, height || 660);
@ -85,7 +87,8 @@ export default () => {
view.setAutoResize({ width: true }); view.setAutoResize({ width: true });
executeHooks('PluginEnter', plugin.ext); executeHooks('PluginEnter', plugin.ext);
executeHooks('PluginReady', plugin.ext); executeHooks('PluginReady', plugin.ext);
darkMode = global.OP_CONFIG.get().perf.common.darkMode; const config = await localConfig.getConfig();
const darkMode = config.perf.common.darkMode;
darkMode && darkMode &&
view.webContents.executeJavaScript( view.webContents.executeJavaScript(
`document.body.classList.add("dark");window.rubick.theme="dark"` `document.body.classList.add("dark");window.rubick.theme="dark"`

View File

@ -10,8 +10,9 @@ import {
shell, shell,
} from 'electron'; } from 'electron';
import { runner, detach } from '../browsers'; import { runner, detach } from '../browsers';
import DBInstance from './db';
import fs from 'fs'; import fs from 'fs';
import { LocalDb, screenCapture } from '@/core'; import { screenCapture } from '@/core';
import plist from 'plist'; import plist from 'plist';
import ks from 'node-key-sender'; import ks from 'node-key-sender';
@ -21,14 +22,9 @@ import getCopyFiles from '@/common/utils/getCopyFiles';
import mainInstance from '../index'; import mainInstance from '../index';
const runnerInstance = runner(); const runnerInstance = runner();
const detachInstance = detach(); const detachInstance = detach();
const dbInstance = new LocalDb(app.getPath('userData'));
dbInstance.init(); class API extends DBInstance {
class API {
public currentPlugin: null | any = null; public currentPlugin: null | any = null;
private DBKEY = 'RUBICK_DB_DEFAULT';
init(mainWindow: BrowserWindow) { init(mainWindow: BrowserWindow) {
// 响应 preload.js 事件 // 响应 preload.js 事件
ipcMain.on('msg-trigger', async (event, arg) => { ipcMain.on('msg-trigger', async (event, arg) => {
@ -196,26 +192,6 @@ class API {
return false; return false;
} }
public dbPut({ data }) {
return dbInstance.put(this.DBKEY, data.data);
}
public dbGet({ data }) {
return dbInstance.get(this.DBKEY, data.id);
}
public dbRemove({ data }) {
return dbInstance.remove(this.DBKEY, data.doc);
}
public dbBulkDocs({ data }) {
return dbInstance.bulkDocs(this.DBKEY, data.docs);
}
public dbAllDocs({ data }) {
return dbInstance.allDocs(this.DBKEY, data.key);
}
public getFeatures() { public getFeatures() {
return this.currentPlugin.features; return this.currentPlugin.features;
} }

28
src/main/common/db.ts Normal file
View File

@ -0,0 +1,28 @@
import { LocalDb } from '@/core';
import { app } from 'electron';
const dbInstance = new LocalDb(app.getPath('userData'));
dbInstance.init();
export default class DBInstance {
private DBKEY = 'RUBICK_DB_DEFAULT';
public dbPut({ data }) {
return dbInstance.put(this.DBKEY, data.data);
}
public dbGet({ data }) {
return dbInstance.get(this.DBKEY, data.id);
}
public dbRemove({ data }) {
return dbInstance.remove(this.DBKEY, data.doc);
}
public dbBulkDocs({ data }) {
return dbInstance.bulkDocs(this.DBKEY, data.docs);
}
public dbAllDocs({ data }) {
return dbInstance.allDocs(this.DBKEY, data.key);
}
}

View File

@ -0,0 +1,51 @@
import defaultConfig from '@/common/constans/defaultConfig';
import DBInstance from './db';
const LOCAL_CONFIG_KEY = 'rubick-local-config';
const db = new DBInstance();
const localConfig = {
async init(): Promise<any> {
const localConfig = await db.dbGet({ data: { id: LOCAL_CONFIG_KEY } });
if (
!localConfig ||
!localConfig.data ||
localConfig.data.version !== defaultConfig.version
) {
const data: any = {
_id: LOCAL_CONFIG_KEY,
data: defaultConfig,
};
if (localConfig && localConfig.data) {
data._rev = localConfig.data._rev;
}
await db.dbPut({
data: { data },
});
}
},
async getConfig(): Promise<any> {
const data: any =
(await db.dbGet({ data: { id: LOCAL_CONFIG_KEY } })) || {};
return data.data;
},
async setConfig(data) {
const localConfig: any =
(await db.dbGet({ data: { id: LOCAL_CONFIG_KEY } })) || {};
await db.dbPut({
data: {
data: {
_id: LOCAL_CONFIG_KEY,
_rev: localConfig._rev,
data: {
...localConfig.data,
...data,
},
},
},
});
},
};
export default localConfig;

View File

@ -9,19 +9,20 @@ import {
Notification, Notification,
} from 'electron'; } from 'electron';
import screenCapture from '@/core/screen-capture'; import screenCapture from '@/core/screen-capture';
import localConfig from '@/main/common/initLocalConfig';
const registerHotKey = (mainWindow: BrowserWindow): void => { const registerHotKey = (mainWindow: BrowserWindow): void => {
// 设置开机启动 // 设置开机启动
const setAutoLogin = () => { const setAutoLogin = async () => {
const config = global.OP_CONFIG.get(); const config = await localConfig.getConfig();
app.setLoginItemSettings({ app.setLoginItemSettings({
openAtLogin: config.perf.common.start, openAtLogin: config.perf.common.start,
openAsHidden: true, openAsHidden: true,
}); });
}; };
// 设置暗黑模式 // 设置暗黑模式
const setDarkMode = () => { const setDarkMode = async () => {
const config = global.OP_CONFIG.get(); const config = await localConfig.getConfig();
const isDark = config.perf.common.darkMode; const isDark = config.perf.common.darkMode;
if (isDark) { if (isDark) {
nativeTheme.themeSource = 'dark'; nativeTheme.themeSource = 'dark';
@ -46,10 +47,10 @@ const registerHotKey = (mainWindow: BrowserWindow): void => {
} }
}; };
const init = () => { const init = async () => {
setAutoLogin(); await setAutoLogin();
setDarkMode(); await setDarkMode();
const config = global.OP_CONFIG.get(); const config = await localConfig.getConfig();
globalShortcut.unregisterAll(); globalShortcut.unregisterAll();
// 注册偏好快捷键 // 注册偏好快捷键
globalShortcut.register(config.perf.shortCut.showAndHidden, () => { globalShortcut.register(config.perf.shortCut.showAndHidden, () => {

View File

@ -2,7 +2,6 @@ import { dialog, Menu, Tray, app, shell, BrowserWindow } from 'electron';
import path from 'path'; import path from 'path';
import pkg from '../../../package.json'; import pkg from '../../../package.json';
import os from 'os'; import os from 'os';
import API from '../common/api';
import commonConst from '@/common/utils/commonConst'; import commonConst from '@/common/utils/commonConst';
import { guide } from '../browsers'; import { guide } from '../browsers';
@ -21,11 +20,6 @@ function createTray(window: BrowserWindow): Promise<Tray> {
} }
const appIcon = new Tray(path.join(__static, icon)); const appIcon = new Tray(path.join(__static, icon));
const getShowAndHiddenHotKey = (): string => {
const config = global.OP_CONFIG.get();
return config.perf.shortCut.showAndHidden;
};
const openSettings = () => { const openSettings = () => {
window.webContents.executeJavaScript( window.webContents.executeJavaScript(
`window.rubick && window.rubick.openMenu && window.rubick.openMenu({ code: "settings" })` `window.rubick && window.rubick.openMenu && window.rubick.openMenu({ code: "settings" })`
@ -59,8 +53,7 @@ function createTray(window: BrowserWindow): Promise<Tray> {
}, },
{ type: 'separator' }, { type: 'separator' },
{ {
label: '显示窗口', label: '显示',
accelerator: getShowAndHiddenHotKey(),
click() { click() {
window.show(); window.show();
}, },

View File

@ -12,9 +12,9 @@ import commonConst from '../common/utils/commonConst';
import API from './common/api'; import API from './common/api';
import createTray from './common/tray'; import createTray from './common/tray';
import registerHotKey from './common/registerHotKey'; import registerHotKey from './common/registerHotKey';
import localConfig from './common/initLocalConfig';
import '../common/utils/localPlugin'; import '../common/utils/localPlugin';
import '../common/utils/localConfig';
import registerySystemPlugin from './common/registerySystemPlugin'; import registerySystemPlugin from './common/registerySystemPlugin';
@ -55,12 +55,13 @@ class App {
this.windowCreator.init(); this.windowCreator.init();
} }
onReady() { onReady() {
const readyFunction = () => { const readyFunction = async () => {
const config = global.OP_CONFIG.get(); await localConfig.init();
const config = await localConfig.getConfig();
if (!config.perf.common.guide) { if (!config.perf.common.guide) {
guide().init(); guide().init();
config.perf.common.guide = true; config.perf.common.guide = true;
global.OP_CONFIG.set(config); localConfig.setConfig(config);
} }
this.createWindow(); this.createWindow();
const mainWindow = this.windowCreator.getWindow(); const mainWindow = this.windowCreator.getWindow();

View File

@ -1,7 +1,6 @@
<template> <template>
<div <div
id="components-layout" id="components-layout"
:class="commonConst.macOS() && 'drag'"
@mousedown="onMouseDown" @mousedown="onMouseDown"
> >
<Search <Search
@ -32,7 +31,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { watch, ref, nextTick, toRaw } from 'vue'; import { watch, ref, nextTick, toRaw } from 'vue';
import { ipcRenderer, remote } from 'electron'; import { ipcRenderer } from 'electron';
import Result from './components/result.vue'; import Result from './components/result.vue';
import Search from './components/search.vue'; import Search from './components/search.vue';
import getWindowHeight from '../common/utils/getWindowHeight'; import getWindowHeight from '../common/utils/getWindowHeight';
@ -41,6 +40,7 @@ import useDrag from '../common/utils/dragWindow';
import commonConst from '@/common/utils/commonConst'; import commonConst from '@/common/utils/commonConst';
const { onMouseDown } = useDrag(); const { onMouseDown } = useDrag();
const remote = window.require('@electron/remote');
const { const {
initPlugins, initPlugins,

View File

@ -53,13 +53,14 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineProps, defineEmits, ref } from 'vue'; import { defineProps, defineEmits, ref } from 'vue';
import { ipcRenderer, remote } from 'electron'; import { ipcRenderer } from 'electron';
import { LoadingOutlined, MoreOutlined } from '@ant-design/icons-vue'; import { LoadingOutlined, MoreOutlined } from '@ant-design/icons-vue';
const opConfig = remote.getGlobal('OP_CONFIG'); const remote = window.require('@electron/remote');
import localConfig from '../confOp';
const { Menu } = remote; const { Menu } = remote;
const config = ref(opConfig.get()); const config: any = ref(localConfig.getConfig());
const props: any = defineProps({ const props: any = defineProps({
searchValue: { searchValue: {
@ -119,7 +120,7 @@ const keydownEvent = (e, key: string) => {
emit('choosePlugin'); emit('choosePlugin');
break; break;
case 'space': case 'space':
if (runPluginDisable || !opConfig.get().perf.common.space) return; if (runPluginDisable || !config.value.perf.common.space) return;
emit('choosePlugin'); emit('choosePlugin');
break; break;
default: default:
@ -216,14 +217,14 @@ const showSeparate = () => {
const changeLang = (lang) => { const changeLang = (lang) => {
let cfg = { ...config.value }; let cfg = { ...config.value };
cfg.perf.common.lang = lang; cfg.perf.common.lang = lang;
opConfig.set(cfg); localConfig.setConfig(JSON.parse(JSON.stringify(cfg)));
config.value = cfg; config.value = cfg;
}; };
const changeHideOnBlur = () => { const changeHideOnBlur = () => {
let cfg = { ...config.value }; let cfg = { ...config.value };
cfg.perf.common.hideOnBlur = !cfg.perf.common.hideOnBlur; cfg.perf.common.hideOnBlur = !cfg.perf.common.hideOnBlur;
opConfig.set(cfg); localConfig.setConfig(JSON.parse(JSON.stringify(cfg)));
config.value = cfg; config.value = cfg;
}; };
@ -261,6 +262,9 @@ window.rubick.hooks.onHide = () => {
left: 0; left: 0;
width: 100%; width: 100%;
align-items: center; align-items: center;
height: 60px;
display: flex;
align-items: center;
.ellipse { .ellipse {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@ -284,7 +288,7 @@ window.rubick.hooks.onHide = () => {
} }
.main-input { .main-input {
height: 60px !important; height: 40px !important;
box-sizing: border-box; box-sizing: border-box;
flex: 1; flex: 1;
border: none; border: none;

22
src/renderer/confOp.ts Normal file
View File

@ -0,0 +1,22 @@
const LOCAL_CONFIG_KEY = 'rubick-local-config';
const localConfig = {
getConfig(): Promise<any> {
const data: any = window.rubick.db.get(LOCAL_CONFIG_KEY) || {};
return data.data;
},
setConfig(data) {
const localConfig: any = window.rubick.db.get(LOCAL_CONFIG_KEY) || {};
window.rubick.db.put({
_id: LOCAL_CONFIG_KEY,
_rev: localConfig._rev,
data: {
...localConfig.data,
...data,
},
});
},
};
export default localConfig;

View File

@ -9,15 +9,14 @@ import {
ConfigProvider, ConfigProvider,
} from 'ant-design-vue'; } from 'ant-design-vue';
import App from './App.vue'; import App from './App.vue';
import localConfig from './confOp';
import 'ant-design-vue/dist/antd.variable.min.css'; import 'ant-design-vue/dist/antd.variable.min.css';
const { remote } = window.require('electron'); const config: any = localConfig.getConfig();
const { perf } = remote.getGlobal('OP_CONFIG').get();
ConfigProvider.config({ ConfigProvider.config({
theme: perf.custom || {}, theme: config.perf.custom || {},
}); });
createApp(App) createApp(App)

View File

@ -1,13 +1,15 @@
import getCopyFiles from '@/common/utils/getCopyFiles'; import getCopyFiles from '@/common/utils/getCopyFiles';
import { clipboard, nativeImage, remote, ipcRenderer } from 'electron'; import { clipboard, nativeImage, ipcRenderer } from 'electron';
import { getGlobal } from '@electron/remote';
import path from 'path'; import path from 'path';
import pluginClickEvent from './pluginClickEvent'; import pluginClickEvent from './pluginClickEvent';
import localConfig from '../confOp';
import { ref } from 'vue'; import { ref } from 'vue';
export default ({ currentPlugin, optionsRef, openPlugin, setOptionsRef }) => { export default ({ currentPlugin, optionsRef, openPlugin, setOptionsRef }) => {
const clipboardFile: any = ref([]); const clipboardFile: any = ref([]);
const searchFocus = () => { const searchFocus = () => {
const config = remote.getGlobal('OP_CONFIG').get(); const config: any = localConfig.getConfig();
// 未开启自动粘贴 // 未开启自动粘贴
if (!config.perf.common.autoPast) return; if (!config.perf.common.autoPast) return;
@ -17,7 +19,7 @@ export default ({ currentPlugin, optionsRef, openPlugin, setOptionsRef }) => {
if (fileList) { if (fileList) {
window.setSubInputValue({ value: '' }); window.setSubInputValue({ value: '' });
clipboardFile.value = fileList; clipboardFile.value = fileList;
const localPlugins = remote.getGlobal('LOCAL_PLUGINS').getLocalPlugins(); const localPlugins = getGlobal('LOCAL_PLUGINS').getLocalPlugins();
const options: any = [ const options: any = [
{ {
name: '复制路径', name: '复制路径',
@ -143,7 +145,7 @@ export default ({ currentPlugin, optionsRef, openPlugin, setOptionsRef }) => {
dataUrl, dataUrl,
}, },
]; ];
const localPlugins = remote.getGlobal('LOCAL_PLUGINS').getLocalPlugins(); const localPlugins = getGlobal('LOCAL_PLUGINS').getLocalPlugins();
const options: any = []; const options: any = [];
// 再正则插件 // 再正则插件
localPlugins.forEach((plugin) => { localPlugins.forEach((plugin) => {

View File

@ -1,5 +1,6 @@
import { reactive, toRefs, ref } from 'vue'; import { reactive, toRefs, ref } from 'vue';
import { nativeImage, remote, ipcRenderer } from 'electron'; import { nativeImage, ipcRenderer } from 'electron';
import { getGlobal } from '@electron/remote';
import appSearch from '@/core/app-search'; import appSearch from '@/core/app-search';
import { PluginHandler } from '@/core'; import { PluginHandler } from '@/core';
import path from 'path'; import path from 'path';
@ -112,7 +113,7 @@ const createPluginManager = (): any => {
window.updatePlugin = ({ currentPlugin }: any) => { window.updatePlugin = ({ currentPlugin }: any) => {
state.currentPlugin = currentPlugin; state.currentPlugin = currentPlugin;
remote.getGlobal('LOCAL_PLUGINS').updatePlugin(currentPlugin); getGlobal('LOCAL_PLUGINS').updatePlugin(currentPlugin);
}; };
window.setCurrentPlugin = ({ currentPlugin }) => { window.setCurrentPlugin = ({ currentPlugin }) => {

View File

@ -1,6 +1,7 @@
import { ref, watch } from 'vue'; import { ref, watch } from 'vue';
import throttle from 'lodash.throttle'; import throttle from 'lodash.throttle';
import { remote, ipcRenderer } from 'electron'; import { ipcRenderer } from 'electron';
import { getGlobal } from '@electron/remote';
import pluginClickEvent from './pluginClickEvent'; import pluginClickEvent from './pluginClickEvent';
import useFocus from './clipboardWatch'; import useFocus from './clipboardWatch';
@ -40,7 +41,7 @@ const optionsManager = ({
}); });
const getOptionsFromSearchValue = (value, strict = false) => { const getOptionsFromSearchValue = (value, strict = false) => {
const localPlugins = remote.getGlobal('LOCAL_PLUGINS').getLocalPlugins(); const localPlugins = getGlobal('LOCAL_PLUGINS').getLocalPlugins();
let options: any = []; let options: any = [];
// todo 先搜索 plugin // todo 先搜索 plugin
localPlugins.forEach((plugin) => { localPlugins.forEach((plugin) => {

View File

@ -24,7 +24,12 @@ module.exports = {
nodeIntegration: true, nodeIntegration: true,
mainProcessFile: 'src/main/index.ts', mainProcessFile: 'src/main/index.ts',
mainProcessWatch: ['src/main'], mainProcessWatch: ['src/main'],
externals: ['pouchdb', 'extract-file-icon', 'electron-screenshots'], externals: [
'pouchdb',
'extract-file-icon',
'electron-screenshots',
'@electron/remote',
],
// Use this to change the entry point of your app's render process. default src/[main|index].[js|ts] // Use this to change the entry point of your app's render process. default src/[main|index].[js|ts]
builderOptions: { builderOptions: {
productName: 'rubick2', productName: 'rubick2',

127
yarn.lock
View File

@ -998,21 +998,25 @@
ajv "^6.12.0" ajv "^6.12.0"
ajv-keywords "^3.4.1" ajv-keywords "^3.4.1"
"@electron/get@^1.0.1": "@electron/get@^2.0.0":
version "1.14.1" version "2.0.2"
resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.2.tgz#ae2a967b22075e9c25aaf00d5941cd79c21efd7e"
integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== integrity sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
env-paths "^2.2.0" env-paths "^2.2.0"
fs-extra "^8.1.0" fs-extra "^8.1.0"
got "^9.6.0" got "^11.8.5"
progress "^2.0.3" progress "^2.0.3"
semver "^6.2.0" semver "^6.2.0"
sumchecker "^3.0.1" sumchecker "^3.0.1"
optionalDependencies: optionalDependencies:
global-agent "^3.0.0" global-agent "^3.0.0"
global-tunnel-ng "^2.7.1"
"@electron/remote@^2.0.10":
version "2.0.10"
resolved "https://registry.yarnpkg.com/@electron/remote/-/remote-2.0.10.tgz#133e2f607b1861ac249bd78b5abd1e961feed713"
integrity sha512-3SFKKaQXcyWgwmibud+UqJl/XlHOgLcI3fwtB9pNelPSJAcTxocOJrF6FaxBIQaj1+R05Di6xuAswZpXAW7xhA==
"@electron/universal@1.0.5": "@electron/universal@1.0.5":
version "1.0.5" version "1.0.5"
@ -1391,10 +1395,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.4.tgz#fd26723a8a3f8f46729812a7f9b4fc2d1608ed39" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.4.tgz#fd26723a8a3f8f46729812a7f9b4fc2d1608ed39"
integrity sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg== integrity sha512-I4BD3L+6AWiUobfxZ49DlU43gtI+FTHSv9pE2Zekg6KjMpre4ByusaljW3vYSLJrvQ1ck1hUaeVu8HVlY3vzHg==
"@types/node@^14.6.2": "@types/node@^18.11.18":
version "14.18.23" version "18.17.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.23.tgz#70f5f20b0b1b38f696848c1d3647bb95694e615e" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.6.tgz#0296e9a30b22d2a8fcaa48d3c45afe51474ca55b"
integrity sha512-MhbCWN18R4GhO8ewQWAFK4TGQdBpXWByukz7cWyJmXhvRuCIaM/oWytGPqVmDzgEnnaIc9ss6HbU5mUi+vyZPA== integrity sha512-fGmT/P7z7ecA6bv/ia5DlaWCH4YeZvAQMNpUhrJjtAhOhZfoxS1VLUgU2pdk63efSjQaOJWdXMuAJsws+8I6dg==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.1" version "2.4.1"
@ -1525,6 +1529,13 @@
dependencies: dependencies:
"@types/yargs-parser" "*" "@types/yargs-parser" "*"
"@types/yauzl@^2.9.1":
version "2.10.0"
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599"
integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@^4.18.0": "@typescript-eslint/eslint-plugin@^4.18.0":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
@ -3720,7 +3731,7 @@ concat-map@0.0.1:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
concat-stream@^1.5.0, concat-stream@^1.6.2: concat-stream@^1.5.0:
version "1.6.2" version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@ -3730,14 +3741,6 @@ concat-stream@^1.5.0, concat-stream@^1.6.2:
readable-stream "^2.2.2" readable-stream "^2.2.2"
typedarray "^0.0.6" typedarray "^0.0.6"
config-chain@^1.1.11:
version "1.1.13"
resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
dependencies:
ini "^1.3.4"
proto-list "~1.2.1"
configstore@^5.0.1: configstore@^5.0.1:
version "5.0.1" version "5.0.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
@ -4170,7 +4173,7 @@ dayjs@^1.10.5:
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a"
integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
version "2.6.9" version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@ -4765,14 +4768,14 @@ electron-updater@^4.6.5:
lodash.isequal "^4.5.0" lodash.isequal "^4.5.0"
semver "^7.3.5" semver "^7.3.5"
electron@^13.0.0: electron@26.0.0:
version "13.6.9" version "26.0.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-13.6.9.tgz#7bd83cc1662ceaaa09dcd132a7b507cec888b028" resolved "https://registry.yarnpkg.com/electron/-/electron-26.0.0.tgz#f054aad7db99379aba11237622e9742bbe800dea"
integrity sha512-Es/sBy85NIuqsO9MW41PUCpwIkeinlTQ7g0ainfnmRAM2rmog3GBxVCaoV5dzEjwTF7TKG1Yr/E7Z3qHmlfWAg== integrity sha512-x57bdCaDvgnlc41VOm/UWihJCCiI3OxJKiBgB/e5F7Zd6avo+61mO6IzQS7Bu/k/a1KPjou25EUORR6UPKznBQ==
dependencies: dependencies:
"@electron/get" "^1.0.1" "@electron/get" "^2.0.0"
"@types/node" "^14.6.2" "@types/node" "^18.11.18"
extract-zip "^1.0.3" extract-zip "^2.0.1"
elliptic@^6.5.3: elliptic@^6.5.3:
version "6.5.4" version "6.5.4"
@ -4807,7 +4810,7 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
encodeurl@^1.0.2, encodeurl@~1.0.2: encodeurl@~1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
@ -5330,15 +5333,16 @@ extract-file-icon@^0.3.2:
dependencies: dependencies:
node-addon-api "1.7.1" node-addon-api "1.7.1"
extract-zip@^1.0.3: extract-zip@^2.0.1:
version "1.7.0" version "2.0.1"
resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
dependencies: dependencies:
concat-stream "^1.6.2" debug "^4.1.1"
debug "^2.6.9" get-stream "^5.1.0"
mkdirp "^0.5.4"
yauzl "^2.10.0" yauzl "^2.10.0"
optionalDependencies:
"@types/yauzl" "^2.9.1"
extsprintf@1.3.0: extsprintf@1.3.0:
version "1.3.0" version "1.3.0"
@ -5913,16 +5917,6 @@ global-dirs@^3.0.0:
dependencies: dependencies:
ini "2.0.0" ini "2.0.0"
global-tunnel-ng@^2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f"
integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==
dependencies:
encodeurl "^1.0.2"
lodash "^4.17.10"
npm-conf "^1.1.3"
tunnel "^0.0.6"
globals@^11.1.0: globals@^11.1.0:
version "11.12.0" version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@ -6008,6 +6002,23 @@ got@^11.8.3:
p-cancelable "^2.0.0" p-cancelable "^2.0.0"
responselike "^2.0.0" responselike "^2.0.0"
got@^11.8.5:
version "11.8.6"
resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
dependencies:
"@sindresorhus/is" "^4.0.0"
"@szmarczak/http-timer" "^4.0.5"
"@types/cacheable-request" "^6.0.1"
"@types/responselike" "^1.0.0"
cacheable-lookup "^5.0.3"
cacheable-request "^7.0.2"
decompress-response "^6.0.0"
http2-wrapper "^1.0.0-beta.5.2"
lowercase-keys "^2.0.0"
p-cancelable "^2.0.0"
responselike "^2.0.0"
got@^9.6.0: got@^9.6.0:
version "9.6.0" version "9.6.0"
resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
@ -6559,7 +6570,7 @@ ini@2.0.0:
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
ini@^1.3.4, ini@~1.3.0: ini@~1.3.0:
version "1.3.8" version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
@ -7524,7 +7535,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3: lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
version "4.17.21" version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@ -7898,7 +7909,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2" for-in "^1.0.2"
is-extendable "^1.0.1" is-extendable "^1.0.1"
mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.6, mkdirp@~0.5.1: mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.6, mkdirp@~0.5.1:
version "0.5.6" version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
@ -8072,7 +8083,7 @@ node-gyp-build@~4.1.0:
node-key-sender@^1.0.11: node-key-sender@^1.0.11:
version "1.0.11" version "1.0.11"
resolved "https://registry.npmmirror.com/node-key-sender/-/node-key-sender-1.0.11.tgz#93210f07163607d8daf2874f1a29567d0acdb94c" resolved "https://registry.yarnpkg.com/node-key-sender/-/node-key-sender-1.0.11.tgz#93210f07163607d8daf2874f1a29567d0acdb94c"
integrity sha512-vv2IXd8QdZBFYXaIy02uy2rK6EKj+tOTEuoTxJKS9l8zw8Cz6DeLffR8ompj7N2A3h6XK7aiy+YAcTaeOqwp2Q== integrity sha512-vv2IXd8QdZBFYXaIy02uy2rK6EKj+tOTEuoTxJKS9l8zw8Cz6DeLffR8ompj7N2A3h6XK7aiy+YAcTaeOqwp2Q==
node-libs-browser@^2.2.1: node-libs-browser@^2.2.1:
@ -8166,14 +8177,6 @@ normalize-url@^6.0.1:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
npm-conf@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==
dependencies:
config-chain "^1.1.11"
pify "^3.0.0"
npm-run-path@^2.0.0: npm-run-path@^2.0.0:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
@ -9158,11 +9161,6 @@ promise-inflight@^1.0.1:
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
proto-list@~1.2.1:
version "1.2.4"
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
proxy-addr@~2.0.7: proxy-addr@~2.0.7:
version "2.0.7" version "2.0.7"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@ -10926,11 +10924,6 @@ tunnel-agent@^0.6.0:
dependencies: dependencies:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
tunnel@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
tweetnacl@^0.14.3, tweetnacl@~0.14.0: tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5" version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"