electron-incremental-update 2.2.1 → 2.2.3

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/provider.cjs CHANGED
@@ -1,17 +1,36 @@
1
1
  'use strict';
2
2
 
3
- var url = require('url');
4
- var electron = require('electron');
5
3
  var crypto = require('crypto');
6
4
  var zlib = require('zlib');
5
+ var electron = require('electron');
6
+ var url = require('url');
7
7
 
8
8
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
 
10
- var electron__default = /*#__PURE__*/_interopDefault(electron);
11
10
  var crypto__default = /*#__PURE__*/_interopDefault(crypto);
12
11
  var zlib__default = /*#__PURE__*/_interopDefault(zlib);
12
+ var electron__default = /*#__PURE__*/_interopDefault(electron);
13
13
 
14
- // src/provider/github.ts
14
+ // src/utils/crypto.ts
15
+ function hashBuffer(data, length) {
16
+ const hash = crypto__default.default.createHash("SHA256").update(data).digest("binary");
17
+ return Buffer.from(hash).subarray(0, length);
18
+ }
19
+ function aesDecrypt(encryptedText, key, iv) {
20
+ const decipher = crypto__default.default.createDecipheriv("aes-256-cbc", key, iv);
21
+ return decipher.update(encryptedText, "base64url", "utf8") + decipher.final("utf8");
22
+ }
23
+ function defaultVerifySignature(buffer, version, signature, cert) {
24
+ try {
25
+ const [sig, ver] = aesDecrypt(signature, hashBuffer(cert, 32), hashBuffer(buffer, 16)).split("%");
26
+ if (ver !== version) {
27
+ return false;
28
+ }
29
+ return crypto__default.default.createVerify("RSA-SHA256").update(buffer).verify(cert, sig, "base64");
30
+ } catch {
31
+ return false;
32
+ }
33
+ }
15
34
 
16
35
  // src/utils/version.ts
