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 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
- if (!isResolved) {
409
- isResolved = true;
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
- if (options.responseType === "stream") {
420
- if (!isResolved) {
421
- isResolved = true;
422
- cleanup();
423
- resolve(response);
434
+ try {
435
+ if (options.responseType === "stream") {
436
+ if (!isResolved) {
437
+ isResolved = true;
438
+ cleanup();
439
+ resolve(response);
440
+ }
441
+ return;
424
442
  }
425
- return;
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
- if (options.responseType === "json") {
437
- try {
438
- resolve(JSON.parse(data));
439
- } catch (e) {
440
- resolve(null);
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
- } else {
443
- resolve(data);
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
- if (!isResolved) {
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 _Netlify {
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 _Cloudflare {
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.7", "-V, --version", "显示版本号").parse(process.argv);
823
+ ).helpOption("-h, --help", "使用帮助").version("0.4.9", "-V, --version", "显示版本号").parse(process.argv);
@@ -1,6 +1,6 @@
1
1
  interface RequestOptions {
2
2
  url: string;
3
- responseType?: 'json' | 'stream' | 'text';
3
+ responseType?: "json" | "stream" | "text";
4
4
  }
5
5
  export declare function netRequest<T = any>(options: RequestOptions): Promise<T>;
6
6
  export {};
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
- if (!isResolved) {
48
- isResolved = true;
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
- if (options.responseType === "stream") {
59
- if (!isResolved) {
60
- isResolved = true;
61
- cleanup2();
62
- resolve(response);
73
+ try {
74
+ if (options.responseType === "stream") {
75
+ if (!isResolved) {
76
+ isResolved = true;
77
+ cleanup2();
78
+ resolve(response);
79
+ }
80
+ return;
63
81
  }
64
- return;
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
- if (options.responseType === "json") {
76
- try {
77
- resolve(JSON.parse(data));
78
- } catch (e) {
79
- resolve(null);
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
- } else {
82
- resolve(data);
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
- if (!isResolved) {
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.7",
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",