Compare commits
No commits in common. "main" and "master" have entirely different histories.
10
package.json
10
package.json
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "esp32-program-burner",
|
||||
"name": "esp32-program-batch-burner",
|
||||
"version": "3.3.3",
|
||||
"description": "esp32程序烧录",
|
||||
"description": "esp32程序批量烧录",
|
||||
"main": "dist/main/app.js",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
@ -12,15 +12,15 @@
|
|||
"electron:build": "rimraf dist && vite build && tsc -p tsconfig.electron.json && electron-builder --dir && yarn electron:copy-esp32-dir"
|
||||
},
|
||||
"dependencies": {
|
||||
"archiver": "^5.3.1",
|
||||
"archiver": "5.3.1",
|
||||
"serialport": "9.2.4",
|
||||
"vue": "^3.2.26"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@atao60/fse-cli": "^0.1.7",
|
||||
"@vitejs/plugin-vue": "^1.1.5",
|
||||
"archiver": "^5.3.1",
|
||||
"@vue/compiler-sfc": "^3.2.26",
|
||||
"archiver": "^5.3.1",
|
||||
"autoprefixer": "^10.4.2",
|
||||
"cross-env": "^7.0.3",
|
||||
"electron": "13.6.6",
|
||||
|
@ -34,7 +34,7 @@
|
|||
"vite": "^2.0.5"
|
||||
},
|
||||
"build": {
|
||||
"productName": "esp32程序烧录",
|
||||
"productName": "esp32程序批量烧录",
|
||||
"appId": "your.id",
|
||||
"mac": {
|
||||
"category": "your.app.category.type"
|
||||
|
|
|
@ -29,7 +29,7 @@ function createWindow() {
|
|||
|
||||
win.webContents.on('did-finish-load', () => {
|
||||
serialPortManager.sendPortList(win.webContents)
|
||||
})
|
||||
});
|
||||
|
||||
win.hookWindowMessage(537, (wParam, lParam) => {
|
||||
// WM_DEVICECHANGE = 537; 通知应用程序对设备或计算机的硬件配置的更改
|
||||
|
@ -40,7 +40,7 @@ function createWindow() {
|
|||
// console.log(wParam)
|
||||
serialPortManager.sendPortList(win.webContents)
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
app.whenReady().then(createWindow)
|
||||
|
|
|
@ -3,15 +3,14 @@ import { execFile } from 'child_process'
|
|||
|
||||
const ESP32_RELATIVE_PATH = process.env.NODE_ENV === 'development' ? './public/esp32/' : './esp32/'
|
||||
|
||||
ipcMain.on('BURN', (event, {selectedPort, selectedFilePath}) => {
|
||||
event.reply('CLEAN_MSG')
|
||||
ipcMain.on('BURN', (event, {selectedPort, selectedFilePath, errsum, sucsum}) => {
|
||||
// event.reply('CLEAN_MSG')
|
||||
execFile(ESP32_RELATIVE_PATH + 'esptool.exe',
|
||||
['--chip', 'esp32', '--port', selectedPort, '--baud', '921600', '--before', 'default_reset', '--after', 'hard_reset', 'write_flash', '-z', '--flash_mode', 'dio', '--flash_freq', '80m', '--flash_size', 'detect',
|
||||
'0xe000', ESP32_RELATIVE_PATH + 'boot_app0.bin',
|
||||
'0x1000', ESP32_RELATIVE_PATH + 'bootloader.bin',
|
||||
'0x10000', selectedFilePath,
|
||||
'0x8000', ESP32_RELATIVE_PATH + 'partitions.bin'], (error, stdout, stderr) => {
|
||||
event.reply('BURN_END')
|
||||
if (error) {
|
||||
console.log('-----------------------------')
|
||||
console.error(error);
|
||||
|
@ -61,18 +60,26 @@ ipcMain.on('BURN', (event, {selectedPort, selectedFilePath}) => {
|
|||
console.log('未知错误')
|
||||
errmsg = '未知错误,请重新烧录'
|
||||
}
|
||||
event.reply('ALERT_MSG', errmsg)
|
||||
event.reply('APPEND_MSG', error.stack)
|
||||
// event.reply('ALERT_MSG', errmsg)
|
||||
event.reply('ERR_SUM', errsum+1)
|
||||
// event.reply('APPEND_MSG', error.stack)
|
||||
console.log('-----------------------------')
|
||||
console.log(stdout);
|
||||
console.log('-----------------------------')
|
||||
event.reply('APPEND_MSG', stdout)
|
||||
// event.reply('APPEND_MSG', stdout)
|
||||
event.reply('APPEND_MSG', selectedPort + '烧录失败' + '\n' + error.stack + stdout)
|
||||
event.reply('FAILED_RESULT', selectedPort)
|
||||
event.reply('BURN_END')
|
||||
}else{
|
||||
console.log('-----------------------------')
|
||||
console.log(stdout);
|
||||
console.log('-----------------------------')
|
||||
event.reply('ALERT_MSG', '烧录成功!')
|
||||
event.reply('APPEND_MSG', stdout)
|
||||
// event.reply('ALERT_MSG', '烧录成功!')
|
||||
event.reply('SUC_SUM', sucsum+1)
|
||||
// event.reply('APPEND_MSG', stdout)
|
||||
event.reply('APPEND_MSG', selectedPort + '烧录成功')
|
||||
event.reply('SUC_RESULT', selectedPort)
|
||||
event.reply('BURN_END')
|
||||
}
|
||||
});
|
||||
})
|
|
@ -0,0 +1,6 @@
|
|||
export const filters = [
|
||||
{ usbProductId: 8963 , usbVendorId: 1659 }, // 核心处理模块(micro-usb),蓝色无线通信模块
|
||||
{ usbProductId: 29986, usbVendorId: 6790 }, // 核心处理模块(type-c),红色无线通信模块
|
||||
{ usbProductId: 29987, usbVendorId: 6790 }, // 核心处理模块(type-c)
|
||||
]
|
||||
|
|
@ -1,10 +1,20 @@
|
|||
import SerialPort from 'serialport'
|
||||
import { filters } from './data'
|
||||
|
||||
const serialPortManager = {
|
||||
sendPortList: async (sender) => {
|
||||
if (!sender) return
|
||||
const ports = await serialPortManager.list_ports()
|
||||
sender.send('LIST_PORTS', ports)
|
||||
let targetArr = []
|
||||
ports.forEach(element => {
|
||||
filters.forEach(item => {
|
||||
//十六进制转十进制
|
||||
if(parseInt(element.vendorId,16)==item.usbVendorId&&parseInt(element.productId,16)==item.usbProductId){
|
||||
targetArr.push(element)
|
||||
}
|
||||
})
|
||||
})
|
||||
sender.send('LIST_PORTS', targetArr)
|
||||
},
|
||||
list_ports: async () => {
|
||||
const ports = await SerialPort.list()
|
||||
|
|
|
@ -1,20 +1,12 @@
|
|||
<template>
|
||||
<h1 class="text-center text-3xl title">ESP32程序烧录</h1>
|
||||
<h1 class="text-center text-3xl title">ESP32程序批量烧录</h1>
|
||||
<div class="home">
|
||||
<div class="operatebox">
|
||||
<div class="flexbox">
|
||||
<div class="p-4 nop">
|
||||
<div class="textport">串 口 选 择</div>
|
||||
<select
|
||||
class="selebox px-2 border-2 rounded"
|
||||
:class="loading ? 'bg-gray-500' : ''"
|
||||
:disabled="loading"
|
||||
v-model="selectedPort"
|
||||
>
|
||||
<option v-for="port in ports" :key="port.pnpId" :value="port.path">
|
||||
{{ port.path }}
|
||||
</option>
|
||||
</select>
|
||||
<div class="textport">待烧录串口</div>
|
||||
<textarea disabled class="commsg resize-none border-2" :value="ports">
|
||||
</textarea>
|
||||
</div>
|
||||
<div class="p-4 nop">
|
||||
<div class="textport">文 件 路 径</div>
|
||||
|
@ -41,7 +33,7 @@
|
|||
class="anni px-4 border-2 rounded text-white"
|
||||
:class="loading ? 'bg-gray-500' : 'bg-blue-500'"
|
||||
:disabled="loading"
|
||||
@click="burn"
|
||||
@click="burn_start"
|
||||
>
|
||||
<svg
|
||||
v-if="loadings"
|
||||
|
@ -70,7 +62,7 @@
|
|||
<div class="tips">
|
||||
<h6 class="tipstitle">操 作 方 法</h6>
|
||||
<textarea disabled class="tipsmsg resize-none border-2">
|
||||
1. 通过下拉框选择计算机对应的串口号。
|
||||
1. 待烧录或烧录失败的串口会自动显示。
|
||||
2. 点击按钮选择需要烧录的程序。
|
||||
3. 点击烧录按钮,等待烧录完成。
|
||||
|
||||
|
@ -94,7 +86,7 @@
|
|||
<script lang="ts" setup>
|
||||
import { ref, inject, watch, onMounted } from "vue";
|
||||
|
||||
const alert = (data) => {
|
||||
function alert(data) {
|
||||
loading.value = true;
|
||||
var a = document.createElement("div"),
|
||||
p = document.createElement("p"),
|
||||
|
@ -141,7 +133,7 @@ const alert = (data) => {
|
|||
a.parentNode?.removeChild(a);
|
||||
loading.value = false;
|
||||
};
|
||||
};
|
||||
}
|
||||
function css(targetObj, cssObj) {
|
||||
var str = targetObj.getAttribute("style") ? targetObj.getAttribute("style") : "";
|
||||
for (var i in cssObj) {
|
||||
|
@ -155,16 +147,32 @@ const IPCRENDERER_API_SUPPORTED = inject("IPCRENDERER_API_SUPPORTED", false);
|
|||
|
||||
const loading = ref(false);
|
||||
const loadings = ref(false);
|
||||
|
||||
const msg = ref("");
|
||||
const msg = ref("烧录结果输出:\n");
|
||||
const container = ref(null);
|
||||
|
||||
const selectedPort = ref("");
|
||||
const ports = ref([]);
|
||||
const setPorts = (value: Object[]) => (ports.value = value);
|
||||
const errsum = ref(0);
|
||||
const sucsum = ref(0);
|
||||
const succom = ref([]);
|
||||
const failedcom = ref([]);
|
||||
const comlength = ref(0);
|
||||
|
||||
const setPorts = (value: Object[]) => {
|
||||
let compath = [];
|
||||
value.forEach((element) => {
|
||||
compath.push(element.path);
|
||||
});
|
||||
|
||||
if (loading.value == false) {
|
||||
ports.value = compath;
|
||||
}
|
||||
comlength.value = ports.value.length;
|
||||
};
|
||||
|
||||
const selectedFilePath = ref("");
|
||||
|
||||
const setSelectedFilePath = (value: string) => (selectedFilePath.value = value);
|
||||
|
||||
const selectFile = () => {
|
||||
if (!IPCRENDERER_API_SUPPORTED) {
|
||||
alert("The ipcRenderer API is not supported.");
|
||||
|
@ -173,6 +181,7 @@ const selectFile = () => {
|
|||
|
||||
ipcRenderer.send("SELECT_FILE");
|
||||
};
|
||||
|
||||
const alert_msg = (value: string) => {
|
||||
if (!value) {
|
||||
return;
|
||||
|
@ -180,19 +189,85 @@ const alert_msg = (value: string) => {
|
|||
|
||||
alert(value);
|
||||
};
|
||||
|
||||
const errlog = (value: number) => {
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
|
||||
errsum.value = value;
|
||||
};
|
||||
|
||||
const suclog = (value: number) => {
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
|
||||
sucsum.value = value;
|
||||
};
|
||||
|
||||
const append_msg = (value: string) => {
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
|
||||
msg.value += value;
|
||||
msg.value += value + "\n";
|
||||
};
|
||||
|
||||
const suc_result = (value: Array<string>) => {
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
|
||||
succom.value.push(value);
|
||||
};
|
||||
|
||||
const failed_result = (value: Array<string>) => {
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
|
||||
failedcom.value.push(value);
|
||||
};
|
||||
|
||||
const scroll = () => {
|
||||
setTimeout(() => (container.value.scrollTop = container.value.scrollHeight), 5);
|
||||
};
|
||||
|
||||
const burn = () => {
|
||||
selectedPort.value = ports.value.shift();
|
||||
const param = {
|
||||
selectedPort: selectedPort.value,
|
||||
selectedFilePath: selectedFilePath.value,
|
||||
errsum: errsum.value,
|
||||
sucsum: sucsum.value,
|
||||
};
|
||||
ipcRenderer.send("BURN", param);
|
||||
loading.value = true;
|
||||
loadings.value = true;
|
||||
};
|
||||
|
||||
const burn_start = () => {
|
||||
if (ports.value.length == 0) {
|
||||
alert("未发现串口");
|
||||
return;
|
||||
}
|
||||
if (!selectedFilePath.value) {
|
||||
alert("请选择程序文件");
|
||||
return;
|
||||
}
|
||||
succom.value = [];
|
||||
failedcom.value = [];
|
||||
errsum.value = 0;
|
||||
sucsum.value = 0;
|
||||
msg.value = "烧录结果输出:\n";
|
||||
burn();
|
||||
};
|
||||
|
||||
watch(msg, () => {
|
||||
scroll();
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
if (!IPCRENDERER_API_SUPPORTED) {
|
||||
alert("The ipcRenderer API is not supported.");
|
||||
|
@ -202,36 +277,32 @@ onMounted(() => {
|
|||
ipcRenderer.receive("SELECT_FILE", setSelectedFilePath);
|
||||
ipcRenderer.receive("LIST_PORTS", setPorts);
|
||||
ipcRenderer.receive("BURN_END", () => {
|
||||
loadings.value = false;
|
||||
loading.value = false;
|
||||
if (ports.value.length == 0) {
|
||||
loadings.value = false;
|
||||
loading.value = false;
|
||||
if (errsum.value == 0) {
|
||||
alert("串口已全部烧录成功!");
|
||||
return;
|
||||
} else if (sucsum.value == 0) {
|
||||
alert("串口已全部烧录失败!");
|
||||
ports.value = failedcom.value;
|
||||
return;
|
||||
} else {
|
||||
alert(`烧录结束,成功:${sucsum.value}个,失败:${errsum.value}个`);
|
||||
ports.value = failedcom.value;
|
||||
return;
|
||||
}
|
||||
}
|
||||
burn();
|
||||
});
|
||||
ipcRenderer.receive("ALERT_MSG", alert_msg);
|
||||
|
||||
ipcRenderer.receive("ERR_SUM", errlog);
|
||||
ipcRenderer.receive("SUC_SUM", suclog);
|
||||
ipcRenderer.receive("APPEND_MSG", append_msg);
|
||||
ipcRenderer.receive("CLEAN_MSG", () => (msg.value = ""));
|
||||
ipcRenderer.receive("FAILED_RESULT", failed_result);
|
||||
ipcRenderer.receive("SUC_RESULT", suc_result);
|
||||
// ipcRenderer.receive('CLEAN_MSG' , () => msg.value = '')
|
||||
});
|
||||
|
||||
const burn = () => {
|
||||
if (!selectedPort.value) {
|
||||
alert("请选择串口号");
|
||||
return;
|
||||
}
|
||||
if (!selectedFilePath.value) {
|
||||
alert("请选择程序文件");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(selectedPort.value);
|
||||
|
||||
const param = {
|
||||
selectedPort: selectedPort.value,
|
||||
selectedFilePath: selectedFilePath.value,
|
||||
};
|
||||
|
||||
ipcRenderer.send("BURN", param);
|
||||
loading.value = true;
|
||||
loadings.value = true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
@ -365,4 +436,9 @@ const burn = () => {
|
|||
height: 80%;
|
||||
background-color: #efe;
|
||||
}
|
||||
.commsg {
|
||||
width: 45%;
|
||||
height: 100%;
|
||||
background-color: #efe;
|
||||
}
|
||||
</style>
|
||||
|
|
180
yarn.lock
180
yarn.lock
|
@ -566,6 +566,51 @@ aproba@^1.0.3:
|
|||
resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
||||
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
|
||||
|
||||
archiver-utils@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2"
|
||||
integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==
|
||||
dependencies:
|
||||
glob "^7.1.4"
|
||||
graceful-fs "^4.2.0"
|
||||
lazystream "^1.0.0"
|
||||
lodash.defaults "^4.2.0"
|
||||
lodash.difference "^4.5.0"
|
||||
lodash.flatten "^4.4.0"
|
||||
lodash.isplainobject "^4.0.6"
|
||||
lodash.union "^4.6.0"
|
||||
normalize-path "^3.0.0"
|
||||
readable-stream "^2.0.0"
|
||||
|
||||
archiver-utils@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-3.0.4.tgz#a0d201f1cf8fce7af3b5a05aea0a337329e96ec7"
|
||||
integrity sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==
|
||||
dependencies:
|
||||
glob "^7.2.3"
|
||||
graceful-fs "^4.2.0"
|
||||
lazystream "^1.0.0"
|
||||
lodash.defaults "^4.2.0"
|
||||
lodash.difference "^4.5.0"
|
||||
lodash.flatten "^4.4.0"
|
||||
lodash.isplainobject "^4.0.6"
|
||||
lodash.union "^4.6.0"
|
||||
normalize-path "^3.0.0"
|
||||
readable-stream "^3.6.0"
|
||||
|
||||
archiver@5.3.1:
|
||||
version "5.3.1"
|
||||
resolved "https://registry.npmmirror.com/archiver/-/archiver-5.3.1.tgz#21e92811d6f09ecfce649fbefefe8c79e57cbbb6"
|
||||
integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==
|
||||
dependencies:
|
||||
archiver-utils "^2.1.0"
|
||||
async "^3.2.3"
|
||||
buffer-crc32 "^0.2.1"
|
||||
readable-stream "^3.6.0"
|
||||
readdir-glob "^1.0.0"
|
||||
tar-stream "^2.2.0"
|
||||
zip-stream "^4.1.0"
|
||||
|
||||
are-we-there-yet@~1.1.2:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146"
|
||||
|
@ -628,6 +673,11 @@ async@0.9.x:
|
|||
resolved "https://registry.npmmirror.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
|
||||
integrity sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==
|
||||
|
||||
async@^3.2.3:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.npmmirror.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
|
||||
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
|
@ -737,6 +787,13 @@ brace-expansion@^1.1.7:
|
|||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
brace-expansion@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
||||
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
|
||||
braces@^3.0.1, braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
|
@ -768,7 +825,7 @@ buffer-alloc@^1.2.0:
|
|||
buffer-alloc-unsafe "^1.1.0"
|
||||
buffer-fill "^1.0.0"
|
||||
|
||||
buffer-crc32@~0.2.3:
|
||||
buffer-crc32@^0.2.1, buffer-crc32@^0.2.13, buffer-crc32@~0.2.3:
|
||||
version "0.2.13"
|
||||
resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
|
||||
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
|
||||
|
@ -1059,6 +1116,16 @@ compare-version@^0.1.2:
|
|||
resolved "https://registry.npmmirror.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
|
||||
integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==
|
||||
|
||||
compress-commons@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.2.tgz#6542e59cb63e1f46a8b21b0e06f9a32e4c8b06df"
|
||||
integrity sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==
|
||||
dependencies:
|
||||
buffer-crc32 "^0.2.13"
|
||||
crc32-stream "^4.0.2"
|
||||
normalize-path "^3.0.0"
|
||||
readable-stream "^3.6.0"
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
@ -1125,6 +1192,19 @@ cosmiconfig@^7.0.1:
|
|||
path-type "^4.0.0"
|
||||
yaml "^1.10.0"
|
||||
|
||||
crc-32@^1.2.0:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
|
||||
integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
|
||||
|
||||
crc32-stream@^4.0.2:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.3.tgz#85dd677eb78fa7cad1ba17cc506a597d41fc6f33"
|
||||
integrity sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==
|
||||
dependencies:
|
||||
crc-32 "^1.2.0"
|
||||
readable-stream "^3.4.0"
|
||||
|
||||
crc@^3.8.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6"
|
||||
|
@ -1885,6 +1965,18 @@ glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.2.3:
|
||||
version "7.2.3"
|
||||
resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.1.1"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
global-agent@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmmirror.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
|
||||
|
@ -2394,6 +2486,13 @@ lazy-val@^1.0.4, lazy-val@^1.0.5:
|
|||
resolved "https://registry.npmmirror.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
|
||||
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
|
||||
|
||||
lazystream@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638"
|
||||
integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==
|
||||
dependencies:
|
||||
readable-stream "^2.0.5"
|
||||
|
||||
lilconfig@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
|
||||
|
@ -2404,6 +2503,31 @@ lines-and-columns@^1.1.6:
|
|||
resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
|
||||
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
||||
|
||||
lodash.defaults@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
|
||||
integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==
|
||||
|
||||
lodash.difference@^4.5.0:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
|
||||
integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==
|
||||
|
||||
lodash.flatten@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
||||
integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==
|
||||
|
||||
lodash.isplainobject@^4.0.6:
|
||||
version "4.0.6"
|
||||
resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
|
||||
integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
|
||||
|
||||
lodash.union@^4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
|
||||
integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==
|
||||
|
||||
lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
|
@ -2534,6 +2658,20 @@ minimatch@^3.0.4:
|
|||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^3.1.1:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^5.1.0:
|
||||
version "5.1.6"
|
||||
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
|
||||
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||
|
@ -3059,6 +3197,19 @@ read-config-file@6.2.0:
|
|||
json5 "^2.2.0"
|
||||
lazy-val "^1.0.4"
|
||||
|
||||
readable-stream@^2.0.0, readable-stream@^2.0.5:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
|
||||
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
|
||||
dependencies:
|
||||
core-util-is "~1.0.0"
|
||||
inherits "~2.0.3"
|
||||
isarray "~1.0.0"
|
||||
process-nextick-args "~2.0.0"
|
||||
safe-buffer "~5.1.1"
|
||||
string_decoder "~1.1.1"
|
||||
util-deprecate "~1.0.1"
|
||||
|
||||
readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5:
|
||||
version "2.3.7"
|
||||
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
|
||||
|
@ -3081,6 +3232,22 @@ readable-stream@^3.1.1, readable-stream@^3.4.0:
|
|||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readable-stream@^3.6.0:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
|
||||
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readdir-glob@^1.0.0:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584"
|
||||
integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==
|
||||
dependencies:
|
||||
minimatch "^5.1.0"
|
||||
|
||||
readdirp@~3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
|
||||
|
@ -3535,7 +3702,7 @@ tar-fs@^2.0.0:
|
|||
pump "^3.0.0"
|
||||
tar-stream "^2.1.4"
|
||||
|
||||
tar-stream@^2.1.4:
|
||||
tar-stream@^2.1.4, tar-stream@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
|
||||
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
|
||||
|
@ -3958,3 +4125,12 @@ yn@3.1.1:
|
|||
version "3.1.1"
|
||||
resolved "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||
|
||||
zip-stream@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.1.tgz#1337fe974dbaffd2fa9a1ba09662a66932bd7135"
|
||||
integrity sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==
|
||||
dependencies:
|
||||
archiver-utils "^3.0.4"
|
||||
compress-commons "^4.1.2"
|
||||
readable-stream "^3.6.0"
|
||||
|
|
Loading…
Reference in New Issue