electron-version-deployer-cli 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +51 -29
- package/dist/helpers/netRequest.d.ts +1 -1
- package/dist/main.js +50 -24
- package/package.json +5 -1
package/dist/cli.cjs
CHANGED
|
@@ -402,29 +402,48 @@ async function netRequest(options) {
|
|
|
402
402
|
}
|
|
403
403
|
return new Promise((resolve, reject) => {
|
|
404
404
|
const request = electron.net.request(options.url);
|
|
405
|
+
request.setHeader("Accept-Encoding", "identity");
|
|
406
|
+
request.setHeader("Cache-Control", "no-cache");
|
|
405
407
|
let data = "";
|
|
406
408
|
let isResolved = false;
|
|
409
|
+
const failOnce = (error) => {
|
|
410
|
+
if (isResolved)
|
|
411
|
+
return;
|
|
412
|
+
isResolved = true;
|
|
413
|
+
cleanup();
|
|
414
|
+
reject(error);
|
|
415
|
+
};
|
|
407
416
|
const timeoutId = setTimeout(() => {
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
request.abort();
|
|
411
|
-
reject(new Error("网络请求超时,请检查网络连接或使用 VPN 后重试"));
|
|
412
|
-
}
|
|
417
|
+
request.abort();
|
|
418
|
+
failOnce(new Error("网络请求超时,请检查网络连接或使用 VPN 后重试"));
|
|
413
419
|
}, TIMEOUT_MS);
|
|
414
420
|
const cleanup = () => {
|
|
415
421
|
clearTimeout(timeoutId);
|
|
416
422
|
};
|
|
417
423
|
request.on("response", (response) => {
|
|
424
|
+
const statusCode = response.statusCode ?? 0;
|
|
425
|
+
if (statusCode < 200 || statusCode >= 300) {
|
|
426
|
+
failOnce(
|
|
427
|
+
new Error(
|
|
428
|
+
`请求失败,状态码: ${statusCode} ${response.statusMessage ?? ""}`.trim()
|
|
429
|
+
)
|
|
430
|
+
);
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
418
433
|
response.on("data", (chunk) => {
|
|
419
|
-
|
|
420
|
-
if (
|
|
421
|
-
isResolved
|
|
422
|
-
|
|
423
|
-
|
|
434
|
+
try {
|
|
435
|
+
if (options.responseType === "stream") {
|
|
436
|
+
if (!isResolved) {
|
|
437
|
+
isResolved = true;
|
|
438
|
+
cleanup();
|
|
439
|
+
resolve(response);
|
|
440
|
+
}
|
|
441
|
+
return;
|
|
424
442
|
}
|
|
425
|
-
|
|
443
|
+
data += chunk;
|
|
444
|
+
} catch (error) {
|
|
445
|
+
failOnce(error);
|
|
426
446
|
}
|
|
427
|
-
data += chunk;
|
|
428
447
|
});
|
|
429
448
|
response.on("end", () => {
|
|
430
449
|
if (isResolved)
|
|
@@ -433,23 +452,26 @@ async function netRequest(options) {
|
|
|
433
452
|
cleanup();
|
|
434
453
|
if (options.responseType === "stream")
|
|
435
454
|
return;
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
455
|
+
try {
|
|
456
|
+
if (options.responseType === "json") {
|
|
457
|
+
try {
|
|
458
|
+
resolve(JSON.parse(data));
|
|
459
|
+
} catch (e) {
|
|
460
|
+
resolve(null);
|
|
461
|
+
}
|
|
462
|
+
} else {
|
|
463
|
+
resolve(data);
|
|
441
464
|
}
|
|
442
|
-
}
|
|
443
|
-
|
|
465
|
+
} catch (error) {
|
|
466
|
+
failOnce(error);
|
|
444
467
|
}
|
|
445
468
|
});
|
|
469
|
+
response.on("error", (error) => {
|
|
470
|
+
failOnce(error);
|
|
471
|
+
});
|
|
446
472
|
});
|
|
447
473
|
request.on("error", (error) => {
|
|
448
|
-
|
|
449
|
-
isResolved = true;
|
|
450
|
-
cleanup();
|
|
451
|
-
reject(error);
|
|
452
|
-
}
|
|
474
|
+
failOnce(error);
|
|
453
475
|
});
|
|
454
476
|
request.end();
|
|
455
477
|
});
|
|
@@ -472,7 +494,7 @@ function versionToNum(a) {
|
|
|
472
494
|
let res = c.join("");
|
|
473
495
|
return res;
|
|
474
496
|
}
|
|
475
|
-
const _Netlify = class
|
|
497
|
+
const _Netlify = class {
|
|
476
498
|
static get instance() {
|
|
477
499
|
if (!this._instance) {
|
|
478
500
|
this._instance = new _Netlify();
|
|
@@ -530,8 +552,8 @@ const _Netlify = class _Netlify {
|
|
|
530
552
|
return `configs.netlify 配置不存在`;
|
|
531
553
|
}
|
|
532
554
|
};
|
|
533
|
-
__publicField(_Netlify, "_instance");
|
|
534
555
|
let Netlify = _Netlify;
|
|
556
|
+
__publicField(Netlify, "_instance");
|
|
535
557
|
function forceDeleteSync(targetPath) {
|
|
536
558
|
try {
|
|
537
559
|
const stats = fs.statSync(targetPath);
|
|
@@ -555,7 +577,7 @@ function forceDeleteSync(targetPath) {
|
|
|
555
577
|
}
|
|
556
578
|
}
|
|
557
579
|
}
|
|
558
|
-
const _Cloudflare = class
|
|
580
|
+
const _Cloudflare = class {
|
|
559
581
|
static get instance() {
|
|
560
582
|
if (!this._instance) {
|
|
561
583
|
this._instance = new _Cloudflare();
|
|
@@ -654,8 +676,8 @@ const _Cloudflare = class _Cloudflare {
|
|
|
654
676
|
return `configs.cloudflare 配置不存在`;
|
|
655
677
|
}
|
|
656
678
|
};
|
|
657
|
-
__publicField(_Cloudflare, "_instance");
|
|
658
679
|
let Cloudflare = _Cloudflare;
|
|
680
|
+
__publicField(Cloudflare, "_instance");
|
|
659
681
|
commander.program.command("deploy").description("执行部署").action(async (source, destination) => {
|
|
660
682
|
const configs = await getConfigs();
|
|
661
683
|
try {
|
|
@@ -798,4 +820,4 @@ async function installPrebuilt(configs) {
|
|
|
798
820
|
}
|
|
799
821
|
commander.program.description(
|
|
800
822
|
"Electron 版本部署 CLI,简化你的 Electron 软件更新,让一切变得简单。"
|
|
801
|
-
).helpOption("-h, --help", "使用帮助").version("0.4.
|
|
823
|
+
).helpOption("-h, --help", "使用帮助").version("0.4.9", "-V, --version", "显示版本号").parse(process.argv);
|
package/dist/main.js
CHANGED
|
@@ -41,29 +41,48 @@ async function netRequest(options) {
|
|
|
41
41
|
}
|
|
42
42
|
return new Promise((resolve, reject) => {
|
|
43
43
|
const request = electron.net.request(options.url);
|
|
44
|
+
request.setHeader("Accept-Encoding", "identity");
|
|
45
|
+
request.setHeader("Cache-Control", "no-cache");
|
|
44
46
|
let data = "";
|
|
45
47
|
let isResolved = false;
|
|
48
|
+
const failOnce = (error) => {
|
|
49
|
+
if (isResolved)
|
|
50
|
+
return;
|
|
51
|
+
isResolved = true;
|
|
52
|
+
cleanup2();
|
|
53
|
+
reject(error);
|
|
54
|
+
};
|
|
46
55
|
const timeoutId = setTimeout(() => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
request.abort();
|
|
50
|
-
reject(new Error("网络请求超时,请检查网络连接或使用 VPN 后重试"));
|
|
51
|
-
}
|
|
56
|
+
request.abort();
|
|
57
|
+
failOnce(new Error("网络请求超时,请检查网络连接或使用 VPN 后重试"));
|
|
52
58
|
}, TIMEOUT_MS);
|
|
53
59
|
const cleanup2 = () => {
|
|
54
60
|
clearTimeout(timeoutId);
|
|
55
61
|
};
|
|
56
62
|
request.on("response", (response) => {
|
|
63
|
+
const statusCode = response.statusCode ?? 0;
|
|
64
|
+
if (statusCode < 200 || statusCode >= 300) {
|
|
65
|
+
failOnce(
|
|
66
|
+
new Error(
|
|
67
|
+
`请求失败,状态码: ${statusCode} ${response.statusMessage ?? ""}`.trim()
|
|
68
|
+
)
|
|
69
|
+
);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
57
72
|
response.on("data", (chunk) => {
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
isResolved
|
|
61
|
-
|
|
62
|
-
|
|
73
|
+
try {
|
|
74
|
+
if (options.responseType === "stream") {
|
|
75
|
+
if (!isResolved) {
|
|
76
|
+
isResolved = true;
|
|
77
|
+
cleanup2();
|
|
78
|
+
resolve(response);
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
63
81
|
}
|
|
64
|
-
|
|
82
|
+
data += chunk;
|
|
83
|
+
} catch (error) {
|
|
84
|
+
failOnce(error);
|
|
65
85
|
}
|
|
66
|
-
data += chunk;
|
|
67
86
|
});
|
|
68
87
|
response.on("end", () => {
|
|
69
88
|
if (isResolved)
|
|
@@ -72,23 +91,26 @@ async function netRequest(options) {
|
|
|
72
91
|
cleanup2();
|
|
73
92
|
if (options.responseType === "stream")
|
|
74
93
|
return;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
94
|
+
try {
|
|
95
|
+
if (options.responseType === "json") {
|
|
96
|
+
try {
|
|
97
|
+
resolve(JSON.parse(data));
|
|
98
|
+
} catch (e) {
|
|
99
|
+
resolve(null);
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
resolve(data);
|
|
80
103
|
}
|
|
81
|
-
}
|
|
82
|
-
|
|
104
|
+
} catch (error) {
|
|
105
|
+
failOnce(error);
|
|
83
106
|
}
|
|
84
107
|
});
|
|
108
|
+
response.on("error", (error) => {
|
|
109
|
+
failOnce(error);
|
|
110
|
+
});
|
|
85
111
|
});
|
|
86
112
|
request.on("error", (error) => {
|
|
87
|
-
|
|
88
|
-
isResolved = true;
|
|
89
|
-
cleanup2();
|
|
90
|
-
reject(error);
|
|
91
|
-
}
|
|
113
|
+
failOnce(error);
|
|
92
114
|
});
|
|
93
115
|
request.end();
|
|
94
116
|
});
|
|
@@ -322,6 +344,8 @@ async function installPkg(zipFile) {
|
|
|
322
344
|
url: `${remoteUrl}/fullCodeZipSplitZips/${fileName}?hash=${Math.random()}`,
|
|
323
345
|
method: "GET"
|
|
324
346
|
});
|
|
347
|
+
request.setHeader("Accept-Encoding", "identity");
|
|
348
|
+
request.setHeader("Cache-Control", "no-cache");
|
|
325
349
|
request.on("response", (response) => {
|
|
326
350
|
response.pipe(tmpSplitZip).on("finish", () => {
|
|
327
351
|
tmpSplitZip.end(() => {
|
|
@@ -350,6 +374,8 @@ async function installPkg(zipFile) {
|
|
|
350
374
|
url: `${remoteUrl}/${zipFile}?hash=${Math.random()}`,
|
|
351
375
|
method: "GET"
|
|
352
376
|
});
|
|
377
|
+
request.setHeader("Accept-Encoding", "identity");
|
|
378
|
+
request.setHeader("Cache-Control", "no-cache");
|
|
353
379
|
request.on("response", (response) => {
|
|
354
380
|
response.pipe(tmpZipFilePath).on("finish", () => {
|
|
355
381
|
tmpZipFilePath.end(() => {
|
package/package.json
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "electron-version-deployer-cli",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.9",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"main": "./dist/index.cjs.js",
|
|
7
7
|
"module": "./dist/index.es.js",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/FrontEndSharedProject/electron-version-deployer-cli.git"
|
|
11
|
+
},
|
|
8
12
|
"scripts": {
|
|
9
13
|
"serve": "esno ./watch.ts",
|
|
10
14
|
"build": "MODE=production esno ./watch.ts && tsc -p ./tsconfig.dist.json -emitDeclarationOnly && tsc-alias -p ./tsconfig.dist.json",
|