新增 showDevTools

This commit is contained in:
fofolee 2022-04-25 11:22:27 +08:00
parent 219d0146e0
commit 8f2d332cda
4 changed files with 45 additions and 22 deletions

0
plugin/lib/sandbox.html Normal file
View File

7
plugin/lib/sandbox.js Normal file
View File

@ -0,0 +1,7 @@
const nodeFns = require("./nodeFns")
window._ = require("lodash")
window.utools = require("./utoolsLite")()
Object.keys(nodeFns).forEach(key => {
window[key] = nodeFns[key]
})

14
plugin/lib/utoolsLite.js Normal file
View File

@ -0,0 +1,14 @@
const getuToolsLite = () => {
var utoolsLite = Object.assign({}, _.cloneDeep(utools))
// if (utools.isDev()) return utoolsLite
const dbBlackList = ['db', 'dbStorage', 'removeFeature', 'setFeature', 'onDbPull']
const payBlackList = ['fetchUserServerTemporaryToken', 'getUserServerTemporaryToken', 'openPayment', 'fetchUserPayments']
const etcBlackList = ['onPluginEnter', 'onPluginOut', 'createBrowserWindow']
_.concat(dbBlackList, payBlackList, etcBlackList).forEach(item => {
delete utoolsLite[item]
})
Object.freeze(utoolsLite)
return utoolsLite
}
module.exports = getuToolsLite

View File

@ -12,6 +12,7 @@ const kill = require('tree-kill')
require('ses')
window._ = require("lodash")
window.getuToolsLite = require("./lib/utoolsLite")
window.yuQueClient = axios.create({
baseURL: 'https://www.yuque.com/api/v2/',
headers: {
@ -61,6 +62,7 @@ const shortCodes = [
const ctlKey = utools.isMacOs() ? 'command' : 'control'
const createBrowserWindow = utools.createBrowserWindow
window.quickcommand = {
// 模拟复制操作
simulateCopy: function() {
@ -173,6 +175,28 @@ window.quickcommand = {
process.execPath.replace(/\/Frameworks\/.*/, "/MacOS/uTools") :
process.execPath
child_process.exec(uToolsPath, () => {})
},
// 显示一个全功能的 devTools
showDevTools: function() {
const browserWindow = createBrowserWindow('lib/sandbox.html', {
show: false,
title: '快捷命令',
webPreferences: {
preload: 'lib/sandbox.js',
},
}, () => {
browserWindow.webContents.openDevTools({
mode: 'detach'
})
let timer = setInterval(() => {
if (!browserWindow.webContents.isDevToolsOpened()) {
clearInterval(timer)
browserWindow.destroy()
}
}, 1000)
})
return browserWindow
}
}
@ -450,28 +474,6 @@ let parseItem = item => {
let parseStdout = stdout => stdout.map(x => parseItem(x)).join("\n")
// 屏蔽危险函数
window.getuToolsLite = () => {
var utoolsLite = Object.assign({}, _.cloneDeep(utools))
// if (utools.isDev()) return utoolsLite
// 数据库相关接口
delete utoolsLite.db
delete utoolsLite.dbStorage
delete utoolsLite.removeFeature
delete utoolsLite.setFeature
delete utoolsLite.onDbPull
// 支付相关接口
delete utoolsLite.fetchUserServerTemporaryToken
delete utoolsLite.getUserServerTemporaryToken
delete utoolsLite.openPayment
delete utoolsLite.fetchUserPayments
// 其他
delete utoolsLite.onPluginEnter
delete utoolsLite.onPluginOut
Object.freeze(utoolsLite)
return utoolsLite
}
let getSandboxFuns = () => {
var sandbox = {
fetch: fetch.bind(window),