Merge remote-tracking branch 'origin/master'
20
README.md
|
@ -40,18 +40,24 @@
|
|||
* 某些npm install的时候,并且使用cnpm也无法安装时,可以尝试开启npm代理再试
|
||||
|
||||
### 6、 增强功能
|
||||
* 等你来探索
|
||||
* 众所周知的原因,不能在这里展示太多,自己下载来安装看看吧
|
||||
* 反正用了这个之后,上面那些dns优选什么的特性好像都不香了
|
||||
|
||||
|
||||
## 快速开始
|
||||
目前仅支持windows
|
||||
支持windows、Mac
|
||||
|
||||
### DevSidecar桌面应用
|
||||
|
||||
#### 1 下载安装包
|
||||
下载安装包:
|
||||
|
||||
[阿里云](https://dev-sidecar.docmirror.cn/update/DevSidecar-1.3.1.exe)
|
||||
|
||||
阿里云直接下载
|
||||
[windows版](http://dev-sidecar.docmirror.cn/update/DevSidecar-1.4.0.exe)
|
||||
[Mac版](http://dev-sidecar.docmirror.cn/update/DevSidecar-1.4.0.dmg)
|
||||
注意:mac版安装需要在“系统偏好设置->安全性与隐私->通用”中解锁并允许应用安装
|
||||
|
||||
从Release下载
|
||||
[Gitee Release](https://gitee.com/docmirror/dev-sidecar/releases)
|
||||
[Github Release](https://github.com/docmirror/dev-sidecar/releases)
|
||||
|
||||
|
@ -62,10 +68,10 @@
|
|||
|
||||
#### 2 安装根证书
|
||||
|
||||
第一次打开会提示安装证书,根据提示操作即可
|
||||
第一次打开会提示安装证书,根据提示操作即可
|
||||
|
||||
|
||||
>根证书是本地随机生成的,所以不用担心根证书的安全问题
|
||||
>根证书是本地随机生成的,所以不用担心根证书的安全问题
|
||||
>你也可以在加速服务设置中自定义根证书(PEM格式的证书与私钥)
|
||||
|
||||
|
||||
#### 3 开始加速吧
|
||||
|
|
|
@ -14,5 +14,5 @@
|
|||
"ignore": []
|
||||
}
|
||||
},
|
||||
"version": "1.3.1"
|
||||
"version": "1.4.0"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docmirror/dev-sidecar",
|
||||
"version": "1.3.1",
|
||||
"version": "1.4.0",
|
||||
"description": "给开发者的加速代理工具",
|
||||
"main": "src/index.js",
|
||||
"keywords": [
|
||||
|
@ -16,7 +16,7 @@
|
|||
"start": "node ./start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docmirror/mitmproxy": "^1.3.0",
|
||||
"@docmirror/mitmproxy": "^1.4.0",
|
||||
"agentkeepalive": "^2.1.1",
|
||||
"babel-preset-es2020": "^1.0.2",
|
||||
"charset": "^1.0.0",
|
||||
|
@ -53,7 +53,8 @@
|
|||
"eslint-plugin-node": "^11.1.0",
|
||||
"eslint-plugin-promise": "^4.2.1",
|
||||
"eslint-plugin-standard": "^4.0.0",
|
||||
"eslint-plugin-vue": "^6.2.2"
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"mocha": "^8.2.1"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
|
@ -73,5 +74,6 @@
|
|||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
],
|
||||
"gitHead": "660c77e4279c1499f771270941526614f927bdf1"
|
||||
}
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
const fs = require('fs')
|
||||
const Shell = require('./shell')
|
||||
const lodash = require('lodash')
|
||||
const defConfig = require('./config/index.js')
|
||||
const JSON5 = require('json5').default
|
||||
|
||||
console.log('JSON5', JSON5)
|
||||
let configTarget = lodash.cloneDeep(defConfig)
|
||||
|
||||
function get () {
|
||||
return configTarget
|
||||
}
|
||||
|
||||
function _deleteDisabledItem (target) {
|
||||
lodash.forEach(target, (item, key) => {
|
||||
if (item == null) {
|
||||
|
@ -13,11 +21,86 @@ function _deleteDisabledItem (target) {
|
|||
}
|
||||
})
|
||||
}
|
||||
const getDefaultConfigBasePath = function () {
|
||||
return get().server.setting.userBasePath
|
||||
}
|
||||
function _getConfigPath () {
|
||||
const dir = getDefaultConfigBasePath()
|
||||
if (!fs.existsSync(dir)) {
|
||||
fs.mkdirSync(dir)
|
||||
}
|
||||
return dir + '/config.json5'
|
||||
}
|
||||
|
||||
function doMerge (defObj, newObj) {
|
||||
const defObj2 = { ...defObj }
|
||||
const newObj2 = {}
|
||||
for (const key in newObj) {
|
||||
const newValue = newObj[key]
|
||||
const defValue = defObj[key]
|
||||
if (newValue != null && defValue == null) {
|
||||
newObj2[key] = newValue
|
||||
continue
|
||||
}
|
||||
if (lodash.isEqual(newValue, defValue)) {
|
||||
delete defObj2[key]
|
||||
continue
|
||||
}
|
||||
|
||||
if (lodash.isArray(newValue)) {
|
||||
delete defObj2[key]
|
||||
newObj2[key] = newValue
|
||||
continue
|
||||
}
|
||||
if (lodash.isObject(newValue)) {
|
||||
newObj2[key] = doMerge(defValue, newValue)
|
||||
delete defObj2[key]
|
||||
continue
|
||||
} else {
|
||||
// 基础类型,直接覆盖
|
||||
delete defObj2[key]
|
||||
newObj2[key] = newValue
|
||||
continue
|
||||
}
|
||||
}
|
||||
// defObj 里面剩下的是被删掉的
|
||||
lodash.forEach(defObj2, (defValue, key) => {
|
||||
newObj2[key] = null
|
||||
})
|
||||
return newObj2
|
||||
}
|
||||
|
||||
const configApi = {
|
||||
get () {
|
||||
return configTarget
|
||||
/**
|
||||
* 保存自定义的 config
|
||||
* @param newConfig
|
||||
*/
|
||||
save (newConfig) {
|
||||
// 对比默认config的异同
|
||||
// configApi.set(newConfig)
|
||||
const defConfig = configApi.getDefault()
|
||||
const saveConfig = doMerge(defConfig, newConfig)
|
||||
fs.writeFileSync(_getConfigPath(), JSON5.stringify(saveConfig, null, 2))
|
||||
configApi.reload()
|
||||
return saveConfig
|
||||
},
|
||||
doMerge,
|
||||
/**
|
||||
* 读取后合并配置
|
||||
* @returns {*}
|
||||
*/
|
||||
reload () {
|
||||
const path = _getConfigPath()
|
||||
if (!fs.existsSync(path)) {
|
||||
return configApi.get()
|
||||
}
|
||||
const file = fs.readFileSync(path)
|
||||
const userConfig = JSON5.parse(file.toString())
|
||||
configApi.set(userConfig)
|
||||
const config = configApi.get()
|
||||
return config || {}
|
||||
},
|
||||
get,
|
||||
set (newConfig) {
|
||||
if (newConfig == null) {
|
||||
return
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const path = require('path')
|
||||
function getUserBasePath () {
|
||||
const userHome = process.env.USERPROFILE
|
||||
const userHome = process.env.USERPROFILE || process.env.HOME || '/'
|
||||
return path.resolve(userHome, './.dev-sidecar')
|
||||
}
|
||||
function getRootCaCertPath () {
|
||||
|
@ -67,8 +67,7 @@ module.exports = {
|
|||
},
|
||||
'github.githubassets.com': {
|
||||
'.*': {
|
||||
proxy: 'assets.fastgit.org',
|
||||
backup: ['github.githubassets.com'],
|
||||
proxy: 'assets-gh.docmirror.top/_proxy',
|
||||
test: 'https://github.githubassets.com/favicons/favicon.svg',
|
||||
desc: '静态资源加速'
|
||||
}
|
||||
|
@ -162,6 +161,8 @@ module.exports = {
|
|||
},
|
||||
mapping: {
|
||||
'assets.fastgit.org': 'usa',
|
||||
'*yarnpkg.com': 'usa',
|
||||
'*cloudfront.net': 'usa',
|
||||
'*github.io': 'usa',
|
||||
'img.shields.io': 'usa',
|
||||
'*.github.com': 'usa',
|
||||
|
@ -170,7 +171,6 @@ module.exports = {
|
|||
// "解决push的时候需要输入密码的问题",
|
||||
'github.com': 'usa',
|
||||
'*.vuepress.vuejs.org': 'usa',
|
||||
'github.docmirror.cn': 'usa',
|
||||
'gh.docmirror.top': 'usa'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,6 @@ module.exports = {
|
|||
name: 'Git代理',
|
||||
enabled: false,
|
||||
setting: {
|
||||
sslVerify: false
|
||||
sslVerify: true // 是否关闭sslVerify
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ const Plugin = function (context) {
|
|||
`git config --global http.proxy http://${ip}:${port} `,
|
||||
`git config --global https.proxy http://${ip}:${port} `
|
||||
]
|
||||
if (pluginConfig.setting.sslVerify === true) {
|
||||
if (config.get().plugin.git.setting.sslVerify === true) {
|
||||
cmds.push('git config --global http.sslVerify false ')
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ const Plugin = function (context) {
|
|||
'git config --global --unset https.proxy ',
|
||||
'git config --global --unset http.proxy '
|
||||
]
|
||||
if (pluginConfig.setting.sslVerify === true) {
|
||||
if (config.get().plugin.git.setting.sslVerify === true) {
|
||||
cmds.push('git config --global http.sslVerify true ')
|
||||
}
|
||||
const ret = await shell.exec(cmds, { type: 'cmd' })
|
||||
|
|
|
@ -9,6 +9,7 @@ module.exports = {
|
|||
cafile: false,
|
||||
NODE_EXTRA_CA_CERTS: false,
|
||||
NODE_TLS_REJECT_UNAUTHORIZED: false,
|
||||
yarnRegistry: undefined,
|
||||
registry: 'https://registry.npmjs.org'// 可以选择切换官方或者淘宝镜像
|
||||
},
|
||||
// intercepts: {
|
||||
|
|
|
@ -39,7 +39,11 @@ const NodePlugin = function (context) {
|
|||
async setNpmEnv (list) {
|
||||
const cmds = []
|
||||
for (const item of list) {
|
||||
cmds.push(`npm config set ${item.key} ${item.value}`)
|
||||
if (item.value != null) {
|
||||
cmds.push(`npm config set ${item.key} ${item.value}`)
|
||||
} else {
|
||||
cmds.push(`npm config delete ${item.key}`)
|
||||
}
|
||||
}
|
||||
const ret = await shell.exec(cmds, { type: 'cmd' })
|
||||
return ret
|
||||
|
@ -54,6 +58,29 @@ const NodePlugin = function (context) {
|
|||
return ret
|
||||
},
|
||||
|
||||
async setYarnEnv (list) {
|
||||
const cmds = []
|
||||
log.debug('yarn set:', JSON.stringify(list))
|
||||
for (const item of list) {
|
||||
if (item.value != null) {
|
||||
cmds.push(`yarn config set ${item.key} ${item.value}`)
|
||||
} else {
|
||||
cmds.push(`yarn config delete ${item.key}`)
|
||||
}
|
||||
}
|
||||
const ret = await shell.exec(cmds, { type: 'cmd' })
|
||||
return ret
|
||||
},
|
||||
|
||||
async unsetYarnEnv (list) {
|
||||
const cmds = []
|
||||
for (const item of list) {
|
||||
cmds.push(`yarn config delete ${item} `)
|
||||
}
|
||||
const ret = await shell.exec(cmds, { type: 'cmd' })
|
||||
return ret
|
||||
},
|
||||
|
||||
async getVariables () {
|
||||
const currentMap = await nodeApi.getNpmEnv()
|
||||
const list = []
|
||||
|
@ -81,8 +108,12 @@ const NodePlugin = function (context) {
|
|||
}
|
||||
},
|
||||
|
||||
async setRegistry (registry) {
|
||||
await nodeApi.setNpmEnv([{ key: 'registry', value: registry }])
|
||||
async setRegistry ({ registry, type }) {
|
||||
if (type === 'npm') {
|
||||
await nodeApi.setNpmEnv([{ key: 'registry', value: registry }])
|
||||
} else {
|
||||
await nodeApi.setYarnEnv([{ key: 'registry', value: registry }])
|
||||
}
|
||||
return true
|
||||
},
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
module.exports = {
|
||||
name: '梯子',
|
||||
enabled: false,
|
||||
enabled: true,
|
||||
server: {
|
||||
},
|
||||
serverDefault: {
|
||||
|
|
|
@ -5,6 +5,12 @@ const lodash = require('lodash')
|
|||
const fork = require('child_process').fork
|
||||
const log = require('../../utils/util.log')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
let JSON5 = require('json5')
|
||||
if (JSON5.default) {
|
||||
JSON5 = JSON5.default
|
||||
}
|
||||
|
||||
let server
|
||||
function fireStatus (status) {
|
||||
event.fire('status', { key: 'server.enabled', value: status })
|
||||
|
@ -58,8 +64,8 @@ const serverApi = {
|
|||
serverConfig.plugin = allConfig.plugin
|
||||
// fireStatus('ing') // 启动中
|
||||
const basePath = serverConfig.setting.userBasePath
|
||||
const runningConfig = basePath + '/running.json'
|
||||
fs.writeFileSync(runningConfig, JSON.stringify(serverConfig))
|
||||
const runningConfig = path.join(basePath, '/running.json')
|
||||
fs.writeFileSync(runningConfig, JSON5.stringify(serverConfig, null, 2))
|
||||
const serverProcess = fork(mitmproxyPath, [runningConfig])
|
||||
server = {
|
||||
id: serverProcess.pid,
|
||||
|
|
|
@ -16,5 +16,6 @@ module.exports = {
|
|||
setSystemProxy,
|
||||
async exec (cmds, args) {
|
||||
return shell.getSystemShell().exec(cmds, args)
|
||||
}
|
||||
},
|
||||
getSystemPlatform: shell.getSystemPlatform
|
||||
}
|
||||
|
|
|
@ -9,6 +9,9 @@ const refreshInternetPs = require('./refresh-internet')
|
|||
const PowerShell = require('node-powershell')
|
||||
const log = require('../../../utils/util.log')
|
||||
const path = require('path')
|
||||
const childProcess = require('child_process')
|
||||
const util = require('util')
|
||||
const _exec = util.promisify(childProcess.exec)
|
||||
const _lanIP = [
|
||||
'localhost',
|
||||
'127.*',
|
||||
|
@ -119,11 +122,22 @@ const executor = {
|
|||
return _winSetProxy(exec, ip, port)
|
||||
}
|
||||
},
|
||||
async linux (exec, { port }) {
|
||||
async linux (exec, params) {
|
||||
throw Error('暂未实现此功能')
|
||||
},
|
||||
async mac (exec, { port }) {
|
||||
throw Error('暂未实现此功能')
|
||||
async mac (exec, params) {
|
||||
// exec = _exec
|
||||
let wifiAdaptor = await exec('sh -c "networksetup -listnetworkserviceorder | grep `route -n get 0.0.0.0 | grep \'interface\' | cut -d \':\' -f2` -B 1 | head -n 1 | cut -d \' \' -f2"')
|
||||
wifiAdaptor = wifiAdaptor.trim()
|
||||
|
||||
if (params == null) {
|
||||
await exec(`networksetup -setwebproxystate '${wifiAdaptor}' off`)
|
||||
await exec(`networksetup -setsecurewebproxystate '${wifiAdaptor}' off`)
|
||||
} else {
|
||||
const { ip, port } = params
|
||||
await exec(`networksetup -setwebproxy '${wifiAdaptor}' ${ip} ${port}`)
|
||||
await exec(`networksetup -setsecurewebproxy '${wifiAdaptor}' ${ip} ${port}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,10 +8,16 @@ const executor = {
|
|||
return true
|
||||
},
|
||||
async linux (exec, { certPath }) {
|
||||
throw Error('暂未实现此功能')
|
||||
const cmds = ['open "' + certPath + '"']
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const ret = await exec(cmds, { type: 'cmd' })
|
||||
return true
|
||||
},
|
||||
async mac (exec, { certPath }) {
|
||||
throw Error('暂未实现此功能')
|
||||
const cmds = ['open "' + certPath + '"']
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const ret = await exec(cmds, { type: 'cmd' })
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,23 +14,25 @@ class SystemShell {
|
|||
|
||||
class LinuxSystemShell extends SystemShell {
|
||||
static async exec (cmds) {
|
||||
if (cmds instanceof String) {
|
||||
if (typeof cmds === 'string') {
|
||||
cmds = [cmds]
|
||||
}
|
||||
for (const cmd of cmds) {
|
||||
await exec(cmd)
|
||||
await childExec(cmd)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DarwinSystemShell extends SystemShell {
|
||||
static async exec (cmds) {
|
||||
if (cmds instanceof String) {
|
||||
if (typeof cmds === 'string') {
|
||||
cmds = [cmds]
|
||||
}
|
||||
let ret
|
||||
for (const cmd of cmds) {
|
||||
await exec(cmd)
|
||||
ret = await childExec(cmd)
|
||||
}
|
||||
return ret
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
// eslint-disable-next-line no-unused-vars
|
||||
const server = require('@docmirror/mitmproxy')
|
||||
let configPath = 'C:/Users/Administrator/.dev-sidecar/running.json'
|
||||
const JSON5 = require('json5')
|
||||
const path = require('path')
|
||||
const home = process.env.HOME
|
||||
let configPath = path.join(home, '.dev-sidecar/running.json')
|
||||
if (process.argv && process.argv.length > 3) {
|
||||
configPath = process.argv[2]
|
||||
}
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const configJson = fs.readFileSync(configPath)
|
||||
const config = JSON.parse(configJson)
|
||||
const config = JSON5.parse(configJson)
|
||||
const scriptDir = '../../gui/extra/scripts/'
|
||||
config.setting.script.defaultDir = path.join(__dirname, scriptDir)
|
||||
server.start(config)
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
{
|
||||
server: {
|
||||
intercepts: {
|
||||
'github1.githubassets.com': {
|
||||
'.*': {
|
||||
redirect: 'assets.fastgit.org',
|
||||
test: 'https://github.githubassets.com/favicons/favicon.svg',
|
||||
desc: '静态资源加速'
|
||||
}
|
||||
},
|
||||
'github.githubassets.com': null,
|
||||
'notify3.note.youdao.com': {
|
||||
'/pushserver3/.*': {
|
||||
abort: true
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
const config = require('../src/config')
|
||||
|
||||
config.set({
|
||||
server: {
|
||||
intercepts: {
|
||||
'github1.githubassets.com': {
|
||||
'.*': {
|
||||
redirect: 'assets.fastgit.org',
|
||||
test: 'https://github.githubassets.com/favicons/favicon.svg',
|
||||
desc: '静态资源加速'
|
||||
}
|
||||
},
|
||||
'github.githubassets.com': null
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
console.log(config.get())
|
||||
|
||||
config.reload()
|
|
@ -0,0 +1,13 @@
|
|||
const childProcess = require('child_process')
|
||||
const util = require('util')
|
||||
const exec = util.promisify(childProcess.exec)
|
||||
|
||||
async function test () {
|
||||
const wifiAdaptor = (await exec('sh -c "networksetup -listnetworkserviceorder | grep `route -n get 0.0.0.0 | grep \'interface\' | cut -d \':\' -f2` -B 1 | head -n 1 | cut -d \' \' -f2"')).stdout.trim()
|
||||
|
||||
await exec(`networksetup -setwebproxystate '${wifiAdaptor}' off`)
|
||||
return await exec(`networksetup -setsecurewebproxystate '${wifiAdaptor}' off`)
|
||||
}
|
||||
test().then((ret) => {
|
||||
console.log('haha', ret)
|
||||
})
|
|
@ -93,10 +93,10 @@
|
|||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@docmirror/mitmproxy@^1.2.2":
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@docmirror/mitmproxy/-/mitmproxy-1.2.2.tgz#a4d0020e073eaa68adb7902b5634ab2a1a3bc058"
|
||||
integrity sha512-xW1xyqUfpGAZZTzqSjoQM0Mmq8VVEyvS8AiTUBvgpxUAYG2sqNCacLETwYfNBP1MStUBtGXKklcISpIY6+R+DA==
|
||||
"@docmirror/mitmproxy@^1.3.3":
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@docmirror/mitmproxy/-/mitmproxy-1.3.3.tgz#dcef8fb8d4d552f556a6c60691db4d887efa40c6"
|
||||
integrity sha512-YZdVaw3h+zv4Nq70JE4kwAMAtJJyCySSUI2NggG+y6dlr3Pztz7/yQG5Dx6WWYnUmfCWzDO+V3yHkxMBJ/ffGQ==
|
||||
dependencies:
|
||||
agentkeepalive "^2.1.1"
|
||||
child_process "^1.0.2"
|
||||
|
@ -193,6 +193,11 @@
|
|||
resolved "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1596839391651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
|
||||
integrity sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=
|
||||
|
||||
"@ungap/promise-all-settled@1.1.2":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
|
||||
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
|
||||
|
||||
"@vue/cli-plugin-eslint@~4.5.0":
|
||||
version "4.5.7"
|
||||
resolved "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.5.7.tgz?cache=0&sync_timestamp=1602060137408&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-eslint%2Fdownload%2F%40vue%2Fcli-plugin-eslint-4.5.7.tgz#e66c0011f8d58bd86ee525f2062c6dab2c4272da"
|
||||
|
@ -435,6 +440,11 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3:
|
|||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ansi-colors@4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
|
||||
integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
|
||||
|
||||
ansi-escapes@^4.2.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
|
||||
|
@ -447,6 +457,11 @@ ansi-regex@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
||||
|
||||
ansi-regex@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
|
||||
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
|
||||
|
||||
ansi-regex@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
|
||||
|
@ -864,6 +879,11 @@ brorand@^1.0.1:
|
|||
resolved "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
|
||||
integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
|
||||
|
||||
browser-stdout@1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
|
||||
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
|
||||
|
||||
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
|
||||
|
@ -995,6 +1015,16 @@ callsites@^3.0.0:
|
|||
resolved "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
|
||||
integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=
|
||||
|
||||
camelcase@^5.0.0:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
|
||||
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
||||
|
||||
camelcase@^6.0.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
|
||||
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||
|
@ -1020,7 +1050,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4
|
|||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
chalk@^4.1.0:
|
||||
chalk@^4.0.0, chalk@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
|
||||
integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo=
|
||||
|
@ -1043,6 +1073,21 @@ child_process@^1.0.2:
|
|||
resolved "https://registry.npm.taobao.org/child_process/download/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a"
|
||||
integrity sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=
|
||||
|
||||
chokidar@3.4.3, chokidar@^3.4.1:
|
||||
version "3.4.3"
|
||||
resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-3.4.3.tgz?cache=0&sync_timestamp=1602585381749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
|
||||
integrity sha1-wd84IxRI5FykrFiObHlXO6alfVs=
|
||||
dependencies:
|
||||
anymatch "~3.1.1"
|
||||
braces "~3.0.2"
|
||||
glob-parent "~5.1.0"
|
||||
is-binary-path "~2.1.0"
|
||||
is-glob "~4.0.1"
|
||||
normalize-path "~3.0.0"
|
||||
readdirp "~3.5.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.1.2"
|
||||
|
||||
chokidar@^2.1.8:
|
||||
version "2.1.8"
|
||||
resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1602585381749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
|
||||
|
@ -1062,21 +1107,6 @@ chokidar@^2.1.8:
|
|||
optionalDependencies:
|
||||
fsevents "^1.2.7"
|
||||
|
||||
chokidar@^3.4.1:
|
||||
version "3.4.3"
|
||||
resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-3.4.3.tgz?cache=0&sync_timestamp=1602585381749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b"
|
||||
integrity sha1-wd84IxRI5FykrFiObHlXO6alfVs=
|
||||
dependencies:
|
||||
anymatch "~3.1.1"
|
||||
braces "~3.0.2"
|
||||
glob-parent "~5.1.0"
|
||||
is-binary-path "~2.1.0"
|
||||
is-glob "~4.0.1"
|
||||
normalize-path "~3.0.0"
|
||||
readdirp "~3.5.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.1.2"
|
||||
|
||||
chownr@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||
|
@ -1136,6 +1166,15 @@ cli-width@^3.0.0:
|
|||
resolved "https://registry.npm.taobao.org/cli-width/download/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
|
||||
integrity sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=
|
||||
|
||||
cliui@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
|
||||
integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
|
||||
dependencies:
|
||||
string-width "^3.1.0"
|
||||
strip-ansi "^5.2.0"
|
||||
wrap-ansi "^5.1.0"
|
||||
|
||||
clone@^1.0.2:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz?cache=0&sync_timestamp=1589682821772&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclone%2Fdownload%2Fclone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
|
||||
|
@ -1360,6 +1399,13 @@ date-format@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/date-format/-/date-format-3.0.0.tgz#eb8780365c7d2b1511078fb491e6479780f3ad95"
|
||||
integrity sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==
|
||||
|
||||
debug@4.2.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npm.taobao.org/debug/download/debug-4.2.0.tgz?cache=0&sync_timestamp=1600502894812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
|
||||
integrity sha1-fxUPk5IOlMWPVXTC/QGjEQ7/5/E=
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
|
@ -1374,12 +1420,15 @@ debug@^3.1.0:
|
|||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npm.taobao.org/debug/download/debug-4.2.0.tgz?cache=0&sync_timestamp=1600502894812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
|
||||
integrity sha1-fxUPk5IOlMWPVXTC/QGjEQ7/5/E=
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
decamelize@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
||||
|
||||
decamelize@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
|
||||
integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
|
||||
|
||||
decode-uri-component@^0.2.0:
|
||||
version "0.2.0"
|
||||
|
@ -1440,6 +1489,11 @@ des.js@^1.0.0:
|
|||
inherits "^2.0.1"
|
||||
minimalistic-assert "^1.0.0"
|
||||
|
||||
diff@4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
||||
|
||||
diffie-hellman@^5.0.0:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
|
||||
|
@ -1671,6 +1725,11 @@ es-to-primitive@^1.2.1:
|
|||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.2"
|
||||
|
||||
escape-string-regexp@4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
||||
|
||||
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
@ -2104,6 +2163,14 @@ find-root@^1.1.0:
|
|||
resolved "https://registry.npm.taobao.org/find-root/download/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
|
||||
integrity sha1-q8/Iunb3CMQql7PWhbfpRQv7nOQ=
|
||||
|
||||
find-up@5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
|
||||
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
|
||||
dependencies:
|
||||
locate-path "^6.0.0"
|
||||
path-exists "^4.0.0"
|
||||
|
||||
find-up@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz?cache=0&sync_timestamp=1597169842138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
|
||||
|
@ -2135,6 +2202,11 @@ flat-cache@^2.0.1:
|
|||
rimraf "2.6.3"
|
||||
write "1.0.3"
|
||||
|
||||
flat@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
|
||||
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
|
||||
|
||||
flatted@^2.0.0, flatted@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
|
||||
|
@ -2234,6 +2306,11 @@ functional-red-black-tree@^1.0.1:
|
|||
resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
||||
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
|
||||
|
||||
get-caller-file@^2.0.1:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||
|
||||
get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz?cache=0&sync_timestamp=1597056502934&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
|
@ -2278,7 +2355,7 @@ glob-to-regexp@^0.3.0:
|
|||
resolved "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
|
||||
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
|
||||
|
||||
glob@^7.1.3, glob@^7.1.4:
|
||||
glob@7.1.6, glob@^7.1.3, glob@^7.1.4:
|
||||
version "7.1.6"
|
||||
resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
|
||||
integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=
|
||||
|
@ -2326,6 +2403,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
|
|||
resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz?cache=0&sync_timestamp=1589682809142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraceful-fs%2Fdownload%2Fgraceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
|
||||
integrity sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=
|
||||
|
||||
growl@1.10.5:
|
||||
version "1.10.5"
|
||||
resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
|
||||
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
|
||||
|
||||
har-schema@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
||||
|
@ -2416,6 +2498,11 @@ hash.js@^1.0.0, hash.js@^1.0.3:
|
|||
inherits "^2.0.3"
|
||||
minimalistic-assert "^1.0.1"
|
||||
|
||||
he@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
|
||||
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
||||
|
||||
hmac-drbg@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
|
||||
|
@ -2713,6 +2800,11 @@ is-number@^7.0.0:
|
|||
resolved "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=
|
||||
|
||||
is-plain-obj@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
|
||||
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
|
||||
|
||||
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
|
||||
|
@ -2818,7 +2910,7 @@ js-tokens@^3.0.2:
|
|||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
||||
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
|
||||
|
||||
js-yaml@^3.13.1:
|
||||
js-yaml@3.14.0, js-yaml@^3.13.1:
|
||||
version "3.14.0"
|
||||
resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
|
||||
integrity sha1-p6NBcPJqIbsWJCTYray0ETpp5II=
|
||||
|
@ -2995,11 +3087,25 @@ locate-path@^3.0.0:
|
|||
p-locate "^3.0.0"
|
||||
path-exists "^3.0.0"
|
||||
|
||||
locate-path@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
|
||||
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
|
||||
dependencies:
|
||||
p-locate "^5.0.0"
|
||||
|
||||
lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.7.0:
|
||||
version "4.17.20"
|
||||
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
|
||||
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
|
||||
|
||||
log-symbols@4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920"
|
||||
integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==
|
||||
dependencies:
|
||||
chalk "^4.0.0"
|
||||
|
||||
log-symbols@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
|
||||
|
@ -3161,7 +3267,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
|||
resolved "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||
|
||||
minimatch@^3.0.2, minimatch@^3.0.4:
|
||||
minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
|
@ -3204,6 +3310,37 @@ mkdirp@^0.5.1, mkdirp@^0.5.3:
|
|||
dependencies:
|
||||
minimist "^1.2.5"
|
||||
|
||||
mocha@^8.2.1:
|
||||
version "8.2.1"
|
||||
resolved "https://registry.npmjs.org/mocha/-/mocha-8.2.1.tgz#f2fa68817ed0e53343d989df65ccd358bc3a4b39"
|
||||
integrity sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w==
|
||||
dependencies:
|
||||
"@ungap/promise-all-settled" "1.1.2"
|
||||
ansi-colors "4.1.1"
|
||||
browser-stdout "1.3.1"
|
||||
chokidar "3.4.3"
|
||||
debug "4.2.0"
|
||||
diff "4.0.2"
|
||||
escape-string-regexp "4.0.0"
|
||||
find-up "5.0.0"
|
||||
glob "7.1.6"
|
||||
growl "1.10.5"
|
||||
he "1.2.0"
|
||||
js-yaml "3.14.0"
|
||||
log-symbols "4.0.0"
|
||||
minimatch "3.0.4"
|
||||
ms "2.1.2"
|
||||
nanoid "3.1.12"
|
||||
serialize-javascript "5.0.1"
|
||||
strip-json-comments "3.1.1"
|
||||
supports-color "7.2.0"
|
||||
which "2.0.2"
|
||||
wide-align "1.1.3"
|
||||
workerpool "6.0.2"
|
||||
yargs "13.3.2"
|
||||
yargs-parser "13.1.2"
|
||||
yargs-unparser "2.0.0"
|
||||
|
||||
move-concurrently@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
|
||||
|
@ -3236,6 +3373,11 @@ nan@^2.12.1:
|
|||
resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591684976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
|
||||
integrity sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=
|
||||
|
||||
nanoid@3.1.12:
|
||||
version "3.1.12"
|
||||
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654"
|
||||
integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A==
|
||||
|
||||
nanoid@^2.1.0:
|
||||
version "2.1.11"
|
||||
resolved "https://registry.npm.taobao.org/nanoid/download/nanoid-2.1.11.tgz?cache=0&sync_timestamp=1596064062089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnanoid%2Fdownload%2Fnanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
|
||||
|
@ -3519,6 +3661,13 @@ p-limit@^2.0.0:
|
|||
dependencies:
|
||||
p-try "^2.0.0"
|
||||
|
||||
p-limit@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
|
||||
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
|
||||
dependencies:
|
||||
yocto-queue "^0.1.0"
|
||||
|
||||
p-locate@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
|
||||
|
@ -3533,6 +3682,13 @@ p-locate@^3.0.0:
|
|||
dependencies:
|
||||
p-limit "^2.0.0"
|
||||
|
||||
p-locate@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
|
||||
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
|
||||
dependencies:
|
||||
p-limit "^3.0.2"
|
||||
|
||||
p-try@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
|
||||
|
@ -3619,6 +3775,11 @@ path-exists@^3.0.0:
|
|||
resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
||||
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
|
||||
|
||||
path-exists@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
|
||||
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
|
@ -3990,6 +4151,16 @@ require-context@^1.1.0:
|
|||
dependencies:
|
||||
node-dir "^0.1.17"
|
||||
|
||||
require-directory@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
|
||||
|
||||
require-main-filename@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
|
||||
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
||||
|
||||
resolve-from@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
||||
|
@ -4115,6 +4286,13 @@ semver@^6.1.0, semver@^6.1.2:
|
|||
resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1589682805026&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=
|
||||
|
||||
serialize-javascript@5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4"
|
||||
integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==
|
||||
dependencies:
|
||||
randombytes "^2.1.0"
|
||||
|
||||
serialize-javascript@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-4.0.0.tgz?cache=0&sync_timestamp=1599740650381&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
|
||||
|
@ -4122,6 +4300,11 @@ serialize-javascript@^4.0.0:
|
|||
dependencies:
|
||||
randombytes "^2.1.0"
|
||||
|
||||
set-blocking@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-value@^2.0.0, set-value@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
|
||||
|
@ -4366,7 +4549,15 @@ streamroller@^2.2.4:
|
|||
debug "^4.1.1"
|
||||
fs-extra "^8.1.0"
|
||||
|
||||
string-width@^3.0.0:
|
||||
"string-width@^1.0.2 || 2":
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
||||
dependencies:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
strip-ansi "^4.0.0"
|
||||
|
||||
string-width@^3.0.0, string-width@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
|
||||
integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE=
|
||||
|
@ -4421,7 +4612,14 @@ strip-ansi@^3.0.0:
|
|||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
||||
strip-ansi@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
|
||||
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
|
||||
dependencies:
|
||||
ansi-regex "^3.0.0"
|
||||
|
||||
strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1589682795383&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
|
||||
integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=
|
||||
|
@ -4450,11 +4648,18 @@ strip-indent@^2.0.0:
|
|||
resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
|
||||
integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
|
||||
|
||||
strip-json-comments@^3.0.1:
|
||||
strip-json-comments@3.1.1, strip-json-comments@^3.0.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594567532500&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=
|
||||
|
||||
supports-color@7.2.0, supports-color@^7.1.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611709087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||
integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
|
@ -4467,13 +4672,6 @@ supports-color@^5.3.0:
|
|||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
supports-color@^7.1.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611709087&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
|
||||
integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=
|
||||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
table@^5.2.3:
|
||||
version "5.4.6"
|
||||
resolved "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
|
||||
|
@ -4883,6 +5081,11 @@ webpack@^4.0.0:
|
|||
watchpack "^1.7.4"
|
||||
webpack-sources "^1.4.1"
|
||||
|
||||
which-module@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
||||
|
||||
which-typed-array@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npm.taobao.org/which-typed-array/download/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2"
|
||||
|
@ -4895,6 +5098,13 @@ which-typed-array@^1.1.2:
|
|||
has-symbols "^1.0.1"
|
||||
is-typed-array "^1.1.3"
|
||||
|
||||
which@2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
which@^1.2.9:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1589682812246&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||
|
@ -4902,6 +5112,13 @@ which@^1.2.9:
|
|||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
wide-align@1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
|
||||
integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
|
||||
dependencies:
|
||||
string-width "^1.0.2 || 2"
|
||||
|
||||
winreg@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.npm.taobao.org/winreg/download/winreg-1.2.4.tgz#ba065629b7a925130e15779108cf540990e98d1b"
|
||||
|
@ -4919,6 +5136,20 @@ worker-farm@^1.7.0:
|
|||
dependencies:
|
||||
errno "~0.1.7"
|
||||
|
||||
workerpool@6.0.2:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438"
|
||||
integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q==
|
||||
|
||||
wrap-ansi@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
|
||||
integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
|
||||
dependencies:
|
||||
ansi-styles "^3.2.0"
|
||||
string-width "^3.0.0"
|
||||
strip-ansi "^5.0.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
@ -4956,6 +5187,45 @@ yallist@^4.0.0:
|
|||
resolved "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=
|
||||
|
||||
yargs-parser@13.1.2, yargs-parser@^13.1.2:
|
||||
version "13.1.2"
|
||||
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
|
||||
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
|
||||
dependencies:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs-unparser@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
|
||||
integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
|
||||
dependencies:
|
||||
camelcase "^6.0.0"
|
||||
decamelize "^4.0.0"
|
||||
flat "^5.0.2"
|
||||
is-plain-obj "^2.1.0"
|
||||
|
||||
yargs@13.3.2:
|
||||
version "13.3.2"
|
||||
resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
|
||||
integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
|
||||
dependencies:
|
||||
cliui "^5.0.0"
|
||||
find-up "^3.0.0"
|
||||
get-caller-file "^2.0.1"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^2.0.0"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^3.0.0"
|
||||
which-module "^2.0.0"
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^13.1.2"
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
yorkie@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9"
|
||||
|
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 584 B After Width: | Height: | Size: 577 B |
Before Width: | Height: | Size: 941 B After Width: | Height: | Size: 949 B |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 264 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 570 B |
After Width: | Height: | Size: 830 B |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 353 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 584 B After Width: | Height: | Size: 577 B |
Before Width: | Height: | Size: 941 B After Width: | Height: | Size: 949 B |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 353 KiB |
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docmirror/dev-sidecar-gui",
|
||||
"version": "1.3.1",
|
||||
"version": "1.4.0",
|
||||
"private": false,
|
||||
"license": "MPL-2.0",
|
||||
"scripts": {
|
||||
|
@ -10,13 +10,14 @@
|
|||
"electron": "vue-cli-service electron:serve",
|
||||
"postinstall": "electron-builder install-app-deps",
|
||||
"postuninstall": "electron-builder install-app-deps",
|
||||
"electron:generate-icons": "electron-icon-builder --input=./public/icon.png --output=build --flatten"
|
||||
"electron:icons": "electron-icon-builder --input=./public/logo/win.png --output=build --flatten",
|
||||
"electron:icons-mac": "electron-icon-builder --input=./public/logo/mac.png --output=build --flatten"
|
||||
},
|
||||
"author": "docmirror.cn",
|
||||
"main": "background.js",
|
||||
"dependencies": {
|
||||
"@docmirror/dev-sidecar": "^1.3.1",
|
||||
"@docmirror/mitmproxy": "^1.3.0",
|
||||
"@docmirror/dev-sidecar": "^1.4.0",
|
||||
"@docmirror/mitmproxy": "^1.4.0",
|
||||
"ant-design-vue": "^1.6.5",
|
||||
"core-js": "^3.6.5",
|
||||
"electron-baidu-tongji": "^1.0.5",
|
||||
|
@ -70,5 +71,6 @@
|
|||
"last 2 versions",
|
||||
"not dead"
|
||||
],
|
||||
"__npminstall_done": false
|
||||
"__npminstall_done": false,
|
||||
"gitHead": "50b256b12aa1e03fe565c3f7fda9ca9b862064c0"
|
||||
}
|
||||
|
|
After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 57 KiB |
|
@ -0,0 +1,18 @@
|
|||
<svg id="svg_canvas" viewBox="0 0 280 280" width="280" height="280" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="scale(2)">
|
||||
<g class="logo-entity" transform="translate(142,-1.5) scale(-1.30,1.30)">
|
||||
<circle fill="#1B7FCD" cx="45.9" cy="55.2" r="17.5"
|
||||
></circle>
|
||||
<circle cx="23.5" cy="21.7" r="9.6" fill="#1B7FCD"></circle>
|
||||
<circle cx="52.3" cy="23.9" r="6.9" fill="#1B7FCD"></circle>
|
||||
<circle stroke="#1B7FCD" stroke-miterlimit="10" cx="32.5" cy="89.7" r="9.6" fill="#1B7FCD"></circle>
|
||||
|
||||
<circle fill="none" stroke="#1B7FCD" stroke-width="5" stroke-miterlimit="10" cx="84" cy="61.3" r="10.4"></circle>
|
||||
|
||||
<line fill="none" stroke="#1B7FCD" stroke-width="5" stroke-miterlimit="10" x1="37.9" y1="44.7" x2="26.2" y2="26.9"></line>
|
||||
<line fill="none" stroke="#1B7FCD" stroke-width="5" stroke-miterlimit="10" x1="48.1" y1="44.7" x2="51.3" y2="27.7"></line>
|
||||
<line fill="none" stroke="#1B7FCD" stroke-width="5" stroke-miterlimit="10" x1="40.1" y1="67.4" x2="34.9" y2="82.5"></line>
|
||||
<line fill="none" stroke="#1B7FCD" stroke-width="5" stroke-miterlimit="10" x1="57" y1="55.5" x2="71.8" y2="58.6"></line>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 192 KiB |
|
@ -0,0 +1,43 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1024px" height="1024px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>512x512@2x</title>
|
||||
<defs>
|
||||
<path d="M824,256.627066 C824,246.845101 824,237.062137 823.943901,227.279173 C823.894902,219.038203 823.799902,210.799233 823.575904,202.562263 C823.091908,184.609328 822.032915,166.502394 818.839939,148.749458 C815.601963,130.740524 810.314002,113.979585 801.981064,97.6166446 C793.789124,81.5337032 783.088204,66.8167567 770.320298,54.0578032 C757.555393,41.2988496 742.834502,30.6048886 726.745621,22.4179184 C710.365742,14.0829487 693.586866,8.79696797 675.558,5.55997976 C657.803131,2.37199136 639.691265,1.31499521 621.738398,0.829996978 C613.495459,0.60699779 605.25252,0.512998132 597.007581,0.461998318 C587.219653,0.401998536 577.431726,0.406998518 567.643798,0.406998518 L453.99664,0 L368.997269,0 L257.361095,0.406998518 C247.554168,0.406998518 237.74724,0.401998536 227.940313,0.461998318 C219.678374,0.512998132 211.420435,0.60699779 203.161496,0.829996978 C185.166629,1.31499521 167.013764,2.37299136 149.216896,5.56497974 C131.164029,8.80096796 114.360154,14.0849487 97.9582749,22.4139184 C81.8353943,30.6018886 67.0825035,41.2968496 54.2905981,54.0578032 C41.5006928,66.8157567 30.7797722,81.5297032 22.5728329,97.6096446 C14.2168948,113.980585 8.91893398,130.751524 5.67295801,148.770458 C2.47698167,166.516394 1.4179895,184.617328 0.930993109,202.562263 C0.708994752,210.800233 0.612995463,219.039203 0.562995833,227.279173 C0.502996277,237.063137 0,249.216093 0,258.999057 L0,369.088656 L0,454.998343 L0.50799624,567.426934 C0.50799624,577.222898 0.503996269,587.018863 0.562995833,596.814827 C0.612995463,605.066797 0.708994752,613.316767 0.931993101,621.565737 C1.4179895,639.541672 2.47898165,657.674606 5.67795797,675.451541 C8.92293395,693.484475 14.2198947,710.269414 22.5688329,726.653354 C30.7767722,742.759296 41.4996928,757.495242 54.2905981,770.272196 C67.0815035,783.049149 81.8303943,793.75711 97.950275,801.95608 C114.362153,810.30205 131.174029,815.595031 149.237895,818.836019 C167.026764,822.029007 185.173629,823.088003 203.161496,823.573002 C211.420435,823.796001 219.679374,823.891 227.941313,823.941 C237.74824,824 247.554168,824 257.361095,824 L370.006261,824 L455.216631,824 L567.643798,824 C577.431726,824 587.219653,824 597.007581,823.941 C605.25252,823.891 613.495459,823.796001 621.738398,823.573002 C639.698265,823.087003 657.816131,822.027007 675.578999,818.832019 C693.596866,815.591031 710.367742,810.30005 726.738621,801.95908 C742.830502,793.76111 757.554393,783.051149 770.320298,770.272196 C783.086204,757.497242 793.786124,742.763296 801.978064,726.660354 C810.316002,710.268414 815.603963,693.475475 818.843939,675.430541 C822.033915,657.660606 823.091908,639.534672 823.576904,621.565737 C823.799902,613.315767 823.894902,605.065797 823.943901,596.814827 C824,587.018863 824,577.222898 824,567.426934 C824,567.426934 824,456.983336 824,454.998343 L824,368.998657 C824,367.532662 824,256.627066 824,256.627066" id="path-1"></path>
|
||||
<filter x="-2.4%" y="-1.2%" width="104.9%" height="104.9%" filterUnits="objectBoundingBox" id="filter-3">
|
||||
<feOffset dx="0" dy="10" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
|
||||
<feGaussianBlur stdDeviation="5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="Template---Icons---App" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="App-Icons---@2x" transform="translate(0.000000, -590.000000)">
|
||||
<g id="512x512@2x" transform="translate(0.000000, 590.000000)">
|
||||
<g id="Artwork" transform="translate(100.000000, 100.000000)">
|
||||
<mask id="mask-2" fill="white">
|
||||
<use xlink:href="#path-1"></use>
|
||||
</mask>
|
||||
<g id="Mask">
|
||||
<use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-1"></use>
|
||||
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||
</g>
|
||||
<g id="编组" mask="url(#mask-2)">
|
||||
<g>
|
||||
<rect id="矩形" stroke="#979797" fill="#1B7FCD" x="0.5" y="0.5" width="823" height="823"></rect>
|
||||
<g transform="translate(411.500000, 411.500000) scale(-1, 1) translate(-411.500000, -411.500000) translate(92.000000, 65.000000)">
|
||||
<ellipse id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" cx="253.5" cy="343" rx="138.5" ry="139"></ellipse>
|
||||
<circle id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" cx="76" cy="76" r="76"></circle>
|
||||
<circle id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" cx="304.5" cy="94.5" r="55.5"></circle>
|
||||
<circle id="椭圆形" stroke="#FFFFFF" stroke-width="2.8" fill="#FFFFFF" fill-rule="nonzero" cx="147" cy="617" r="76"></circle>
|
||||
<circle id="椭圆形" stroke="#FFFFFF" stroke-width="50" cx="556.5" cy="390.5" r="82.5"></circle>
|
||||
<line x1="189" y1="260" x2="97" y2="118" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
<line x1="272" y1="258" x2="297" y2="123" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
<line x1="208" y1="439" x2="167" y2="560" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
<line x1="342" y1="344" x2="474" y2="368" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 176 KiB |
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="1024px" height="1024px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>window</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="window">
|
||||
<rect id="矩形" stroke="#979797" fill="#1B7FCD" fill-rule="nonzero" x="0.5" y="0.5" width="1023" height="1023" rx="140"></rect>
|
||||
<g id="编组" transform="translate(512.000000, 511.000000) scale(-1, 1) translate(-512.000000, -511.000000) translate(113.000000, 78.000000)">
|
||||
<ellipse id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" cx="316.962617" cy="428.651363" rx="172.775701" ry="173.945481"></ellipse>
|
||||
<ellipse id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" cx="95.088785" cy="95.0487805" rx="95.088785" ry="95.0487805"></ellipse>
|
||||
<ellipse id="椭圆形" fill="#FFFFFF" fill-rule="nonzero" cx="380.976636" cy="117.413199" rx="68.9859813" ry="68.9569584"></ellipse>
|
||||
<ellipse id="椭圆形" stroke="#FFFFFF" stroke-width="2.8" fill="#FFFFFF" fill-rule="nonzero" cx="183.341121" cy="770.95122" rx="95.088785" ry="95.0487805"></ellipse>
|
||||
<ellipse id="椭圆形" stroke="#FFFFFF" stroke-width="50" cx="694.831776" cy="488.289813" rx="103.168224" ry="103.124821"></ellipse>
|
||||
<line x1="236.168224" y1="325.526542" x2="121.813084" y2="147.853659" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
<line x1="339.336449" y1="323.041607" x2="370.411215" y2="154.065997" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
<line x1="259.785047" y1="549.170732" x2="208.82243" y2="699.509326" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
<line x1="427.588785" y1="429.893831" x2="591.663551" y2="460.955524" id="路径" stroke="#FFFFFF" stroke-width="50"></line>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 521 KiB |
|
@ -40,7 +40,11 @@ function setTray (app) {
|
|||
}
|
||||
]
|
||||
// 设置系统托盘图标
|
||||
const iconPath = path.join(__dirname, '../extra/icons/128x128.png')
|
||||
let icon = '128x128.png'
|
||||
if (isMac) {
|
||||
icon = '16x16.png'
|
||||
}
|
||||
const iconPath = path.join(__dirname, '../extra/icons/', icon)
|
||||
const appTray = new Tray(iconPath)
|
||||
|
||||
// 图标的上下文菜单
|
||||
|
@ -119,9 +123,19 @@ async function quit (app, callback) {
|
|||
tray.displayBalloon({ title: '正在关闭', content: '关闭中,请稍候。。。' })
|
||||
}
|
||||
await beforeQuit()
|
||||
forceClose = true
|
||||
app.quit()
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function setDock () {
|
||||
const { app } = require('electron')
|
||||
if (process.platform === 'darwin') {
|
||||
app.whenReady().then(() => {
|
||||
app.dock.setIcon(path.join(__dirname, '../build/mac/512x512.png'))
|
||||
})
|
||||
}
|
||||
}
|
||||
// -------------执行开始---------------
|
||||
app.disableHardwareAcceleration() // 禁用gpu
|
||||
|
||||
|
@ -135,6 +149,9 @@ if (!isFirstInstance) {
|
|||
} else {
|
||||
app.on('before-quit', async (event) => {
|
||||
log.info('before-quit')
|
||||
if (process.platform === 'darwin') {
|
||||
quit(app)
|
||||
}
|
||||
})
|
||||
app.on('second-instance', (event, commandLine, workingDirectory) => {
|
||||
log.info('new app started', commandLine)
|
||||
|
@ -156,11 +173,15 @@ if (!isFirstInstance) {
|
|||
app.on('activate', () => {
|
||||
// On macOS it's common to re-create a window in the app when the
|
||||
// dock icon is clicked and there are no other windows open.
|
||||
if (win === null) {
|
||||
if (win == null) {
|
||||
createWindow()
|
||||
} else {
|
||||
win.show()
|
||||
}
|
||||
})
|
||||
|
||||
// setDock()
|
||||
|
||||
// This method will be called when Electron has finished
|
||||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
|
@ -175,7 +196,7 @@ if (!isFirstInstance) {
|
|||
}
|
||||
try {
|
||||
createWindow()
|
||||
const context = { win, app, beforeQuit, ipcMain, dialog,log }
|
||||
const context = { win, app, beforeQuit, ipcMain, dialog, log }
|
||||
backend.install(context) // 模块安装
|
||||
} catch (err) {
|
||||
log.info('err', err)
|
||||
|
@ -190,6 +211,8 @@ if (!isFirstInstance) {
|
|||
})
|
||||
}
|
||||
|
||||
setDock()
|
||||
|
||||
// Exit cleanly on request from parent process in development mode.
|
||||
if (isDevelopment) {
|
||||
if (process.platform === 'win32') {
|
||||
|
|
|
@ -33,6 +33,9 @@ const localApi = {
|
|||
},
|
||||
getConfigDir () {
|
||||
return getDefaultConfigBasePath()
|
||||
},
|
||||
getSystemPlatform () {
|
||||
return DevSidecar.api.shell.getSystemPlatform()
|
||||
}
|
||||
},
|
||||
/**
|
||||
|
@ -86,35 +89,6 @@ const localApi = {
|
|||
restart () {
|
||||
return DevSidecar.api.server.restart({ mitmproxyPath })
|
||||
}
|
||||
},
|
||||
config: {
|
||||
/**
|
||||
* 保存自定义的 config
|
||||
* @param newConfig
|
||||
*/
|
||||
save (newConfig) {
|
||||
// 对比默认config的异同
|
||||
DevSidecar.api.config.set(newConfig)
|
||||
const defConfig = DevSidecar.api.config.getDefault()
|
||||
const saveConfig = doMerge(defConfig, newConfig)
|
||||
fs.writeFileSync(_getConfigPath(), JSON5.stringify(saveConfig, null, 2))
|
||||
return saveConfig
|
||||
},
|
||||
/**
|
||||
* 读取后合并配置
|
||||
* @returns {*}
|
||||
*/
|
||||
reload () {
|
||||
const path = _getConfigPath()
|
||||
if (!fs.existsSync(path)) {
|
||||
return DevSidecar.api.config.get()
|
||||
}
|
||||
const file = fs.readFileSync(path)
|
||||
const userConfig = JSON5.parse(file.toString())
|
||||
DevSidecar.api.config.set(userConfig)
|
||||
const config = DevSidecar.api.config.get()
|
||||
return config || {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -136,51 +110,6 @@ function _getSettingsPath () {
|
|||
}
|
||||
return dir + '/setting.json5'
|
||||
}
|
||||
function _getConfigPath () {
|
||||
const dir = getDefaultConfigBasePath()
|
||||
if (!fs.existsSync(dir)) {
|
||||
fs.mkdirSync(dir)
|
||||
}
|
||||
return dir + '/config.json5'
|
||||
}
|
||||
|
||||
function doMerge (defObj, newObj) {
|
||||
const defObj2 = { ...defObj }
|
||||
const newObj2 = {}
|
||||
for (const key in newObj) {
|
||||
const newValue = newObj[key]
|
||||
const defValue = defObj[key]
|
||||
if (newValue != null && defValue == null) {
|
||||
newObj2[key] = newValue
|
||||
continue
|
||||
}
|
||||
if (lodash.isEqual(newValue, defValue)) {
|
||||
delete defObj2[key]
|
||||
continue
|
||||
}
|
||||
|
||||
if (lodash.isArray(newValue)) {
|
||||
delete defObj2[key]
|
||||
newObj2[key] = newValue
|
||||
continue
|
||||
}
|
||||
if (lodash.isObject(newValue)) {
|
||||
newObj2[key] = doMerge(defValue, newValue)
|
||||
delete defObj2[key]
|
||||
continue
|
||||
} else {
|
||||
// 基础类型,直接覆盖
|
||||
delete defObj2[key]
|
||||
newObj2[key] = newValue
|
||||
continue
|
||||
}
|
||||
}
|
||||
// defObj 里面剩下的是被删掉的
|
||||
lodash.forEach(defObj2, (defValue, key) => {
|
||||
newObj2[key] = null
|
||||
})
|
||||
return newObj2
|
||||
}
|
||||
|
||||
function invoke (api, param) {
|
||||
let target = lodash.get(localApi, api)
|
||||
|
@ -217,7 +146,7 @@ export default {
|
|||
})
|
||||
|
||||
// 合并用户配置
|
||||
localApi.config.reload()
|
||||
DevSidecar.api.config.reload()
|
||||
// 启动所有
|
||||
localApi.startup()
|
||||
},
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
// eslint-disable-next-line no-unused-vars
|
||||
const server = require('@docmirror/mitmproxy')
|
||||
const JSON5 = require('json5').default
|
||||
const configPath = process.argv[2]
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const configJson = fs.readFileSync(configPath)
|
||||
const config = JSON.parse(configJson)
|
||||
const config = JSON5.parse(configJson)
|
||||
let scriptDir = '../extra/scripts/'
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
scriptDir = '../extra/scripts/'
|
||||
|
|
|
@ -95,15 +95,15 @@ function updateHandle (app, win, beforeQuit, updateUrl, log) {
|
|||
export default {
|
||||
install (context) {
|
||||
const { app, win, beforeQuit, log } = context
|
||||
let updateUrl = 'http://dev-sidecar.docmirror.cn/update/'
|
||||
const updateUrl = 'http://dev-sidecar.docmirror.cn/update/'
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
Object.defineProperty(app, 'isPackaged', {
|
||||
get () {
|
||||
return true
|
||||
}
|
||||
})
|
||||
// updateUrl = 'https://dev-sidecar.docmirror.cn/update/'
|
||||
updateUrl = 'http://localhost/dev-sidecar/'
|
||||
// updateUrl = 'http://dev-sidecar.docmirror.cn/update/'
|
||||
// updateUrl = 'http://localhost/dev-sidecar/'
|
||||
}
|
||||
updateHandle(app, win, beforeQuit, updateUrl, log)
|
||||
}
|
||||
|
|
|
@ -56,6 +56,21 @@ function install (app, api) {
|
|||
if (updateParams.autoDownload !== false) {
|
||||
app.$message.info('发现新版本,正在下载中...')
|
||||
updateParams.downloading = true
|
||||
|
||||
api.shell.getSystemPlatform().then((platform) => {
|
||||
if (platform === 'mac') {
|
||||
app.$notification.open({
|
||||
duration: 10,
|
||||
message: 'Mac暂不支持自动升级',
|
||||
description:
|
||||
'请前往github或gitee项目主页下载新版本手动安装,听说苹果对于Electron开发的应用审核不好过。。。。好吧我承认是因为没有钱买苹果开发者账号,┓( ´∀` )┏',
|
||||
onClick: () => {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
api.update.downloadUpdate()
|
||||
return
|
||||
}
|
||||
|
|
|
@ -15,10 +15,18 @@
|
|||
<a-button type="primary" style="float:right" @click="doSetup()">点此去安装</a-button>
|
||||
</template>
|
||||
<div>
|
||||
请按如下步骤将<b>本地随机生成</b>的根证书添加到<b>信任的根证书颁发机构</b><br/>
|
||||
证书是本地随机生成,所以信任它是安全的
|
||||
<b>本应用正常使用必须安装和信任CA根证书</b>,该证书是应用启动时本地随机生成的<br/>
|
||||
<template v-if="this.systemPlatform === 'mac'">
|
||||
1、点击右上角“点此去安装按钮”,打开钥匙串<br/>
|
||||
2、然后按如下图步骤将随机生成的根证书设置为始终信任<br/>
|
||||
3、可能需要重新启动应用和浏览器才能生效<br/>
|
||||
</template>
|
||||
<template v-else>
|
||||
1、点击右上角“点此去安装按钮”,打开证书<br/>
|
||||
2、然后按如下图步骤将根证书添加到<b>信任的根证书颁发机构</b><br/>
|
||||
</template>
|
||||
</div>
|
||||
<img width="100%" src="/setup.png" />
|
||||
<img width="100%" :src="setupImage" />
|
||||
|
||||
</a-drawer>
|
||||
</template>
|
||||
|
@ -40,9 +48,22 @@ export default {
|
|||
},
|
||||
data () {
|
||||
return {
|
||||
systemPlatform: 'win'
|
||||
}
|
||||
},
|
||||
created () {
|
||||
async created () {
|
||||
const platform = await this.$api.info.getSystemPlatform()
|
||||
console.log('11', platform)
|
||||
this.systemPlatform = platform
|
||||
},
|
||||
computed: {
|
||||
setupImage () {
|
||||
if (this.systemPlatform === 'mac') {
|
||||
return '/setup-mac.png'
|
||||
} else {
|
||||
return '/setup.png'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
afterVisibleChange (val) {
|
||||
|
|
|
@ -132,18 +132,18 @@ export default {
|
|||
return
|
||||
}
|
||||
this.$confirm({
|
||||
title: '提示',
|
||||
content: '第一次使用,请先安装CA根证书',
|
||||
cancelText: '关闭此提示',
|
||||
title: '第一次使用,请先安装CA根证书',
|
||||
content: '本应用正常使用,必须安装和信任CA根证书',
|
||||
cancelText: '下次',
|
||||
okText: '去安装',
|
||||
onOk: () => {
|
||||
this.openSetupCa()
|
||||
},
|
||||
onCancel: () => {
|
||||
this.setting.rootCa = this.setting.rootCa || {}
|
||||
const rootCa = this.setting.rootCa
|
||||
rootCa.noTip = true
|
||||
this.$api.setting.save(this.setting)
|
||||
// const rootCa = this.setting.rootCa
|
||||
// rootCa.noTip = true
|
||||
// this.$api.setting.save(this.setting)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
</a-checkbox>
|
||||
npm代理启用后必须关闭
|
||||
</a-form-item>
|
||||
<a-form-item label="切换registry" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-form-item label="npm registry" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-radio-group v-model="config.plugin.node.setting.registry" @change="onSwitchRegistry"
|
||||
default-value="https://registry.npmjs.org" button-style="solid">
|
||||
<a-radio-button value="https://registry.npmjs.org">
|
||||
|
@ -37,6 +37,17 @@
|
|||
</a-radio-group>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="yarn registry" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-radio-group v-model="config.plugin.node.setting.yarnRegistry" :default-value="null" @change="onSwitchYarnRegistry" button-style="solid">
|
||||
<a-radio-button :value="null">
|
||||
yarn
|
||||
</a-radio-button>
|
||||
<a-radio-button value="https://registry.npm.taobao.org">
|
||||
taobao
|
||||
</a-radio-button>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="镜像变量设置" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-checkbox v-model="config.plugin.node.startup.variables">
|
||||
自动设置
|
||||
|
@ -93,12 +104,19 @@ export default {
|
|||
})
|
||||
},
|
||||
async onSwitchRegistry (event) {
|
||||
await this.setRegistry(event.target.value)
|
||||
await this.setRegistry({ registry: event.target.value, type: 'npm' })
|
||||
this.$message.success('切换成功')
|
||||
},
|
||||
async setRegistry (registry) {
|
||||
async onSwitchYarnRegistry (event) {
|
||||
const registry = event.target.value
|
||||
console.log('registry', registry)
|
||||
await this.setRegistry({ registry, type: 'yarn' })
|
||||
this.$message.success('切换成功')
|
||||
},
|
||||
async setRegistry ({ registry, type }) {
|
||||
this.apply()
|
||||
await this.$api.plugin.node.setRegistry(registry)
|
||||
console.log('type', type)
|
||||
await this.$api.plugin.node.setRegistry({ registry, type })
|
||||
},
|
||||
setNpmVariableAll () {
|
||||
this.saveConfig().then(() => {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<ds-container>
|
||||
<template slot="header">
|
||||
Ladder
|
||||
梯子
|
||||
<span>
|
||||
<a-button type="primary" @click="openExternal('https://github.com/docmirror/dev-sidecar-doc/blob/main/ow.md')">原理说明</a-button>
|
||||
</span>
|
||||
|
@ -9,12 +9,13 @@
|
|||
|
||||
<div v-if="config">
|
||||
<a-form layout="horizontal">
|
||||
<a-form-item label="Ladder" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-form-item label="梯子" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-checkbox v-model="config.plugin.overwall.enabled">
|
||||
启用
|
||||
</a-checkbox>
|
||||
<div>这是什么功能?你懂的!偷偷的用,别声张。(不要看视频,流量挺小的。)</div>
|
||||
<div>建议按右上角“说明”自建服务端</div>
|
||||
<div>仅供技术学习与探讨</div>
|
||||
</a-form-item>
|
||||
<a-form-item label="PAC" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-checkbox v-model="config.plugin.overwall.pac.enabled">
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
</a-form-item>
|
||||
<a-form-item label="代理端口" :label-col="labelCol" :wrapper-col="wrapperCol" >
|
||||
<a-input v-model="config.server.port"/>
|
||||
<div>修改后需要重启应用</div>
|
||||
</a-form-item>
|
||||
<a-form-item label="校验SSL" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-checkbox v-model="config.server.setting.NODE_TLS_REJECT_UNAUTHORIZED">
|
||||
|
|
|
@ -52,11 +52,13 @@ module.exports = {
|
|||
allowElevation: true,
|
||||
allowToChangeInstallationDirectory: true
|
||||
},
|
||||
mac: {
|
||||
icon: 'build/mac/icon.icns'
|
||||
},
|
||||
publish: {
|
||||
provider: 'generic',
|
||||
url: ''
|
||||
},
|
||||
compression: 'maximum'
|
||||
}
|
||||
},
|
||||
chainWebpackMainProcess (config) {
|
||||
config.entry('mitmproxy').add(path.join(__dirname, 'src/bridge/mitmproxy.js'))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@docmirror/mitmproxy",
|
||||
"version": "1.3.0",
|
||||
"version": "1.4.0",
|
||||
"description": "",
|
||||
"main": "src/index.js",
|
||||
"keywords": [
|
||||
|
@ -63,5 +63,6 @@
|
|||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
],
|
||||
"gitHead": "660c77e4279c1499f771270941526614f927bdf1"
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ config.caKeyFileName = 'dev-sidecar.ca.key.pem'
|
|||
|
||||
config.defaultPort = 1181
|
||||
|
||||
config.caName = 'This certificate is generated locally'
|
||||
config.caName = 'DevSidecar - This certificate is generated locally'
|
||||
|
||||
config.caBasePath = buildDefaultCABasePath()
|
||||
|
||||
|
@ -18,7 +18,7 @@ config.setDefaultCABasePath = function (path) {
|
|||
config.caBasePath = path
|
||||
}
|
||||
function buildDefaultCABasePath () {
|
||||
const userHome = process.env.USERPROFILE
|
||||
const userHome = process.env.USERPROFILE || process.env.HOME || '/'
|
||||
return path.resolve(userHome, './.dev-sidecar')
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ module.exports = function createOverWallIntercept (overWallConfig) {
|
|||
if (keys.length === 0) {
|
||||
return null
|
||||
}
|
||||
const regexpMap = matchUtil.domainMapRegexply(overWallConfig.intercepts)
|
||||
const regexpMap = matchUtil.domainMapRegexply(overWallConfig.targets)
|
||||
return {
|
||||
sslConnectInterceptor: (req, cltSocket, head) => {
|
||||
const hostname = req.url.split(':')[0]
|
||||
|
|
|
@ -19,7 +19,7 @@ const pki = forge.pki
|
|||
// }
|
||||
|
||||
utils.createCA = function (CN) {
|
||||
const keys = pki.rsa.generateKeyPair(2046)
|
||||
const keys = pki.rsa.generateKeyPair(2048)
|
||||
const cert = pki.createCertificate()
|
||||
cert.publicKey = keys.publicKey
|
||||
cert.serialNumber = (new Date()).getTime() + ''
|
||||
|
@ -74,7 +74,7 @@ utils.covertNodeCertToForgeCert = function (originCertificate) {
|
|||
}
|
||||
|
||||
utils.createFakeCertificateByDomain = function (caKey, caCert, domain) {
|
||||
const keys = pki.rsa.generateKeyPair(2046)
|
||||
const keys = pki.rsa.generateKeyPair(2048)
|
||||
const cert = pki.createCertificate()
|
||||
cert.publicKey = keys.publicKey
|
||||
|
||||
|
@ -156,7 +156,7 @@ utils.createFakeCertificateByDomain = function (caKey, caCert, domain) {
|
|||
utils.createFakeCertificateByCA = function (caKey, caCert, originCertificate) {
|
||||
const certificate = utils.covertNodeCertToForgeCert(originCertificate)
|
||||
|
||||
const keys = pki.rsa.generateKeyPair(2046)
|
||||
const keys = pki.rsa.generateKeyPair(2048)
|
||||
const cert = pki.createCertificate()
|
||||
cert.publicKey = keys.publicKey
|
||||
|
||||
|
|