Skip to content

Commit eb29f06

Browse files
committedMar 5, 2025
feat:
1、将mac包进行签名和公证,不让其在mac系统报错 2、把签名和公证调整到发版ci里,ci流程里对mac引擎进行签名,同时将mac引擎的hash打入包体 3、将渲染端ci调整为tag发布,记录时间线 4、将yakit的chrome插件通过ci流程打入包体,取消内置到yakit项目里 5、将发版ci里的打包命令集成进脚本文件中,新增: 安装证书和签名引擎;安装渲染端zip;重试pack命令等脚本文件 6、将签名和公证调整进发布简易版的oss流程中 7、新增发布渲染端的tag命令 8、对主进程打包命令新增一些环境变量,集成进文件.env-cmdrc中 9、整合了所有版本的before-pack构建hook方法,创建唯一个before-pack文件(可扩展) 10、整合所有的electron-builder.yaml文件,集成为唯一个electron-builder.config.js文件(可扩展) 11、新增prettier文件,方便所有vscode的代码格式化功能
1 parent ab8d9c4 commit eb29f06

26 files changed

+816
-279
lines changed
 

‎.github/workflows/build-multi-prod.yml

+49-23
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,48 @@ name: Build Multi-Platform Prod
33
on:
44
push:
55
tags:
6-
- "v*"
6+
- "v*-*"
7+
- "!v*-render"
78

89
jobs:
910
build_yakit:
1011
runs-on: macos-13
1112
env:
1213
CI: ""
1314
NODE_OPTIONS: --max_old_space_size=4096
15+
APPLE_ID: ${{ secrets.APPLE_ACCOUNT_EMAIL }}
16+
TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
17+
APPLE_PASSWORD: ${{ secrets.APPLE_APP_PASSWORD }}
18+
CERT_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
19+
CERT_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
1420

1521
steps:
1622
- uses: actions/checkout@v4
1723
- uses: actions/setup-node@v4
1824
with:
1925
node-version: 18.18.2
2026

21-
- run: echo ${{ github.ref }}
27+
- run: echo ${{ github.ref_name }}
2228
- run: cp buildutil/zip /usr/local/bin/zip
2329
- run: chmod +x /usr/local/bin/zip
2430
- run: zip -h
2531

26-
- name: "Fetch Latest EngineVersion"
27-
run: wget -O bins/engine-version.txt https://oss-qn.yaklang.com/yak/latest/version.txt
28-
- run: |
32+
- name: "Download yakit-chrome-extension"
33+
run: |
34+
extensionVersion=$(curl -fsL "http://yaklang.oss-accelerate.aliyuncs.com/chrome-extension/latest-version.txt") || {
35+
echo "Failed to download!" >&2
36+
exit 1
37+
}
38+
wget -O bins/scripts/google-chrome-plugin.zip https://oss-qn.yaklang.com/chrome-extension/yakit-chrome-extension-v${extensionVersion}.zip
39+
shell: bash
40+
41+
- name: "Fetch Latest Engine Version And Set To Env"
42+
run: |
43+
wget -O bins/engine-version.txt https://yaklang.oss-accelerate.aliyuncs.com/yak/latest/version.txt
2944
cat bins/engine-version.txt
3045
YAK_VERSION=$(cat bins/engine-version.txt | tr -d '\n')
3146
echo "ENGINE_VERSION=$YAK_VERSION" >> $GITHUB_ENV
3247
33-
- name: "Download Yak Engine via wget(MacOS)"
34-
id: download-darwin-engine
35-
run: wget -O bins/yak_darwin_amd64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_amd64 && zip ./bins/yak_darwin_amd64.zip ./bins/yak_darwin_amd64 && rm ./bins/yak_darwin_amd64
36-
- name: "Download Yak Engine via wget(MacOS-arm64)"
37-
id: download-darwin-engine-arm64
38-
run: wget -O bins/yak_darwin_arm64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_arm64 && zip ./bins/yak_darwin_arm64.zip ./bins/yak_darwin_arm64 && rm ./bins/yak_darwin_arm64
39-
4048
- name: "Download Yak Engine via wget(Linux)"
4149
id: download-linux-engine
4250
run: wget -O bins/yak_linux_amd64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_linux_amd64 && zip ./bins/yak_linux_amd64.zip ./bins/yak_linux_amd64 && rm ./bins/yak_linux_amd64
@@ -51,7 +59,21 @@ jobs:
5159
id: download-windows-leagacy-engine
5260
run: wget -O bins/yak_windows_amd64.exe https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_windows_legacy_amd64.exe && zip ./bins/yak_windows_legacy_amd64.zip ./bins/yak_windows_amd64.exe && rm ./bins/yak_windows_amd64.exe
5361

62+
- name: "Download Yak Engine via wget(MacOS)"
63+
id: download-darwin-engine
64+
run: wget -O bins/yak_darwin_amd64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_amd64
65+
- name: "Download Yak Engine via wget(MacOS-arm64)"
66+
id: download-darwin-engine-arm64
67+
run: wget -O bins/yak_darwin_arm64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_arm64
5468

69+
- name: Signature Mac Engine
70+
run: chmod +x ./packageScript/script/signature.sh && ./packageScript/script/signature.sh
71+
shell: bash
72+
73+
- name: "Fetch Mac-Amd Sha256"
74+
run: wget -O bins/yak_darwin_amd64.sha256.txt https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_amd64.sha256.txt
75+
- name: "Fetch Mac-Arm Sha256"
76+
run: wget -O bins/yak_darwin_arm64.sha256.txt https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_arm64.sha256.txt
5577

5678
- name: Echo Yakit Package Version To Env
5779
run: echo "ENV_TAG=${GITHUB_REF_NAME:1}" >> $GITHUB_ENV
@@ -65,7 +87,9 @@ jobs:
6587
env:
6688
GH_TOKEN: ${{ secrets.GH_TOKEN }}
6789
working-directory: ./
68-
run: chmod +x ./scripts/electron-build.sh && ./scripts/electron-build.sh
90+
run: |
91+
chmod +x ./packageScript/script/electron-builder.sh
92+
./packageScript/script/electron-builder.sh || { exit 1; }
6993
shell: bash
7094

7195
- name: View Published Content
@@ -76,7 +100,9 @@ jobs:
76100
# Yakit -1.3.4-sp6-darwin-arm64(.dmg|.exe|.AppImage)
77101

78102
- name: Check Yakit if the output is correct
79-
run: chmod +x ./scripts/check-build-package.sh && ./scripts/check-build-package.sh Yakit
103+
run: |
104+
chmod +x ./packageScript/script/check-build-package.sh
105+
(./packageScript/script/check-build-package.sh Yakit) || { exit 1; }
80106
shell: bash
81107
- name: Upload Yakit(CE) Artifacts
82108
uses: actions/upload-artifact@v4
@@ -90,7 +116,7 @@ jobs:
90116
retention-days: 1
91117

92118
- name: Check EnpriTrace if the output is correct
93-
run: ./scripts/check-build-package.sh EnpriTrace
119+
run: (./packageScript/script/check-build-package.sh EnpriTrace) || { exit 1; }
94120
shell: bash
95121
- name: Upload Yakit(EE) Artifacts
96122
uses: actions/upload-artifact@v4
@@ -123,14 +149,14 @@ jobs:
123149
- run: ls
124150
name: Ls Published Artifacts...
125151