17
36
  function parseVersion(version) {
@@ -61,8 +80,28 @@ var is = (j) => !!(j && j.minimumVersion && j.signature && j.version);
61
80
  function isUpdateJSON(json) {
62
81
  return is(json) && is(json?.beta);
63
82
  }
83
+ async function defaultUnzipFile(buffer) {
84
+ return new Promise((resolve, reject) => {
85
+ zlib__default.default.brotliDecompress(buffer, (err, buffer2) => err ? reject(err) : resolve(buffer2));
86
+ });
87
+ }
64
88
 
65
- // src/provider/download.ts
89
+ // src/provider/base.ts
90
+ var BaseProvider = class {
91
+ name = "BaseProvider";
92
+ /**
93
+ * @inheritdoc
94
+ */
95
+ isLowerVersion = defaultIsLowerVersion;
96
+ /**
97
+ * @inheritdoc
98
+ */
99
+ verifySignaure = defaultVerifySignature;
100
+ /**
101
+ * @inheritdoc
102
+ */
103
+ unzipFile = defaultUnzipFile;
104
+ };
66
105
  function getHeader(headers, key) {
67
106
  const value = headers[key];
68
107
  if (Array.isArray(value)) {
@@ -71,7 +110,7 @@ function getHeader(headers, key) {
71
110
  return value;
72
111
  }
73
112
  }
74
- async function downloadFn(url, headers, signal, onResponse) {
113
+ async function downloadUtil(url, headers, signal, onResponse) {
75
114
  await electron__default.default.app.whenReady();
76
115
  return new Promise((resolve, reject) => {
77
116
  const request = electron__default.default.net.request({ url, method: "GET", redirect: "follow", headers, cache: "no-cache" });
@@ -96,7 +135,7 @@ var defaultResolveDataFn = (data, resolve, reject) => {
96
135
  }
97
136
  };
98
137
  async function defaultDownloadJSON(url, headers, signal, resolveData = defaultResolveDataFn) {
99
- return await downloadFn(
138
+ return await downloadUtil(
100
139
  url,
101
140
  headers,
102
141
  signal,
@@ -129,7 +168,7 @@ async function defaultDownloadUpdateJSON(url, headers, signal) {
129
168
  async function defaultDownloadAsar(url, headers, signal, onDownloading) {
130
169
  let transferred = 0;
131
170
  let time = Date.now();
132
- return await downloadFn(
171
+ return await downloadUtil(
133
172
  url,
134
173
  headers,
135
174
  signal,
@@ -154,49 +193,6 @@ async function defaultDownloadAsar(url, headers, signal, onDownloading) {
154
193
  }
155
194
  );
156
195
  }
157
- function hashBuffer(data, length) {
158
- const hash = crypto__default.default.createHash("SHA256").update(data).digest("binary");
159
- return Buffer.from(hash).subarray(0, length);
160
- }
161
- function aesDecrypt(encryptedText, key, iv) {
162
- const decipher = crypto__default.default.createDecipheriv("aes-256-cbc", key, iv);
163
- return decipher.update(encryptedText, "base64url", "utf8") + decipher.final("utf8");
164
- }
165
- function defaultVerifySignature(buffer, version, signature, cert) {
166
- try {
167
- const [sig, ver] = aesDecrypt(signature, hashBuffer(cert, 32), hashBuffer(buffer, 16)).split("%");
168
- if (ver !== version) {
169
- return false;
170
- }
171
- return crypto__default.default.createVerify("RSA-SHA256").update(buffer).verify(cert, sig, "base64");
172
- } catch {
173
- return false;
174
- }
175
- }
176
- async function defaultUnzipFile(buffer) {
177
- return new Promise((resolve, reject) => {
178
- zlib__default.default.brotliDecompress(buffer, (err, buffer2) => err ? reject(err) : resolve(buffer2));
179
- });
180
- }
181
-
182
- // src/provider/base.ts
183
- var BaseProvider = class {
184
- name = "BaseProvider";
185
- /**
186
- * @inheritdoc
187
- */
188
- isLowerVersion = defaultIsLowerVersion;
189
- /**
190
- * @inheritdoc
191
- */
192
- verifySignaure = defaultVerifySignature;
193
- /**
194
- * @inheritdoc
195
- */
196
- unzipFile = defaultUnzipFile;
197
- };
198
-
199
- // src/provider/github.ts
200
196
  var GitHubProvider = class extends BaseProvider {
201
197
  name = "GithubProvider";
202
198
  options;
@@ -359,4 +355,5 @@ exports.GitHubProvider = GitHubProvider;
359
355
  exports.defaultDownloadAsar = defaultDownloadAsar;
360
356
  exports.defaultDownloadJSON = defaultDownloadJSON;
361
357
  exports.defaultDownloadUpdateJSON = defaultDownloadUpdateJSON;
358
+ exports.downloadUtil = downloadUtil;
362
359
  exports.getHeader = getHeader;
@@ -1,9 +1,12 @@
1
- import { I as IProvider, U as UpdateJSONWithURL, a as UpdateInfoWithURL, D as DownloadingInfo, b as URLHandler, O as OnDownloading } from './types-C6lSLZWB.cjs';
2
- import { f as defaultVerifySignature, a as defaultUnzipFile } from './crypto-Zynscwmj.cjs';
3
- import { d as defaultIsLowerVersion, a as UpdateJSON } from './version-BYVQ367i.cjs';
4
- import { Arrayable } from '@subframe7536/type-utils';
1
+ import { e as UpdateInfoWithURL, I as IProvider, d as defaultIsLowerVersion, D as DownloadingInfo, f as URLHandler } from './types-C5M2xRjF.cjs';
2
+ export { b as UpdateJSONWithURL } from './types-C5M2xRjF.cjs';
3
+ import { c as defaultVerifySignature, l as defaultUnzipFile } from './zip-BQS8qbGA.cjs';
4
+ export { j as defaultDownloadAsar, f as defaultDownloadJSON, i as defaultDownloadUpdateJSON, e as downloadUtil, g as getHeader } from './zip-BQS8qbGA.cjs';
5
+ import '@subframe7536/type-utils';
6
+ import 'node:url';
7
+ import 'electron';
5
8
 
6
- declare abstract class BaseProvider implements IProvider {
9
+ declare abstract class BaseProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> implements IProvider<T> {
7
10
  name: string;
8
11
  /**
9
12
  * @inheritdoc
@@ -20,7 +23,7 @@ declare abstract class BaseProvider implements IProvider {
20
23
  /**
21
24
  * @inheritdoc
22
25
  */
23
- abstract downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
26
+ abstract downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<T>;
24
27
  /**
25
28
  * @inheritdoc
26
29
  */
@@ -56,7 +59,7 @@ interface GitHubProviderOptions {
56
59
  */
57
60
  urlHandler?: URLHandler;
58
61
  }
59
- declare class GitHubProvider extends BaseProvider {
62
+ declare class GitHubProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> extends BaseProvider<T> {
60
63
  name: string;
61
64
  private options;
62
65
  /**
@@ -75,7 +78,7 @@ declare class GitHubProvider extends BaseProvider {
75
78
  /**
76
79
  * @inheritdoc
77
80
  */
78
- downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
81
+ downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<T>;
79
82
  /**
80
83
  * @inheritdoc
81
84
  */
@@ -104,7 +107,7 @@ interface GitHubApiProviderOptions {
104
107
  */
105
108
  urlHandler?: URLHandler;
106
109
  }
107
- declare class GitHubApiProvider extends BaseProvider {
110
+ declare class GitHubApiProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> extends BaseProvider<T> {
108
111
  name: string;
109
112
  private options;
110
113
  /**
@@ -124,43 +127,11 @@ declare class GitHubApiProvider extends BaseProvider {
124
127
  /**
125
128
  * @inheritdoc
126
129
  */
127
- downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
130
+ downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<T>;
128
131
  /**
129
132
  * @inheritdoc
130
133
  */
131
134
  downloadAsar(info: UpdateInfoWithURL, signal: AbortSignal, onDownloading?: (info: DownloadingInfo) => void): Promise<Buffer>;
132
135
  }
133
136
 
134
- /**
135
- * Safe get value from header
136
- * @param headers response header
137
- * @param key target header key
138
- */
139
- declare function getHeader(headers: Record<string, Arrayable<string>>, key: any): any;
140
- type ResolveDataFn = (data: string, resolve: (data: any) => void, reject: (e: any) => void) => void;
141
- /**
142
- * Default function to download json and parse to UpdateJson
143
- * @param url target url
144
- * @param headers extra headers
145
- * @param signal abort signal
146
- * @param resolveData on resolve
147
- */
148
- declare function defaultDownloadJSON<T>(url: string, headers: Record<string, any>, signal: AbortSignal, resolveData?: ResolveDataFn): Promise<T>;
149
- /**
150
- * Default function to download json and parse to UpdateJson
151
- * @param url target url
152
- * @param headers extra headers
153
- * @param signal abort signal
154
- */
155
- declare function defaultDownloadUpdateJSON(url: string, headers: Record<string, any>, signal: AbortSignal): Promise<UpdateJSON>;
156
- /**
157
- * Default function to download asar buffer,
158
- * get total size from `Content-Length` header
159
- * @param url target url
160
- * @param headers extra headers
161
- * @param signal abort signal
162
- * @param onDownloading on downloading callback
163
- */
164
- declare function defaultDownloadAsar(url: string, headers: Record<string, any>, signal: AbortSignal, onDownloading?: OnDownloading): Promise<Buffer>;
165
-
166
- export { BaseProvider, DownloadingInfo, GitHubApiProvider, type GitHubApiProviderOptions, GitHubProvider, type GitHubProviderOptions, IProvider, OnDownloading, URLHandler, UpdateInfoWithURL, UpdateJSONWithURL, defaultDownloadAsar, defaultDownloadJSON, defaultDownloadUpdateJSON, getHeader };
137
+ export { BaseProvider, DownloadingInfo, GitHubApiProvider, type GitHubApiProviderOptions, GitHubProvider, type GitHubProviderOptions, IProvider, URLHandler, UpdateInfoWithURL };
@@ -1,9 +1,12 @@
1
- import { I as IProvider, U as UpdateJSONWithURL, a as UpdateInfoWithURL, D as DownloadingInfo, b as URLHandler, O as OnDownloading } from './types-nE_pIMPo.js';
2
- import { f as defaultVerifySignature, a as defaultUnzipFile } from './crypto-Zynscwmj.js';
3
- import { d as defaultIsLowerVersion, a as UpdateJSON } from './version-BYVQ367i.js';
4
- import { Arrayable } from '@subframe7536/type-utils';
1
+ import { e as UpdateInfoWithURL, I as IProvider, d as defaultIsLowerVersion, D as DownloadingInfo, f as URLHandler } from './types-C5M2xRjF.js';
2
+ export { b as UpdateJSONWithURL } from './types-C5M2xRjF.js';
3
+ import { c as defaultVerifySignature, l as defaultUnzipFile } from './zip-DbfskMQi.js';
4
+ export { j as defaultDownloadAsar, f as defaultDownloadJSON, i as defaultDownloadUpdateJSON, e as downloadUtil, g as getHeader } from './zip-DbfskMQi.js';
5
+ import '@subframe7536/type-utils';
6
+ import 'node:url';
7
+ import 'electron';
5
8
 
6
- declare abstract class BaseProvider implements IProvider {
9
+ declare abstract class BaseProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> implements IProvider<T> {
7
10
  name: string;
8
11
  /**
9
12
  * @inheritdoc
@@ -20,7 +23,7 @@ declare abstract class BaseProvider implements IProvider {
20
23
  /**
21
24
  * @inheritdoc
22
25
  */
23
- abstract downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
26
+ abstract downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<T>;
24
27
  /**
25
28
  * @inheritdoc
26
29
  */
@@ -56,7 +59,7 @@ interface GitHubProviderOptions {
56
59
  */
57
60
  urlHandler?: URLHandler;
58
61
  }
59
- declare class GitHubProvider extends BaseProvider {
62
+ declare class GitHubProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> extends BaseProvider<T> {
60
63
  name: string;
61
64
  private options;
62
65
  /**
@@ -75,7 +78,7 @@ declare class GitHubProvider extends BaseProvider {
75
78
  /**
76
79
  * @inheritdoc
77
80
  */
78
- downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
81
+ downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<T>;
79
82
  /**
80
83
  * @inheritdoc
81
84
  */
@@ -104,7 +107,7 @@ interface GitHubApiProviderOptions {
104
107
  */
105
108
  urlHandler?: URLHandler;
106
109
  }
107
- declare class GitHubApiProvider extends BaseProvider {
110
+ declare class GitHubApiProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> extends BaseProvider<T> {
108
111
  name: string;
109
112
  private options;
110
113
  /**
@@ -124,43 +127,11 @@ declare class GitHubApiProvider extends BaseProvider {
124
127
  /**
125
128
  * @inheritdoc
126
129
  */
127
- downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<UpdateJSONWithURL>;
130
+ downloadJSON(name: string, versionPath: string, signal: AbortSignal): Promise<T>;
128
131
  /**
129
132
  * @inheritdoc
130
133
  */
131
134
  downloadAsar(info: UpdateInfoWithURL, signal: AbortSignal, onDownloading?: (info: DownloadingInfo) => void): Promise<Buffer>;
132
135
  }
133
136
 
134
- /**
135
- * Safe get value from header
136
- * @param headers response header
137
- * @param key target header key
138
- */
139
- declare function getHeader(headers: Record<string, Arrayable<string>>, key: any): any;
140
- type ResolveDataFn = (data: string, resolve: (data: any) => void, reject: (e: any) => void) => void;
141
- /**
142
- * Default function to download json and parse to UpdateJson
143
- * @param url target url
144
- * @param headers extra headers
145
- * @param signal abort signal
146
- * @param resolveData on resolve
147
- */
148
- declare function defaultDownloadJSON<T>(url: string, headers: Record<string, any>, signal: AbortSignal, resolveData?: ResolveDataFn): Promise<T>;
149
- /**
150
- * Default function to download json and parse to UpdateJson
151
- * @param url target url
152
- * @param headers extra headers
153
- * @param signal abort signal
154
- */
155
- declare function defaultDownloadUpdateJSON(url: string, headers: Record<string, any>, signal: AbortSignal): Promise<UpdateJSON>;
156
- /**
157
- * Default function to download asar buffer,
158
- * get total size from `Content-Length` header
159
- * @param url target url
160
- * @param headers extra headers
161
- * @param signal abort signal
162
- * @param onDownloading on downloading callback
163
- */
164
- declare function defaultDownloadAsar(url: string, headers: Record<string, any>, signal: AbortSignal, onDownloading?: OnDownloading): Promise<Buffer>;
165
-
166
- export { BaseProvider, DownloadingInfo, GitHubApiProvider, type GitHubApiProviderOptions, GitHubProvider, type GitHubProviderOptions, IProvider, OnDownloading, URLHandler, UpdateInfoWithURL, UpdateJSONWithURL, defaultDownloadAsar, defaultDownloadJSON, defaultDownloadUpdateJSON, getHeader };
137
+ export { BaseProvider, DownloadingInfo, GitHubApiProvider, type GitHubApiProviderOptions, GitHubProvider, type GitHubProviderOptions, IProvider, URLHandler, UpdateInfoWithURL };
package/dist/provider.js CHANGED
@@ -1,99 +1,7 @@
1
- import { defaultVerifySignature, defaultUnzipFile } from './chunk-PUVBFHOK.js';
2
- import { isUpdateJSON, defaultIsLowerVersion } from './chunk-AAAM44NW.js';
1
+ import { defaultVerifySignature, defaultUnzipFile, defaultDownloadUpdateJSON, defaultDownloadAsar, defaultDownloadJSON } from './chunk-D7NXTCQW.js';
2
+ export { defaultDownloadAsar, defaultDownloadJSON, defaultDownloadUpdateJSON, downloadUtil, getHeader } from './chunk-D7NXTCQW.js';
3
+ import { defaultIsLowerVersion } from './chunk-AAAM44NW.js';
3
4
  import { URL } from 'node:url';
4
- import electron from 'electron';
5
-
6
- function getHeader(headers, key) {
7
- const value = headers[key];
8
- if (Array.isArray(value)) {
9
- return value.length === 0 ? null : value[value.length - 1];
10
- } else {
11
- return value;
12
- }
13
- }
14
- async function downloadFn(url, headers, signal, onResponse) {
15
- await electron.app.whenReady();
16
- return new Promise((resolve, reject) => {
17
- const request = electron.net.request({ url, method: "GET", redirect: "follow", headers, cache: "no-cache" });
18
- signal.addEventListener("abort", () => request.abort(), { once: true });
19
- request.on("response", (resp) => {
20
- resp.on("aborted", () => reject(new Error("aborted")));
21
- resp.on("error", () => reject(new Error("download error")));
22
- onResponse(resp, resolve, reject);
23
- });
24
- request.on("error", reject);
25
- request.end();
26
- });
27
- }
28
- function trimData(data) {
29
- return data.trim().slice(0, 5e3).replace(/\s+/g, " ");
30
- }
31
- var defaultResolveDataFn = (data, resolve, reject) => {
32
- try {
33
- resolve(JSON.parse(data));
34
- } catch {
35
- reject(new Error(`Invalid json, "${trimData(data)}"`));
36
- }
37
- };
38
- async function defaultDownloadJSON(url, headers, signal, resolveData = defaultResolveDataFn) {
39
- return await downloadFn(
40
- url,
41
- headers,
42
- signal,
43
- (resp, resolve, reject) => {
44
- let data = "";
45
- resp.on("data", (chunk) => data += chunk);
46
- resp.on("end", () => resolveData(data, resolve, reject));
47
- }
48
- );
49
- }
50
- async function defaultDownloadUpdateJSON(url, headers, signal) {
51
- return await defaultDownloadJSON(
52
- url,
53
- headers,
54
- signal,
55
- (data, resolve, reject) => {
56
- try {
57
- const json = JSON.parse(data);
58
- if (isUpdateJSON(json)) {
59
- resolve(json);
60
- } else {
61
- throw Error;
62
- }
63
- } catch {
64
- reject(new Error(`Invalid update json, "${trimData(data)}"`));
65
- }
66
- }
67
- );
68
- }
69
- async function defaultDownloadAsar(url, headers, signal, onDownloading) {
70
- let transferred = 0;
71
- let time = Date.now();
72
- return await downloadFn(
73
- url,
74
- headers,
75
- signal,
76
- (resp, resolve) => {
77
- const total = +getHeader(resp.headers, "content-length") || -1;
78
- const data = [];
79
- resp.on("data", (chunk) => {
80
- const delta = chunk.length;
81
- transferred += delta;
82
- const current = Date.now();
83
- onDownloading?.({
84
- percent: total > 0 ? +(transferred / total).toFixed(2) * 100 : -1,
85
- total,
86
- transferred,
87
- delta,
88
- bps: delta / (current - time)
89
- });
90
- time = current;
91
- data.push(chunk);
92
- });
93
- resp.on("end", () => resolve(Buffer.concat(data)));
94
- }
95
- );
96
- }
97
5
 
98
6
  // src/provider/base.ts
99
7
  var BaseProvider = class {
@@ -111,8 +19,6 @@ var BaseProvider = class {
111
19
  */
112
20
  unzipFile = defaultUnzipFile;
113
21
  };
114
-
115
- // src/provider/github.ts
116
22
  var GitHubProvider = class extends BaseProvider {
117
23
  name = "GithubProvider";
118
24
  options;
@@ -269,4 +175,4 @@ var GitHubApiProvider = class extends BaseProvider {
269
175
  }
270
176
  };
271
177
 
272
- export { BaseProvider, GitHubApiProvider, GitHubProvider, defaultDownloadAsar, defaultDownloadJSON, defaultDownloadUpdateJSON, getHeader };
178
+ export { BaseProvider, GitHubApiProvider, GitHubProvider };
@@ -1,10 +1,82 @@
1
1
  import { Promisable } from '@subframe7536/type-utils';
2
- import { U as UpdateInfo } from './version-BYVQ367i.js';
2
+ import { URL } from 'node:url';
3
+
4
+ interface Version {
5
+ /**
6
+ * `4` of `4.3.2-beta.1`
7
+ */
8
+ major: number;
9
+ /**
10
+ * `3` of `4.3.2-beta.1`
11
+ */
12
+ minor: number;
13
+ /**
14
+ * `2` of `4.3.2-beta.1`
15
+ */
16
+ patch: number;
17
+ /**
18
+ * `beta` of `4.3.2-beta.1`
19
+ */
20
+ stage: string;
21
+ /**
22
+ * `1` of `4.3.2-beta.1`
23
+ */
24
+ stageVersion: number;
25
+ }
26
+ /**
27
+ * Parse version string to {@link Version}, like `0.2.0-beta.1`
28
+ * @param version version string
29
+ */
30
+ declare function parseVersion(version: string): Version;
31
+ /**
32
+ * Default function to check the old version is less than new version
33
+ * @param oldVer old version string
34
+ * @param newVer new version string
35
+ */
36
+ declare function defaultIsLowerVersion(oldVer: string, newVer: string): boolean;
37
+ /**
38
+ * Update info json
39
+ */
40
+ type UpdateInfo = {
41
+ /**
42
+ * Update Asar signature
43
+ */
44
+ signature: string;
45
+ /**
46
+ * Minimum version
47
+ */
48
+ minimumVersion: string;
49
+ /**
50
+ * Target version
51
+ */
52
+ version: string;
53
+ };
54
+ /**
55
+ * {@link UpdateInfo} with beta
56
+ */
57
+ type UpdateJSON = UpdateInfo & {
58
+ /**
59
+ * Beta update info
60
+ */
61
+ beta: UpdateInfo;
62
+ };
63
+ /**
64
+ * Check is `UpdateJSON`
65
+ * @param json any variable
66
+ */
67
+ declare function isUpdateJSON(json: any): json is UpdateJSON;
68
+ /**
69
+ * Default function to generate `UpdateJSON`
70
+ * @param existingJson exising update json
71
+ * @param signature sigature
72
+ * @param version target version
73
+ * @param minimumVersion minimum version
74
+ */
75
+ declare function defaultVersionJsonGenerator(existingJson: UpdateJSON, signature: string, version: string, minimumVersion: string): UpdateJSON;
3
76
 
4
77
  type UpdateInfoWithURL = UpdateInfo & {
5
78
  url: string;
6
79
  };
7
- type OnDownloading = (progress: DownloadingInfo) => void;
8
80
  interface DownloadingInfo {
9
81
  /**
10
82
  * Download buffer delta
@@ -34,7 +106,7 @@ interface DownloadingInfo {
34
106
  type UpdateJSONWithURL = UpdateInfoWithURL & {
35
107
  beta: UpdateInfoWithURL;
36
108
  };
37
- interface IProvider {
109
+ interface IProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> {
38
110
  /**
39
111
  * Provider name
40
112
  */
@@ -45,7 +117,7 @@ interface IProvider {
45
117
  * @param versionPath normalized version path in project
46
118
  * @param signal abort signal
47
119
  */
48
- downloadJSON: (name: string, versionPath: string, signal: AbortSignal) => Promise<UpdateJSONWithURL>;
120
+ downloadJSON: (name: string, versionPath: string, signal: AbortSignal) => Promise<T>;
49
121
  /**
50
122
  * Download update asar
51
123
  * @param updateInfo existing update info
@@ -76,4 +148,4 @@ interface IProvider {
76
148
  }
77
149
  type URLHandler = (url: URL) => Promisable<URL | string | undefined | null>;
78
150
 
79
- export type { DownloadingInfo as D, IProvider as I, OnDownloading as O, UpdateJSONWithURL as U, UpdateInfoWithURL as a, URLHandler as b };
151
+ export { type DownloadingInfo as D, type IProvider as I, type UpdateInfo as U, type Version as V, type UpdateJSON as a, type UpdateJSONWithURL as b, defaultVersionJsonGenerator as c, defaultIsLowerVersion as d, type UpdateInfoWithURL as e, type URLHandler as f, isUpdateJSON as i, parseVersion as p };
@@ -1,10 +1,82 @@
1
1
  import { Promisable } from '@subframe7536/type-utils';
2
- import { U as UpdateInfo } from './version-BYVQ367i.cjs';
2
+ import { URL } from 'node:url';
3
+
4
+ interface Version {
5
+ /**
6
+ * `4` of `4.3.2-beta.1`
7
+ */
8
+ major: number;
9
+ /**
10
+ * `3` of `4.3.2-beta.1`
11
+ */
12
+ minor: number;
13
+ /**
14
+ * `2` of `4.3.2-beta.1`
15
+ */
16
+ patch: number;
17
+ /**
18
+ * `beta` of `4.3.2-beta.1`
19
+ */
20
+ stage: string;
21
+ /**
22
+ * `1` of `4.3.2-beta.1`
23
+ */
24
+ stageVersion: number;
25
+ }
26
+ /**
27
+ * Parse version string to {@link Version}, like `0.2.0-beta.1`
28
+ * @param version version string
29
+ */
30
+ declare function parseVersion(version: string): Version;
31
+ /**
32
+ * Default function to check the old version is less than new version
33
+ * @param oldVer old version string
34
+ * @param newVer new version string
35
+ */
36
+ declare function defaultIsLowerVersion(oldVer: string, newVer: string): boolean;
37
+ /**
38
+ * Update info json
39
+ */
40
+ type UpdateInfo = {
41
+ /**
42
+ * Update Asar signature
43
+ */
44
+ signature: string;
45
+ /**
46
+ * Minimum version
47
+ */
48
+ minimumVersion: string;
49
+ /**
50
+ * Target version
51
+ */
52
+ version: string;
53
+ };
54
+ /**
55
+ * {@link UpdateInfo} with beta
56
+ */
57
+ type UpdateJSON = UpdateInfo & {
58
+ /**
59
+ * Beta update info
60
+ */
61
+ beta: UpdateInfo;
62
+ };
63
+ /**
64
+ * Check is `UpdateJSON`
65
+ * @param json any variable
66
+ */
67
+ declare function isUpdateJSON(json: any): json is UpdateJSON;
68
+ /**
69
+ * Default function to generate `UpdateJSON`
70
+ * @param existingJson exising update json
71
+ * @param signature sigature
72
+ * @param version target version
73
+ * @param minimumVersion minimum version
74
+ */
75
+ declare function defaultVersionJsonGenerator(existingJson: UpdateJSON, signature: string, version: string, minimumVersion: string): UpdateJSON;
3
76
 
4
77
  type UpdateInfoWithURL = UpdateInfo & {
5
78
  url: string;
6
79
  };
7
- type OnDownloading = (progress: DownloadingInfo) => void;
8
80
  interface DownloadingInfo {
9
81
  /**
10
82
  * Download buffer delta
@@ -34,7 +106,7 @@ interface DownloadingInfo {
34
106
  type UpdateJSONWithURL = UpdateInfoWithURL & {
35
107
  beta: UpdateInfoWithURL;
36
108
  };
37
- interface IProvider {
109
+ interface IProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> {
38
110
  /**
39
111
  * Provider name
40
112
  */
@@ -45,7 +117,7 @@ interface IProvider {
45
117
  * @param versionPath normalized version path in project
46
118
  * @param signal abort signal
47
119
  */
48
- downloadJSON: (name: string, versionPath: string, signal: AbortSignal) => Promise<UpdateJSONWithURL>;
120
+ downloadJSON: (name: string, versionPath: string, signal: AbortSignal) => Promise<T>;
49
121
  /**
50
122
  * Download update asar
51
123
  * @param updateInfo existing update info
@@ -76,4 +148,4 @@ interface IProvider {
76
148
  }
77
149
  type URLHandler = (url: URL) => Promisable<URL | string | undefined | null>;
78
150
 
79
- export type { DownloadingInfo as D, IProvider as I, OnDownloading as O, UpdateJSONWithURL as U, UpdateInfoWithURL as a, URLHandler as b };
151
+ export { type DownloadingInfo as D, type IProvider as I, type UpdateInfo as U, type Version as V, type UpdateJSON as a, type UpdateJSONWithURL as b, defaultVersionJsonGenerator as c, defaultIsLowerVersion as d, type UpdateInfoWithURL as e, type URLHandler as f, isUpdateJSON as i, parseVersion as p };