126-
- name: Create Release and Upload Assets
127-
if: ${{ matrix.artifact == 'Yakit' }}
128-
uses: ncipollo/release-action@v1
129-
with:
130-
artifacts: ./*
131-
token: ${{ secrets.GITHUB_TOKEN }}
132-
name: Release ${{ github.ref_name }}
133-
tag: ${{ github.ref_name }}
152+
# - name: Create Release and Upload Assets
153+
# if: ${{ matrix.artifact == 'Yakit' }}
154+
# uses: ncipollo/release-action@v1
155+
# with:
156+
# artifacts: ./*
157+
# token: ${{ secrets.GITHUB_TOKEN }}
158+
# name: Release ${{ github.ref_name }}
159+
# tag: ${{ github.ref_name }}
134160

135161
- name: Generate OSS File Path
136162
run: |

‎.github/workflows/gen-multi-render.yml

+19-16
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
name: Gen-Multi-Platform-Render
22

33
on:
4-
pull_request:
5-
types:
6-
- closed # 仅在 PR 关闭(合并或关闭)时触发
7-
branches:
8-
- release-render # 目标分支是 release-render
4+
push:
5+
tags:
6+
- "v*-render"
7+
98
jobs:
109
build_yakit:
11-
if: github.event.pull_request.merged == true && github.event.pull_request.head.ref == 'master'
10+
if: ${{ startsWith(github.ref_name, 'v') && endsWith(github.ref_name, '-render') }}
1211
runs-on: ubuntu-latest
1312
env:
1413
CI: ""
@@ -17,18 +16,18 @@ jobs:
1716
RETURN_PATH: ../../
1817

1918
steps:
20-
- name: Checkout release-render branch
21-
uses: actions/checkout@v4
22-
with:
23-
ref: "release-render"
19+
- uses: actions/checkout@v4
2420
- uses: actions/setup-node@v4
2521
with:
2622
node-version: 18.18.2
27-
# 缓存 yarn 依赖包 ↓↓↓
28-
cache: "yarn"
29-
cache-dependency-path: ${{ env.RENDER_PATH }}/src/main/yarn.lock
3023

31-
- run: echo ${{ github.ref }}
24+
- name: Generate tag version
25+
run: |
26+
echo $GITHUB_REF_NAME
27+
tag=${GITHUB_REF_NAME#v}
28+
tag=${tag%-render}
29+
echo ${tag}
30+
echo "TAG_VERSION=$tag" >> $GITHUB_ENV
3231
3332
- name: "Install Render Dependencies"
3433
run: yarn install-render
@@ -59,6 +58,10 @@ jobs:
5958
for item in "${array[@]}"; do
6059
file_name="${item}.zip"
6160
echo "Start to upload ${file_name}"
62-
./yak upload-oss -b $bucket --ak ${{ secrets.OSS_KEY_ID }} --sk ${{ secrets.OSS_KEY_SECRET }} -t 5 -f ${{ env.RENDER_PATH }}/${file_name}:/yak/render/${file_name}
63-
echo "End to upload ${file_name}"
61+
./yak upload-oss -b $bucket --ak ${{ secrets.OSS_KEY_ID }} --sk ${{ secrets.OSS_KEY_SECRET }} -t 5 -f ${{ env.RENDER_PATH }}/${file_name}:/yak/render/${{ env.TAG_VERSION }}/${file_name}
6462
done
63+
64+
- name: Update OSS latest file
65+
run: echo ${{ env.TAG_VERSION }} > ./version.txt
66+
- name: Update OSS latest file
67+
run: ./yak upload-oss -b "yaklang" --ak ${{ secrets.OSS_KEY_ID }} --sk ${{ secrets.OSS_KEY_SECRET }} -t 5 -f 'version.txt:/yak/render/version.txt'

‎.github/workflows/multi-platform-build.yml

+9
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ jobs:
7272
- run: chmod +x /usr/local/bin/zip
7373
- run: zip -h
7474

75+
- name: "Download yakit-chrome-extension"
76+
run: |
77+
extensionVersion=$(curl -fsL "http://yaklang.oss-accelerate.aliyuncs.com/chrome-extension/latest-version.txt") || {
78+
echo "Failed to download!" >&2
79+
exit 1
80+
}
81+
wget -O bins/scripts/google-chrome-plugin.zip https://oss-qn.yaklang.com/chrome-extension/yakit-chrome-extension-v${extensionVersion}.zip
82+
shell: bash
83+
7584
- name: "Fetch Latest EngineVersion"
7685
if: ${{ inputs.engine && !inputs.engineVersion }}
7786
run: wget -O bins/engine-version.txt https://oss-qn.yaklang.com/yak/latest/version.txt

‎.github/workflows/publish-se-oss.yml

+41-42
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ jobs:
5858
env:
5959
CI: ""
6060
NODE_OPTIONS: --max_old_space_size=4096
61+
APPLE_ID: ${{ secrets.APPLE_ACCOUNT_EMAIL }}
62+
TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
63+
APPLE_PASSWORD: ${{ secrets.APPLE_APP_PASSWORD }}
64+
CERT_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
65+
CERT_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
6166

6267
steps:
6368
- name: Set SOFTWARE_VERSION
@@ -88,20 +93,22 @@ jobs:
8893
- run: chmod +x /usr/local/bin/zip
8994
- run: zip -h
9095

91-
- name: "Fetch Latest EngineVersion"
92-
run: wget -O bins/engine-version.txt https://oss-qn.yaklang.com/yak/latest/version.txt
93-
- run: |
96+
- name: "Download yakit-chrome-extension"
97+
run: |
98+
extensionVersion=$(curl -fsL "http://yaklang.oss-accelerate.aliyuncs.com/chrome-extension/latest-version.txt") || {
99+
echo "Failed to download!" >&2
100+
exit 1
101+
}
102+
wget -O bins/scripts/google-chrome-plugin.zip https://oss-qn.yaklang.com/chrome-extension/yakit-chrome-extension-v${extensionVersion}.zip
103+
shell: bash
104+
105+
- name: "Fetch Latest Engine Version And Set To Env"
106+
run: |
107+
wget -O bins/engine-version.txt https://yaklang.oss-accelerate.aliyuncs.com/yak/latest/version.txt
94108
cat bins/engine-version.txt
95109
YAK_VERSION=$(cat bins/engine-version.txt | tr -d '\n')
96110
echo "ENGINE_VERSION=$YAK_VERSION" >> $GITHUB_ENV
97111
98-
- name: "Download Yak Engine via wget(MacOS)"
99-
id: download-darwin-engine
100-
run: wget -O bins/yak_darwin_amd64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_amd64 && zip ./bins/yak_darwin_amd64.zip ./bins/yak_darwin_amd64 && rm ./bins/yak_darwin_amd64
101-
- name: "Download Yak Engine via wget(MacOS-arm64)"
102-
id: download-darwin-engine-arm64
103-
run: wget -O bins/yak_darwin_arm64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_arm64 && zip ./bins/yak_darwin_arm64.zip ./bins/yak_darwin_arm64 && rm ./bins/yak_darwin_arm64
104-
105112
- name: "Download Yak Engine via wget(Linux)"
106113
id: download-linux-engine
107114
run: wget -O bins/yak_linux_amd64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_linux_amd64 && zip ./bins/yak_linux_amd64.zip ./bins/yak_linux_amd64 && rm ./bins/yak_linux_amd64
@@ -113,6 +120,22 @@ jobs:
113120
id: download-windows-engine
114121
run: wget -O bins/yak_windows_amd64.exe https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_windows_amd64.exe && zip ./bins/yak_windows_amd64.zip ./bins/yak_windows_amd64.exe && rm ./bins/yak_windows_amd64.exe
115122

123+
- name: "Download Yak Engine via wget(MacOS)"
124+
id: download-darwin-engine
125+
run: wget -O bins/yak_darwin_amd64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_amd64
126+
- name: "Download Yak Engine via wget(MacOS-arm64)"
127+
id: download-darwin-engine-arm64
128+
run: wget -O bins/yak_darwin_arm64 https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_arm64
129+
130+
- name: Signature Mac Engine
131+
run: chmod +x ./packageScript/script/signature.sh && ./packageScript/script/signature.sh
132+
shell: bash
133+
134+
- name: "Fetch Mac-Amd Sha256"
135+
run: wget -O bins/yak_darwin_amd64.sha256.txt https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_amd64.sha256.txt
136+
- name: "Fetch Mac-Arm Sha256"
137+
run: wget -O bins/yak_darwin_arm64.sha256.txt https://oss-qn.yaklang.com/yak/${ENGINE_VERSION}/yak_darwin_arm64.sha256.txt
138+
116139
- run: yarn install
117140
working-directory: ./
118141
name: "Install Dependencies"
@@ -123,20 +146,10 @@ jobs:
123146
working-directory: ./
124147
run: |
125148
yarn add -D dmg-license
126-
127-
max_attempts=3
128-
attempt=1
129-
while [ $attempt -le $max_attempts ]; do
130-
echo "Start to building normal, try-count: ${attempt}"
131-
yarn electron-publish-se && break # 如果成功则退出循环
132-
attempt=$((attempt + 1))
133-
sleep 2 # 失败后等待2000ms再重试
134-
done
135-
[ $attempt -gt $max_attempts ] && {
136-
echo "normal build exceeded retry attempts" >&2
137-
exit 1
138-
} # 超过重试次数则失败
139-
exit 0
149+
chmod +x ./packageScript/script/retryScript.sh
150+
./packageScript/script/retryScript.sh "yarn pack-win-se" || { exit 1; }
151+
./packageScript/script/retryScript.sh "yarn pack-linux-se" || { exit 1; }
152+
./packageScript/script/retryScript.sh "yarn pack-mac-se" || { exit 1; }
140153
141154
- run: yarn remove electron && yarn add electron@22.3.27 --dev
142155
working-directory: ./
@@ -151,20 +164,10 @@ jobs:
151164
GH_TOKEN: ${{ secrets.GH_TOKEN }}
152165
working-directory: ./
153166
run: |
154-
yarn add -D dmg-license
155-
156-
max_attempts=3
157-
attempt=1
158-
while [ $attempt -le $max_attempts ]; do
159-
echo "Start to building legacy, try-count: ${attempt}"
160-
yarn electron-publish-se-legacy && break # 如果成功则退出循环
161-
attempt=$((attempt + 1))
162-
sleep 2 # 失败后等待2000ms再重试
163-
done
164-
[ $attempt -gt $max_attempts ] && {
165-
echo "legacy build exceeded retry attempts" >&2
166-
exit 1
167-
} # 超过重试次数则失败
167+
chmod +x ./packageScript/script/retryScript.sh
168+
./packageScript/script/retryScript.sh "yarn pack-win-se-legacy" || { exit 1; }
169+
./packageScript/script/retryScript.sh "yarn pack-linux-se-legacy" || { exit 1; }
170+
./packageScript/script/retryScript.sh "yarn pack-mac-se-legacy" || { exit 1; }重试次数则失败
168171
exit 0
169172
170173
- name: View Published Content
@@ -209,10 +212,6 @@ jobs:
209212
- run: ls
210213
name: Ls Published Artifacts...
211214

212-
# - name: Download CI Needed Yak Linux(amd64) Version to operator
213-
# run: wget -q -O './yak' https://oss-qn.yaklang.com/yak/latest/yak_linux_amd64 && chmod +x ./yak
214-
# 后面写个脚本,直接通过传入参数,使用引擎上传到oss
215-
216215
- name: Upload Yakit To OSS
217216
uses: tvrcgo/upload-to-oss@master
218217
with:

‎.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
bins/database/*.gzip
22
bins/yak.zip
33
bins/engine-version.txt
4+
bins/engine-sha256.txt
45
bins/yak_linux_amd64.zip
56
bins/yak_linux_amd64
67
bins/yak_darwin_amd64.zip
78
bins/yak_darwin_amd64
89
bins/yak_windows_amd64.zip
910
bins/yak_windows_amd64.exe
11+
bins/scripts/google-chrome-plugin.zip
12+
1013
*~
1114
*.un~
1215
.idea/
@@ -54,4 +57,4 @@ package-lock.json
5457
.bashrc
5558
yarn.lock
5659
.vscode/
57-
.history/
60+
.history/

‎app/main/handlers/misc.js

+53-44
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
const {ipcMain} = require("electron")
2-
const {getLocalYaklangEngine} = require("../filePath.js")
2+
const {getLocalYaklangEngine, loadExtraFilePath} = require("../filePath.js")
33
const fs = require("fs")
4-
const crypto = require("crypto");
4+
const path = require("path")
5+
const crypto = require("crypto")
56

67
module.exports = (win, getClient) => {
78
// asyncYsoDump wrapper
@@ -397,8 +398,8 @@ module.exports = (win, getClient) => {
397398
})
398399

399400
/*
400-
* File Ops
401-
* */
401+
* File Ops
402+
* */
402403
// asyncIsPrivilegedForNetRaw wrapper
403404
const asyncIsPrivilegedForNetRaw = (params) => {
404405
return new Promise((resolve, reject) => {
@@ -463,12 +464,12 @@ module.exports = (win, getClient) => {
463464
return await asyncIsCVEDatabaseReady(params)
464465
})
465466

466-
const handlerHelper = require("./handleStreamWithContext");
467+
const handlerHelper = require("./handleStreamWithContext")
467468

468-
const streamUpdateCVEDatabaseMap = new Map();
469-
ipcMain.handle("cancel-UpdateCVEDatabase", handlerHelper.cancelHandler(streamUpdateCVEDatabaseMap));
469+
const streamUpdateCVEDatabaseMap = new Map()
470+
ipcMain.handle("cancel-UpdateCVEDatabase", handlerHelper.cancelHandler(streamUpdateCVEDatabaseMap))
470471
ipcMain.handle("UpdateCVEDatabase", (e, params, token) => {
471-
let stream = getClient().UpdateCVEDatabase(params);
472+
let stream = getClient().UpdateCVEDatabase(params)
472473
handlerHelper.registerHandler(win, stream, streamUpdateCVEDatabaseMap, token)
473474
})
474475

@@ -551,38 +552,38 @@ module.exports = (win, getClient) => {
551552
return await asyncIsVulinboxReady(params)
552553
})
553554

554-
const streamInstallVulinboxMap = new Map();
555-
ipcMain.handle("cancel-InstallVulinbox", handlerHelper.cancelHandler(streamInstallVulinboxMap));
555+
const streamInstallVulinboxMap = new Map()
556+
ipcMain.handle("cancel-InstallVulinbox", handlerHelper.cancelHandler(streamInstallVulinboxMap))
556557
ipcMain.handle("InstallVulinbox", (e, params, token) => {
557-
let stream = getClient().InstallVulinbox(params);
558+
let stream = getClient().InstallVulinbox(params)
558559
handlerHelper.registerHandler(win, stream, streamInstallVulinboxMap, token)
559560
})
560561

561-
const streamStartVulinboxMap = new Map();
562-
ipcMain.handle("cancel-StartVulinbox", handlerHelper.cancelHandler(streamStartVulinboxMap));
562+
const streamStartVulinboxMap = new Map()
563+
ipcMain.handle("cancel-StartVulinbox", handlerHelper.cancelHandler(streamStartVulinboxMap))
563564
ipcMain.handle("StartVulinbox", (e, params, token) => {
564-
let stream = getClient().StartVulinbox(params);
565+
let stream = getClient().StartVulinbox(params)
565566
handlerHelper.registerHandler(win, stream, streamStartVulinboxMap, token)
566567
})
567568

568-
const streamDiagnoseNetworkMap = new Map();
569-
ipcMain.handle("cancel-DiagnoseNetwork", handlerHelper.cancelHandler(streamDiagnoseNetworkMap));
569+
const streamDiagnoseNetworkMap = new Map()
570+
ipcMain.handle("cancel-DiagnoseNetwork", handlerHelper.cancelHandler(streamDiagnoseNetworkMap))
570571
ipcMain.handle("DiagnoseNetwork", (e, params, token) => {
571-
let stream = getClient().DiagnoseNetwork(params);
572+
let stream = getClient().DiagnoseNetwork(params)
572573
handlerHelper.registerHandler(win, stream, streamDiagnoseNetworkMap, token)
573574
})
574575

575-
const streamDiagnoseNetworkDNSMap = new Map();
576-
ipcMain.handle("cancel-DiagnoseNetworkDNS", handlerHelper.cancelHandler(streamDiagnoseNetworkDNSMap));
576+
const streamDiagnoseNetworkDNSMap = new Map()
577+
ipcMain.handle("cancel-DiagnoseNetworkDNS", handlerHelper.cancelHandler(streamDiagnoseNetworkDNSMap))
577578
ipcMain.handle("DiagnoseNetworkDNS", (e, params, token) => {
578-
let stream = getClient().DiagnoseNetworkDNS(params);
579+
let stream = getClient().DiagnoseNetworkDNS(params)
579580
handlerHelper.registerHandler(win, stream, streamDiagnoseNetworkDNSMap, token)
580581
})
581582

582-
const streamTracerouteMap = new Map();
583-
ipcMain.handle("cancel-Traceroute", handlerHelper.cancelHandler(streamTracerouteMap));
583+
const streamTracerouteMap = new Map()
584+
ipcMain.handle("cancel-Traceroute", handlerHelper.cancelHandler(streamTracerouteMap))
584585
ipcMain.handle("Traceroute", (e, params, token) => {
585-
let stream = getClient().TraceRoute(params);
586+
let stream = getClient().TraceRoute(params)
586587
handlerHelper.registerHandler(win, stream, streamTracerouteMap, token)
587588
})
588589

@@ -602,17 +603,15 @@ module.exports = (win, getClient) => {
602603
return await asyncRequestYakURL(params)
603604
})
604605

605-
606-
const streamReadFileMap = new Map();
607-
ipcMain.handle("cancel-ReadFile", handlerHelper.cancelHandler(streamReadFileMap));
606+
const streamReadFileMap = new Map()
607+
ipcMain.handle("cancel-ReadFile", handlerHelper.cancelHandler(streamReadFileMap))
608608
ipcMain.handle("ReadFile", (e, params, token) => {
609-
let stream = getClient().ReadFile(params);
609+
let stream = getClient().ReadFile(params)
610610
handlerHelper.registerHandler(win, stream, streamReadFileMap, token)
611611
})
612612

613-
614-
const streamDuplexConnectionMap = new Map();
615-
ipcMain.handle("cancel-DuplexConnection", handlerHelper.cancelHandler(streamDuplexConnectionMap));
613+
const streamDuplexConnectionMap = new Map()
614+
ipcMain.handle("cancel-DuplexConnection", handlerHelper.cancelHandler(streamDuplexConnectionMap))
616615
ipcMain.handle("DuplexConnectionWrite", (e, params, token) => {
617616
let stream = streamDuplexConnectionMap.get(token)
618617
if (!!stream) {
@@ -625,7 +624,7 @@ module.exports = (win, getClient) => {
625624
stream.write(params)
626625
return
627626
}
628-
stream = getClient().DuplexConnection(params);
627+
stream = getClient().DuplexConnection(params)
629628
handlerHelper.registerHandler(win, stream, streamDuplexConnectionMap, token)
630629
})
631630

@@ -660,7 +659,7 @@ module.exports = (win, getClient) => {
660659
ipcMain.handle("GetSpaceEngineAccountStatus", async (e, params) => {
661660
return await asyncGetSpaceEngineAccountStatus(params)
662661
})
663-
662+
664663
// asyncGetSpaceEngineAccountStatusV2 wrapper
665664
const asyncGetSpaceEngineAccountStatusV2 = (params) => {
666665
return new Promise((resolve, reject) => {
@@ -677,10 +676,13 @@ module.exports = (win, getClient) => {
677676
return await asyncGetSpaceEngineAccountStatusV2(params)
678677
})
679678

680-
const streamFetchPortAssetFromSpaceEngineMap = new Map();
681-
ipcMain.handle("cancel-FetchPortAssetFromSpaceEngine", handlerHelper.cancelHandler(streamFetchPortAssetFromSpaceEngineMap));
679+
const streamFetchPortAssetFromSpaceEngineMap = new Map()
680+
ipcMain.handle(
681+
"cancel-FetchPortAssetFromSpaceEngine",
682+
handlerHelper.cancelHandler(streamFetchPortAssetFromSpaceEngineMap)
683+
)
682684
ipcMain.handle("FetchPortAssetFromSpaceEngine", (e, params, token) => {
683-
let stream = getClient().FetchPortAssetFromSpaceEngine(params);
685+
let stream = getClient().FetchPortAssetFromSpaceEngine(params)
684686
handlerHelper.registerHandler(win, stream, streamFetchPortAssetFromSpaceEngineMap, token)
685687
})
686688

@@ -712,7 +714,6 @@ module.exports = (win, getClient) => {
712714
return await asyncYaklangLanguageSuggestion(params)
713715
})
714716

715-
716717
const asyncFuzzTagSuggestion = (params) => {
717718
return new Promise((resolve, reject) => {
718719
getClient().FuzzTagSuggestion(params, (err, data) => {
@@ -729,7 +730,6 @@ module.exports = (win, getClient) => {
729730
return await asyncFuzzTagSuggestion(params)
730731
})
731732

732-
733733
const asyncVerifySystemCertificate = (params) => {
734734
return new Promise((resolve, reject) => {
735735
getClient().VerifySystemCertificate(params, (err, data) => {
@@ -745,20 +745,29 @@ module.exports = (win, getClient) => {
745745
return await asyncVerifySystemCertificate(params)
746746
})
747747

748-
ipcMain.handle("YaklangLanguageFind",async (e, params) => {
748+
ipcMain.handle("YaklangLanguageFind", async (e, params) => {
749749
return await asyncYaklangLanguageFind(params)
750750
})
751-
ipcMain.handle("CalcEngineSha265",async (e, params) => {
752-
return new Promise((resolve,reject)=>{
751+
ipcMain.handle("CalcEngineSha265", async (e, params) => {
752+
const hashs = []
753+
const hashTxt = path.join("bins", "engine-sha256.txt")
754+
if (fs.existsSync(loadExtraFilePath(hashTxt))) {
755+
let hashData = fs.readFileSync(loadExtraFilePath(hashTxt)).toString("utf8")
756+
hashData = (hashData || "").replace(/\r?\n/g, "")
757+
hashs.push(hashData)
758+
}
759+
760+
return new Promise((resolve, reject) => {
753761
let enginePath = getLocalYaklangEngine()
754-
if (enginePath == undefined){
762+
if (enginePath == undefined) {
755763
reject("get engine path failed")
756-
}else{
764+
} else {
757765
if (fs.existsSync(enginePath)) {
758766
const sum = crypto.createHash("sha256")
759767
sum.update(fs.readFileSync(enginePath))
760-
resolve(sum.digest("hex"));
761-
}else{
768+
hashs.push(sum.digest("hex"))
769+
resolve(hashs)
770+
} else {
762771
reject("get engine content failed")
763772
}
764773
}

‎app/main/handlers/utils/network.js

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ const fetchSpecifiedYakVersionHash = async (version, requestConfig) => {
155155
if (url === "") {
156156
throw new Error(`No Find ${version} Hash Url`)
157157
}
158+
158159
return axios.get(url, {...(requestConfig || {}), httpsAgent: getHttpsAgentByDomain(url)}).then((response) => {
159160
const versionData = Buffer.from(response.data).toString("utf8")
160161
if (versionData.length > 0) {

‎app/renderer/src/main/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@
129129
"test": "react-app-rewired test",
130130
"eject": "react-app-rewired eject",
131131
"analyzer": "env-cmd -e analyzer -f cross-env react-app-rewired build",
132-
"postinstall": "patch-package"
132+
"postinstall": "patch-package",
133+
"release": "yarn version --minor --no-git-tag-version && VERSION=$(node -p \"require('./package.json').version\") && git commit -am \"Render Version To v${VERSION}\" && git tag v${VERSION}-render"
133134
},
134135
"eslintConfig": {
135136
"extends": [

‎app/renderer/src/main/src/apiUtils/grpc.ts

+13
Original file line numberDiff line numberDiff line change
@@ -146,3 +146,16 @@ export const grpcFetchSpecifiedYakVersionHash: APIFunc<{version: string; config:
146146
})
147147
})
148148
}
149+
150+
/** @name 获取本地Yak引擎的校验Hash值 */
151+
export const grpcFetchLocalYakVersionHash: APINoRequestFunc<string[]> = (hiddenError) => {
152+
return new Promise(async (resolve, reject) => {
153+
ipcRenderer
154+
.invoke("CalcEngineSha265")
155+
.then(resolve)
156+
.catch((e) => {
157+
if (!hiddenError) yakitNotify("error", "获取本地引擎 hash 失败:" + e)
158+
reject(e)
159+
})
160+
})
161+
}

‎app/renderer/src/main/src/components/layout/GlobalState.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
ShieldCheckIcon as AllShieldCheckIcon,
1414
SuccessIcon,
1515
WarningIcon,
16-
RocketIcon,
16+
RocketIcon
1717
} from "./globalStateIcon"
1818
import {showConfigSystemProxyForm, showConfigChromePathForm} from "@/utils/ConfigSystemProxy"
1919
import {showModal} from "@/utils/showModal"
@@ -34,7 +34,7 @@ import emiter from "@/utils/eventBus/eventBus"
3434
import {serverPushStatus} from "@/utils/duplex/duplex"
3535
import {openABSFileLocated} from "@/utils/openWebsite"
3636
import {showYakitModal} from "../yakitUI/YakitModal/YakitModalConfirm"
37-
import {grpcFetchBuildInYakVersion, grpcFetchLocalYakVersion, grpcFetchSpecifiedYakVersionHash} from "@/apiUtils/grpc"
37+
import {grpcFetchBuildInYakVersion, grpcFetchLocalYakVersion, grpcFetchLocalYakVersionHash, grpcFetchSpecifiedYakVersionHash} from "@/apiUtils/grpc"
3838
import {OutlineShieldcheckIcon} from "@/assets/icon/outline"
3939

4040
const {ipcRenderer} = window.require("electron")
@@ -276,9 +276,9 @@ export const GlobalState: React.FC<GlobalReverseStateProp> = React.memo((props)
276276
// 远端
277277
grpcFetchSpecifiedYakVersionHash({version: localYaklang, config: {timeout: 3000}}, true),
278278
// 本地
279-
ipcRenderer.invoke("CalcEngineSha265")
279+
grpcFetchLocalYakVersionHash()
280280
])
281-
if (res1 === res2) {
281+
if (res2.includes(res1)) {
282282
setShowCheckEngine(false)
283283
} else {
284284
setShowCheckEngine(true)

‎app/renderer/src/main/src/components/layout/LocalEngine/LocalEngine.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
grpcFetchLatestYakitVersion,
1616
grpcFetchLocalYakitVersion,
1717
grpcFetchLocalYakVersion,
18+
grpcFetchLocalYakVersionHash,
1819
grpcFetchSpecifiedYakVersionHash
1920
} from "@/apiUtils/grpc"
2021

@@ -95,7 +96,7 @@ export const LocalEngine: React.FC<LocalEngineProps> = memo(
9596
if (!isEnpriTraceAgent()) setLog(["检查软件是否有更新..."])
9697
else setLog([])
9798

98-
if (SystemInfo.isDev) {
99+
if (false && SystemInfo.isDev) {
99100
setLog((old) => old.concat(["开发环境,直接连接引擎"]))
100101
setTimeout(() => {
101102
handleLinkLocalEnging()
@@ -210,10 +211,10 @@ export const LocalEngine: React.FC<LocalEngineProps> = memo(
210211
// 远端
211212
grpcFetchSpecifiedYakVersionHash({version: version, config: {timeout: 2000}}, true),
212213
// 本地
213-
ipcRenderer.invoke("CalcEngineSha265")
214+
grpcFetchLocalYakVersionHash()
214215
])
215216

216-
if (res1 === res2) {
217+
if (res2.includes(res1)) {
217218
setLog((old) => old.concat(["引擎来源正确,准备连接引擎"]))
218219
handleLinkLocalEnging()
219220
} else {

‎bins/scripts/google-chrome-plugin.zip

-3.34 MB
Binary file not shown.

‎package.json

+86-83
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,88 @@
11
{
2-
"name": "yakit",
3-
"version": "1.4.1-0303",
4-
"description": "Yakit is for yaklang.io Electron GUI Entry",
5-
"main": "app/main/index.js",
6-
"scripts": {
7-
"start-electron": "electron .",
8-
"install-render": "cd app/renderer/src/main && yarn install",
9-
"start-render": "cd app/renderer/src/main && yarn electron-render",
10-
"start-render-enterprise": "cd app/renderer/src/main && yarn electron-render-enterprise",
11-
"start-render-simple-enterprise": "cd app/renderer/src/main && yarn electron-render-simple-enterprise",
12-
"build-render": "cd app/renderer/src/main && yarn build",
13-
"build-test-render": "cd app/renderer/src/main && yarn build-test",
14-
"build-render-enterprise": "cd app/renderer/src/main && yarn build-enterprise",
15-
"build-render-breachtrace": "cd app/renderer/src/main && yarn build-breachtrace",
16-
"build-render-test-enterprise": "cd app/renderer/src/main && yarn build-test-enterprise",
17-
"build-render-simple-enterprise": "cd app/renderer/src/main && yarn build-simple-enterprise",
18-
"build-render-test-simple-enterprise": "cd app/renderer/src/main && yarn build-test-simple-enterprise",
19-
"dev": "concurrently -k \"yarn start-render\" \"wait-on tcp:3000 && yarn start-electron \" ",
20-
"postinstall": "electron-builder install-app-deps",
21-
"pack-win": "electron-builder build --win",
22-
"pack-win-legacy": "electron-builder build --win --config ./multibuilder/electron-builder-legacy.yaml",
23-
"pack-win-ee": "electron-builder build --win --config ./multibuilder/electron-builder-ee.yaml",
24-
"pack-win-ee-legacy": "electron-builder build --win --config ./multibuilder/electron-builder-ee-legacy.yaml",
25-
"pack-win-se": "electron-builder build --win --config ./multibuilder/electron-builder-se.yaml",
26-
"pack-win-se-legacy": "electron-builder build --win --config ./multibuilder/electron-builder-se-legacy.yaml",
27-
"pack-mac": "electron-builder build --mac",
28-
"pack-mac-legacy": "electron-builder build --mac --config ./multibuilder/electron-builder-legacy.yaml",
29-
"pack-mac-ee": "electron-builder build --mac --config ./multibuilder/electron-builder-ee.yaml",
30-
"pack-mac-ee-legacy": "electron-builder build --mac --config ./multibuilder/electron-builder-ee-legacy.yaml",
31-
"pack-mac-se": "electron-builder build --mac --config ./multibuilder/electron-builder-se.yaml",
32-
"pack-mac-se-legacy": "electron-builder build --mac --config ./multibuilder/electron-builder-se-legacy.yaml",
33-
"pack-linux": "electron-builder build --linux",
34-
"pack-linux-legacy": "electron-builder build --linux --config ./multibuilder/electron-builder-legacy.yaml",
35-
"pack-linux-ee": "electron-builder build --linux --config ./multibuilder/electron-builder-ee.yaml",
36-
"pack-linux-ee-legacy": "electron-builder build --linux --config ./multibuilder/electron-builder-ee-legacy.yaml",
37-
"pack-linux-se": "electron-builder build --linux --config ./multibuilder/electron-builder-se.yaml",
38-
"pack-linux-se-legacy": "electron-builder build --linux --config ./multibuilder/electron-builder-se-legacy.yaml",
39-
"electron-publish": "electron-builder --publish always -mwl",
40-
"electron-publish-legacy": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-legacy.yaml",
41-
"electron-publish-ee": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-ee.yaml",
42-
"electron-publish-ee-legacy": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-ee-legacy.yaml",
43-
"electron-publish-se": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-se.yaml",
44-
"electron-publish-se-legacy": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-se-legacy.yaml",
45-
"release-enpritrace": "electron-builder --publish always -mwl --config ./multibuilder/enpritrace.yml",
46-
"release-breachtrace": "electron-builder --publish always -mwl --config ./multibuilder/breachtrace.yaml"
47-
},
48-
"keywords": [],
49-
"author": "",
50-
"license": "ISC",
51-
"devDependencies": {
52-
"concurrently": "^6.2.0",
53-
"electron": "27.0.0",
54-
"electron-builder": "23.6.0",
55-
"protoc-gen-ts": "^0.3.9",
56-
"typescript": "^4.1.2",
57-
"wait-on": "^6.0.0",
58-
"yarn": "^1.22.11"
59-
},
60-
"dependencies": {
61-
"@grpc/grpc-js": "^1.3.6",
62-
"@grpc/proto-loader": "^0.6.4",
63-
"axios": "^0.26.1",
64-
"chrome-launcher": "^0.15.0",
65-
"compressing": "^1.8.0",
66-
"dompurify": "^3.0.5",
67-
"electron-is-dev": "^2.0.0",
68-
"electron-updater": "^4.3.9",
69-
"electron-window-state": "^5.0.3",
70-
"form-data": "^4.0.0",
71-
"fs-extra": "11.1.1",
72-
"google-protobuf": "^3.17.3",
73-
"hpagent": "^1.2.0",
74-
"node-stream-zip": "^1.15.0",
75-
"node-xlsx": "^0.21.0",
76-
"process": "^0.11.10",
77-
"request": "^2.88.2",
78-
"request-progress": "^3.0.0",
79-
"sudo-prompt": "^9.2.1",
80-
"throttle-debounce": "^5.0.0",
81-
"throttleit": "^2.0.0",
82-
"tree-kill": "^1.2.2",
83-
"ws": "^8.18.0"
84-
}
2+
"name": "yakit",
3+
"version": "1.4.1-0303",
4+
"description": "Yakit is for yaklang.io Electron GUI Entry",
5+
"main": "app/main/index.js",
6+
"scripts": {
7+
"start-electron": "electron .",
8+
"install-render": "cd app/renderer/src/main && yarn install",
9+
"start-render": "cd app/renderer/src/main && yarn electron-render",
10+
"start-render-enterprise": "cd app/renderer/src/main && yarn electron-render-enterprise",
11+
"start-render-simple-enterprise": "cd app/renderer/src/main && yarn electron-render-simple-enterprise",
12+
"build-render": "cd app/renderer/src/main && yarn build",
13+
"build-test-render": "cd app/renderer/src/main && yarn build-test",
14+
"build-render-enterprise": "cd app/renderer/src/main && yarn build-enterprise",
15+
"build-render-breachtrace": "cd app/renderer/src/main && yarn build-breachtrace",
16+
"build-render-test-enterprise": "cd app/renderer/src/main && yarn build-test-enterprise",
17+
"build-render-simple-enterprise": "cd app/renderer/src/main && yarn build-simple-enterprise",
18+
"build-render-test-simple-enterprise": "cd app/renderer/src/main && yarn build-test-simple-enterprise",
19+
"dev": "concurrently -k \"yarn start-render\" \"wait-on tcp:3000 && yarn start-electron \" ",
20+
"postinstall": "electron-builder install-app-deps",
21+
"pack-win": "env-cmd -e nonSignNormal -r packageScript/.env-cmdrc electron-builder build --win --config ./packageScript/electron-builder.config.js",
22+
"pack-win-legacy": "env-cmd -e nonSignLegacy -r packageScript/.env-cmdrc electron-builder build --win --config ./packageScript/electron-builder.config.js",
23+
"pack-win-ee": "env-cmd -e nonSignNormal,EE -r packageScript/.env-cmdrc electron-builder build --win --config ./packageScript/electron-builder.config.js",
24+
"pack-win-ee-legacy": "env-cmd -e nonSignLegacy,EE -r packageScript/.env-cmdrc electron-builder build --win --config ./packageScript/electron-builder.config.js",
25+
"pack-win-se": "env-cmd -e nonSignNormal,SE -r packageScript/.env-cmdrc electron-builder build --win --config ./packageScript/electron-builder.config.js",
26+
"pack-win-se-legacy": "env-cmd -e nonSignLegacy,SE -r packageScript/.env-cmdrc electron-builder build --win --config ./packageScript/electron-builder.config.js",
27+
"pack-mac": "env-cmd -e signNormal -r packageScript/.env-cmdrc electron-builder build --mac --config ./packageScript/electron-builder.config.js",
28+
"pack-mac-legacy": "env-cmd -e signLegacy -r packageScript/.env-cmdrc electron-builder build --mac --config ./packageScript/electron-builder.config.js",
29+
"pack-mac-ee": "env-cmd -e signNormal,EE -r ./packageScript/.env-cmdrc electron-builder build --mac --config ./packageScript/electron-builder.config.js",
30+
"pack-mac-ee-legacy": "env-cmd -e signLegacy,EE -r packageScript/.env-cmdrc electron-builder build --mac --config ./packageScript/electron-builder.config.js",
31+
"pack-mac-se": "env-cmd -e signNormal,SE -r packageScript/.env-cmdrc electron-builder build --mac --config ./packageScript/electron-builder.config.js",
32+
"pack-mac-se-legacy": "env-cmd -e signLegacy,SE -r packageScript/.env-cmdrc electron-builder build --mac --config ./packageScript/electron-builder.config.js",
33+
"pack-linux": "env-cmd -e nonSignNormal -r packageScript/.env-cmdrc electron-builder build --linux --config ./packageScript/electron-builder.config.js",
34+
"pack-linux-legacy": "env-cmd -e nonSignLegacy -r packageScript/.env-cmdrc electron-builder build --linux --config ./packageScript/electron-builder.config.js",
35+
"pack-linux-ee": "env-cmd -e nonSignNormal,EE -r packageScript/.env-cmdrc electron-builder build --linux --config ./packageScript/electron-builder.config.js",
36+
"pack-linux-ee-legacy": "env-cmd -e nonSignLegacy,EE -r packageScript/.env-cmdrc electron-builder build --linux --config ./packageScript/electron-builder.config.js",
37+
"pack-linux-se": "env-cmd -e nonSignNormal,SE -r packageScript/.env-cmdrc electron-builder build --linux --config ./packageScript/electron-builder.config.js",
38+
"pack-linux-se-legacy": "env-cmd -e nonSignLegacy,SE -r packageScript/.env-cmdrc electron-builder build --linux --config ./packageScript/electron-builder.config.js",
39+
"electron-publish": "electron-builder --publish always -mwl",
40+
"electron-publish-legacy": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-legacy.yaml",
41+
"electron-publish-ee": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-ee.yaml",
42+
"electron-publish-ee-legacy": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-ee-legacy.yaml",
43+
"electron-publish-se": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-se.yaml",
44+
"electron-publish-se-legacy": "electron-builder --publish always -mwl --config ./multibuilder/electron-builder-se-legacy.yaml",
45+
"release-enpritrace": "electron-builder --publish always -mwl --config ./multibuilder/enpritrace.yml",
46+
"release-breachtrace": "electron-builder --publish always -mwl --config ./multibuilder/breachtrace.yaml",
47+
"release-render": "cd app/renderer/src/main && yarn release"
48+
},
49+
"keywords": [],
50+
"author": "",
51+
"license": "ISC",
52+
"devDependencies": {
53+
"@electron/notarize": "^2.5.0",
54+
"concurrently": "^6.2.0",
55+
"electron": "27.0.0",
56+
"electron-builder": "23.6.0",
57+
"env-cmd": "^10.1.0",
58+
"protoc-gen-ts": "^0.3.9",
59+
"typescript": "^4.1.2",
60+
"wait-on": "^6.0.0",
61+
"yarn": "^1.22.11"
62+
},
63+
"dependencies": {
64+
"@grpc/grpc-js": "^1.3.6",
65+
"@grpc/proto-loader": "^0.6.4",
66+
"axios": "^0.26.1",
67+
"chrome-launcher": "^0.15.0",
68+
"compressing": "^1.8.0",
69+
"dompurify": "^3.0.5",
70+
"electron-is-dev": "^2.0.0",
71+
"electron-updater": "^4.3.9",
72+
"electron-window-state": "^5.0.3",
73+
"form-data": "^4.0.0",
74+
"fs-extra": "11.1.1",
75+
"google-protobuf": "^3.17.3",
76+
"hpagent": "^1.2.0",
77+
"node-stream-zip": "^1.15.0",
78+
"node-xlsx": "^0.21.0",
79+
"process": "^0.11.10",
80+
"request": "^2.88.2",
81+
"request-progress": "^3.0.0",
82+
"sudo-prompt": "^9.2.1",
83+
"throttle-debounce": "^5.0.0",
84+
"throttleit": "^2.0.0",
85+
"tree-kill": "^1.2.2",
86+
"ws": "^8.18.0"
87+
}
8588
}

‎packageScript/.env-cmdrc

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"nonSignLegacy": {
3+
"CSC_IDENTITY_AUTO_DISCOVERY": "false",
4+
"THE_LEGACY": "true"
5+
},
6+
"nonSignNormal": {
7+
"CSC_IDENTITY_AUTO_DISCOVERY": "false"
8+
},
9+
"signNormal": {
10+
"CSC_IDENTITY_AUTO_DISCOVERY": "true"
11+
},
12+
"signLegacy": {
13+
"CSC_IDENTITY_AUTO_DISCOVERY": "true",
14+
"THE_LEGACY": "true"
15+
},
16+
"EE": {
17+
"PLATFORM": "ee"
18+
},
19+
"SE": {
20+
"PLATFORM": "se"
21+
}
22+
}

‎packageScript/buildHook/after-sign.js

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const {notarize} = require("@electron/notarize")
2+
3+
module.exports = async function afterSign(context) {
4+
const {appOutDir, packager, electronPlatformName} = context
5+
if (electronPlatformName !== "darwin") {
6+
return
7+
}
8+
const appName = packager.appInfo.productFilename
9+
const appBundleId = packager.appInfo.id
10+
11+
console.log(`Start notarizing ${appName}`)
12+
console.log(`Output Directory ${appOutDir}`)
13+
console.log(`App Path: ${appOutDir}/${appName}.app`)
14+
15+
return await notarize({
16+
appBundleId: appBundleId,
17+
appPath: `${appOutDir}/${appName}.app`,
18+
appleId: process.env.APPLE_ID,
19+
appleIdPassword: process.env.APPLE_PASSWORD,
20+
teamId: process.env.TEAM_ID // 可选,根据需要配置
21+
})
22+
}
+137
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
const packageJson = require("../../package.json")
2+
3+
module.exports = async function (context) {
4+
const isLegacy = process.env.THE_LEGACY == "true"
5+
6+
const archMap = {
7+
1: "x64",
8+
3: "arm64"
9+
}
10+
const arch = archMap[context.arch]
11+
const baseInfo = context.packager.appInfo
12+
let productVersion = packageJson.version || baseInfo.version
13+
// CE
14+
if (productVersion.endsWith("-ce")) {
15+
productVersion = productVersion.replace("-ce", "")
16+
}
17+
// EE
18+
if (productVersion.endsWith("-ee")) {
19+
productVersion = productVersion.replace("-ee", "")
20+
}
21+
22+
/** win32 */
23+
const win32Config = context.electronPlatformName === "win32" ? context.packager.config.win : null
24+
if (win32Config) {
25+
win32Config.extraFiles = [
26+
{
27+
from: "bins/flag.windows.txt",
28+
to: "bins/flag.windows.txt"
29+
},
30+
{
31+
from: "bins/yak_windows_amd64.zip",
32+
to: "bins/yak.zip"
33+
},
34+
{
35+
from: "LICENSE.md",
36+
to: "LICENSE.md"
37+
}
38+
]
39+
win32Config.artifactName = `${"${productName}"}-${productVersion}-windows${
40+
isLegacy ? "-legacy" : ""
41+
}-amd64.${"${ext}"}`
42+
context.packager.config.win = win32Config
43+
}
44+
45+
/**linux */
46+
/** 1:x64 3:arm64 */
47+
const linuxConfig = context.electronPlatformName === "linux" ? context.packager.config.linux : null
48+
if (linuxConfig) {
49+
const linuxExtraFiles = [
50+
{
51+
from: "bins/flag.linux.txt",
52+
to: "bins/flag.linux.txt"
53+
},
54+
{
55+
from: "LICENSE.md",
56+
to: "LICENSE.md"
57+
}
58+
]
59+
switch (arch) {
60+
case "arm64":
61+
linuxConfig.artifactName = `${"${productName}"}-${productVersion}-linux${
62+
isLegacy ? "-legacy" : ""
63+
}-arm64.${"${ext}"}`
64+
linuxConfig.extraFiles = [
65+
...linuxExtraFiles,
66+
{
67+
from: "bins/yak_linux_arm64.zip",
68+
to: "bins/yak.zip"
69+
}
70+
]
71+
break
72+
case "x64":
73+
linuxConfig.artifactName = `${"${productName}"}-${productVersion}-linux${
74+
isLegacy ? "-legacy" : ""
75+
}-amd64.${"${ext}"}`
76+
linuxConfig.extraFiles = [
77+
...linuxExtraFiles,
78+
{
79+
from: "bins/yak_linux_amd64.zip",
80+
to: "bins/yak.zip"
81+
}
82+
]
83+
break
84+
85+
default:
86+
break
87+
}
88+
context.packager.config.linux = linuxConfig
89+
}
90+
91+
/**mac */
92+
/** 1:x64 3:arm64 */
93+
const macConfig = context.electronPlatformName === "darwin" ? context.packager.config.mac : null
94+
if (macConfig) {
95+
const darwinExtraFiles = [
96+
{
97+
from: "bins/flag.darwin.txt",
98+
to: "bins/flag.darwin.txt"
99+
}
100+
]
101+
macConfig.artifactName = `${"${productName}"}-${productVersion}-darwin${
102+
isLegacy ? "-legacy" : ""
103+
}-${"${arch}"}.${"${ext}"}`
104+
switch (arch) {
105+
case "arm64":
106+
macConfig.extraFiles = [
107+
...darwinExtraFiles,
108+
{
109+
from: "bins/yak_darwin_arm64.zip",
110+
to: "bins/yak.zip"
111+
},
112+
{
113+
from: "bins/yak_darwin_arm64.sha256.txt",
114+
to: "bins/engine-sha256.txt"
115+
}
116+
]
117+
break
118+
case "x64":
119+
macConfig.extraFiles = [
120+
...darwinExtraFiles,
121+
{
122+
from: "bins/yak_darwin_amd64.zip",
123+
to: "bins/yak.zip"
124+
},
125+
{
126+
from: "bins/yak_darwin_amd64.sha256.txt",
127+
to: "bins/engine-sha256.txt"
128+
}
129+
]
130+
break
131+
132+
default:
133+
break
134+
}
135+
context.packager.config.mac = macConfig
136+
}
137+
}
+161
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
// app 信息配置
2+
let appInfoOption = null
3+
4+
// 各平台图标配置
5+
let macIcon = null
6+
let linuxIcon = null
7+
let winIcon = null
8+
let nsisInstallerIcon = null
9+
let nsisUninstallerIcon = null
10+
11+
// 生成构建包的自定义配置
12+
const platform = process.env.PLATFORM
13+
switch (platform) {
14+
case "ee":
15+
appInfoOption = {
16+
appId: "io.yaklang.enpritrace",
17+
extraMetadata: {name: "enpritrace"},
18+
productName: "EnpriTrace",
19+
copyright: "Copyright © 2021 v1ll4n"
20+
}
21+
macIcon = "app/assets/yakiteelogo.icns"
22+
linuxIcon = "app/assets/yakiteelogo.icns"
23+
winIcon = "app/assets/yakiteelogo.ico"
24+
nsisInstallerIcon = "app/assets/yakiteelogo.ico"
25+
nsisUninstallerIcon = "app/assets/yakiteelogo.ico"
26+
break
27+
case "se":
28+
appInfoOption = {
29+
appId: "io.yaklang.enpritraceagent",
30+
extraMetadata: {name: "enpritraceagent"},
31+
productName: "EnpriTraceAgent",
32+
copyright: "Copyright © 2021 v1ll4n"
33+
}
34+
macIcon = "app/assets/yakitselogo.icns"
35+
linuxIcon = "app/assets/yakitselogo.icns"
36+
winIcon = "app/assets/yakitselogo.ico"
37+
nsisInstallerIcon = "app/assets/yakitselogo.ico"
38+
nsisUninstallerIcon = "app/assets/yakitselogo.ico"
39+
break
40+
41+
default:
42+
// ce
43+
appInfoOption = {
44+
appId: "io.yaklang.yakit",
45+
productName: "Yakit",
46+
copyright: "Copyright © 2024 yaklang.io"
47+
}
48+
macIcon = "app/assets/yakitlogo.icns"
49+
linuxIcon = "app/assets/yakitlogo.icns"
50+
winIcon = "app/assets/yakitlogo.ico"
51+
nsisInstallerIcon = "app/assets/yakitlogo.ico"
52+
nsisUninstallerIcon = "app/assets/yakitlogo.ico"
53+
break
54+
}
55+
56+
const configOption = {
57+
...(appInfoOption || {}),
58+
/** @description extraFiles 可以在各自平台独立配置 */
59+
extraFiles: [
60+
{from: "bins/scripts/auto-install-cert.zip", to: "bins/scripts/auto-install-cert.zip"},
61+
{from: "bins/scripts/start-engine.zip", to: "bins/scripts/start-engine.zip"},
62+
{from: "bins/scripts/google-chrome-plugin.zip", to: "bins/scripts/google-chrome-plugin.zip"},
63+
{from: "bins/flag.txt", to: "bins/flag.txt"},
64+
{from: "bins/engine-version.txt", to: "bins/engine-version.txt"},
65+
{
66+
from: "bins/resources",
67+
to: "bins/resources",
68+
filter: ["**/*", "*.txt"]
69+
},
70+
{
71+
from: "bins/database/",
72+
to: "bins/database/",
73+
filter: ["**/*", "*.txt", "*.gzip", "!*.db"]
74+
},
75+
{
76+
from: "report/template.zip",
77+
to: "report/template.zip"
78+
}
79+
],
80+
directories: {
81+
buildResources: "resources",
82+
output: "release/",
83+
app: "."
84+
},
85+
files: [
86+
"**/*",
87+
"!bins/**/*",
88+
"!.github/**/*",
89+
"!multibuilder/**/*",
90+
"!scripts/**/*",
91+
"!buildutil/**/*",
92+
"!buildHooks/**/*",
93+
"!build/**/*",
94+
"!backups/**/*",
95+
"!app/renderer/src/**/*"
96+
],
97+
asar: true,
98+
publish: [
99+
{
100+
provider: "generic",
101+
url: "https://yaklang.oss-cn-beijing.aliyuncs.com/yak/latest/"
102+
}
103+
],
104+
mac: {
105+
// category: "public.app-category.developer-tools",
106+
hardenedRuntime: true,
107+
gatekeeperAssess: false,
108+
entitlements: "packageScript/plist/entitlements.mac.plist",
109+
entitlementsInherit: "packageScript/plist/entitlements.mac.plist",
110+
target: [{target: "dmg", arch: ["x64", "arm64"]}],
111+
icon: macIcon
112+
},
113+
linux: {
114+
target: [{target: "AppImage", arch: ["x64", "arm64"]}],
115+
icon: linuxIcon
116+
},
117+
win: {
118+
target: [{target: "nsis", arch: ["x64"]}],
119+
icon: winIcon
120+
},
121+
nsis: {
122+
oneClick: false,
123+
perMachine: false,
124+
deleteAppDataOnUninstall: true,
125+
allowToChangeInstallationDirectory: true,
126+
installerIcon: nsisInstallerIcon,
127+
uninstallerIcon: nsisUninstallerIcon,
128+
unicode: true,
129+
include: "build/yakit_build.nsh",
130+
license: "LICENSE.md",
131+
warningsAsErrors: false,
132+
createDesktopShortcut: false,
133+
createStartMenuShortcut: true
134+
},
135+
beforePack: "packageScript/buildHook/before-pack.js",
136+
releaseInfo: {
137+
releaseName: "${version}",
138+
releaseNotes: "view github release: https://github.com/yaklang/yakit/releases"
139+
}
140+
}
141+
142+
// extraFiles 是否配置-构建兼容旧平台的扩展文件
143+
const isLegacy = process.env.THE_LEGACY == "true"
144+
if (isLegacy) {
145+
configOption.extraFiles.push({
146+
from: "bins/yakit-system-mode.txt",
147+
to: "bins/yakit-system-mode.txt"
148+
})
149+
}
150+
151+
// 是否执行公证流程
152+
const autoDiscoveryIdentity = process.env.CSC_IDENTITY_AUTO_DISCOVERY
153+
if (autoDiscoveryIdentity == "true") {
154+
/** 提取公证关键信息,判断是否有执行公证的环境 */
155+
const {TEAM_ID, CERT_BASE64, CERT_PASSWORD} = process.env
156+
if (TEAM_ID && CERT_BASE64 && CERT_PASSWORD) {
157+
configOption.afterSign = "packageScript/buildHook/after-sign.js"
158+
}
159+
}
160+
161+
module.exports = {...configOption}
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<!-- Allows Just-In-Time compilation required by V8 JavaScript engine in Electron -->
6+
<key>com.apple.security.cs.allow-jit</key>
7+
<true/>
8+
9+
<!-- This is needed for the V8 JavaScript engine to function properly -->
10+
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
11+
<true/>
12+
13+
<!-- Allows network connections -->
14+
<key>com.apple.security.network.client</key>
15+
<true/>
16+
17+
<!-- Uncomment to allow read and write access to files explicitly selected by the user through system dialogs -->
18+
<!-- <key>com.apple.security.files.user-selected.read-write</key>
19+
<true/> -->
20+
21+
<!-- Uncomment to allow read and write access to the user's Downloads directory -->
22+
<!-- <key>com.apple.security.files.downloads.read-write</key>
23+
<true/> -->
24+
</dict>
25+
</plist>

‎scripts/check-build-package.sh ‎packageScript/script/check-build-package.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#!/bin/sh
2-
# 用法: ./verify_packages.sh <prefix>
2+
# 用法: ./verify_packages.sh <file_name>
33
# 示例: ./verify_packages.sh Yakit
44

55
if [ "$#" -lt 1 ]; then
6-
echo "Usage: $0 <prefix>"
6+
echo "Usage: $0 <file_name>"
77
exit 1
88
fi
99

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
yarn add -D dmg-license
2+
3+
chmod +x ./packageScript/script/installRender.sh
4+
chmod +x ./packageScript/script/retryScript.sh
5+
6+
# 获取渲染端最新版本号
7+
renderVersion=$(curl -fsL "http://yaklang.oss-accelerate.aliyuncs.com/yak/render/version.txt") || {
8+
echo "Failed to obtain render version" >&2
9+
exit 1
10+
}
11+
# 设置渲染端最新版本号, 用于后续下载
12+
export RENDER_VERSION="${renderVersion}"
13+
14+
versions=("ce" "ee") # 打包的版本集合
15+
for item in "${versions[@]}"; do
16+
rm -rf ./app/renderer/pages
17+
18+
./packageScript/script/installRender.sh ${item} || { exit 1; }
19+
20+
yarn remove electron && yarn add electron@27.0.0 --dev
21+
cp ./bins/yak_windows_normal_amd64.zip ./bins/yak_windows_amd64.zip
22+
if [ "${item}" = "ce" ]; then
23+
./packageScript/script/retryScript.sh "yarn pack-win" || { exit 1; }
24+
./packageScript/script/retryScript.sh "yarn pack-linux" || { exit 1; }
25+
./packageScript/script/retryScript.sh "yarn pack-mac" || { exit 1; }
26+
elif [ "${item}" = "ee" ]; then
27+
./packageScript/script/retryScript.sh "yarn pack-win-ee" || { exit 1; }
28+
./packageScript/script/retryScript.sh "yarn pack-linux-ee" || { exit 1; }
29+
./packageScript/script/retryScript.sh "yarn pack-mac-ee" || { exit 1; }
30+
else
31+
echo "Unknown packaged version: ${item}" >&2
32+
exit 1
33+
fi
34+
35+
yarn remove electron && yarn add electron@22.3.27 --dev
36+
cp ./bins/yak_windows_legacy_amd64.zip ./bins/yak_windows_amd64.zip
37+
if [ "${item}" = "ce" ]; then
38+
./packageScript/script/retryScript.sh "yarn pack-win-legacy" || { exit 1; }
39+
./packageScript/script/retryScript.sh "yarn pack-linux-legacy" || { exit 1; }
40+
./packageScript/script/retryScript.sh "yarn pack-mac-legacy" || { exit 1; }
41+
elif [ "${item}" = "ee" ]; then
42+
./packageScript/script/retryScript.sh "yarn pack-win-ee-legacy" || { exit 1; }
43+
./packageScript/script/retryScript.sh "yarn pack-linux-ee-legacy" || { exit 1; }
44+
./packageScript/script/retryScript.sh "yarn pack-mac-ee-legacy" || { exit 1; }
45+
else
46+
echo "Unknown packaged version: ${item}" >&2
47+
exit 1
48+
fi
49+
done

‎packageScript/script/installRender.sh

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/sh
2+
# 用法: ./installRender.sh <version>
3+
# 示例: ./installRender.sh ce
4+
5+
if [ "$#" -lt 1 ]; then
6+
echo "Usage: $0 <version>"
7+
exit 1
8+
fi
9+
10+
file_name="$1.zip"
11+
echo "Start to download ${file_name}"
12+
wget -O ${file_name} https://oss-qn.yaklang.com/yak/render/${RENDER_VERSION}/${file_name} || {
13+
echo "Error: Download Render Failed" >&2
14+
exit 1
15+
}
16+
unzip -n ${file_name} -d ./app/renderer
17+
rm ./${file_name}

‎packageScript/script/retryScript.sh

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/sh
2+
# 用法: ./retryScript.sh <script>
3+
# 示例: ./retryScript.sh yarn pack-win
4+
5+
if [ "$#" -lt 1 ]; then
6+
echo "Usage: $0 <script>"
7+
exit 1
8+
fi
9+
10+
script="$1"
11+
12+
max_attempts=3
13+
attempt=1
14+
while [ $attempt -le $max_attempts ]; do
15+
echo "Start to execute ${script}"
16+
eval "${script}" && break # 如果成功则退出循环
17+
attempt=$((attempt + 1))
18+
sleep 2 # 失败后等待2000ms再重试
19+
done
20+
[ $attempt -gt $max_attempts ] && {
21+
echo "${script} command exceeded retry attempts" >&2
22+
exit 1
23+
} # 超过重试次数则失败
24+
exit 0

‎packageScript/script/signature.sh

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# 解码 p12 文件
2+
echo "$CERT_BASE64" | base64 --decode >cert.p12
3+
4+
# 创建一个临时钥匙串,并导入证书(这里不设置密码)
5+
security create-keychain -p "" build.keychain
6+
security default-keychain -s build.keychain
7+
security unlock-keychain -p "" build.keychain
8+
security import cert.p12 -k build.keychain -P $CERT_PASSWORD -T /usr/bin/codesign
9+
10+
# 设置钥匙链分区列表; 允许这些工具访问: apple-tool:,apple:,codesign:
11+
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "" build.keychain
12+
13+
# 从钥匙串中查找包含 TEAM_ID 的签名证书标识
14+
CERT_ID=$(security find-identity -v -p codesigning | grep "$TEAM_ID" | head -n1 | awk -F\" '{print $2}')
15+
echo "Using certificate: $CERT_ID"
16+
17+
# 对 yak 可执行文件进行签名(请替换为你的可执行文件路径)
18+
echo "signing mac amd64 engine"
19+
codesign --timestamp --options runtime --sign "$CERT_ID" ./bins/yak_darwin_amd64
20+
zip ./bins/yak_darwin_amd64.zip ./bins/yak_darwin_amd64 && rm ./bins/yak_darwin_amd64
21+
echo "signing mac arm64 engine"
22+
codesign --timestamp --options runtime --sign "$CERT_ID" ./bins/yak_darwin_arm64
23+
zip ./bins/yak_darwin_arm64.zip ./bins/yak_darwin_arm64 && rm ./bins/yak_darwin_arm64
File renamed without changes.

‎scripts/electron-build.sh

-60
This file was deleted.

‎yarn.lock

+49
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@
3838
optionalDependencies:
3939
global-agent "^3.0.0"
4040

41+
"@electron/notarize@^2.5.0":
42+
version "2.5.0"
43+
resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.5.0.tgz#d4d25356adfa29df4a76bd64a8bd347237cd251e"
44+
integrity sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==
45+
dependencies:
46+
debug "^4.1.1"
47+
fs-extra "^9.0.1"
48+
promise-retry "^2.0.1"
49+
4150
"@electron/universal@1.2.1":
4251
version "1.2.1"
4352
resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.2.1.tgz#3c2c4ff37063a4e9ab1e6ff57db0bc619bc82339"
@@ -756,6 +765,11 @@ commander@2.9.0:
756765
dependencies:
757766
graceful-readlink ">= 1.0.0"
758767

768+
commander@^4.0.0:
769+
version "4.1.1"
770+
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
771+
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
772+
759773
commander@^5.0.0:
760774
version "5.1.0"
761775
resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
@@ -822,6 +836,15 @@ crc@^3.8.0:
822836
dependencies:
823837
buffer "^5.1.0"
824838

839+
cross-spawn@^7.0.0:
840+
version "7.0.6"
841+
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
842+
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
843+
dependencies:
844+
path-key "^3.1.0"
845+
shebang-command "^2.0.0"
846+
which "^2.0.1"
847+
825848
cross-spawn@^7.0.1, cross-spawn@^7.0.3:
826849
version "7.0.3"
827850
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -1056,11 +1079,24 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
10561079
dependencies:
10571080
once "^1.4.0"
10581081

1082+
env-cmd@^10.1.0:
1083+
version "10.1.0"
1084+
resolved "https://registry.yarnpkg.com/env-cmd/-/env-cmd-10.1.0.tgz#c7f5d3b550c9519f137fdac4dd8fb6866a8c8c4b"
1085+
integrity sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==
1086+
dependencies:
1087+
commander "^4.0.0"
1088+
cross-spawn "^7.0.0"
1089+
10591090
env-paths@^2.2.0:
10601091
version "2.2.1"
10611092
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
10621093
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
10631094

1095+
err-code@^2.0.2:
1096+
version "2.0.3"
1097+
resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
1098+
integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
1099+
10641100
es6-error@^4.1.1:
10651101
version "4.1.1"
10661102
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
@@ -1874,6 +1910,14 @@ progress@^2.0.3:
18741910
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
18751911
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
18761912

1913+
promise-retry@^2.0.1:
1914+
version "2.0.1"
1915+
resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
1916+
integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==
1917+
dependencies:
1918+
err-code "^2.0.2"
1919+
retry "^0.12.0"
1920+
18771921
protobufjs@^6.11.3:
18781922
version "6.11.3"
18791923
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74"
@@ -2018,6 +2062,11 @@ responselike@^2.0.0:
20182062
dependencies:
20192063
lowercase-keys "^2.0.0"
20202064

2065+
retry@^0.12.0:
2066+
version "0.12.0"
2067+
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
2068+
integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
2069+
20212070
rimraf@^3.0.0:
20222071
version "3.0.2"
20232072
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"

0 commit comments

Comments
 (0)
Please sign in to comment.