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/utils.cjs CHANGED
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
+ var crypto = require('crypto');
4
+ var electron2 = require('electron');
3
5
  var fs = require('fs');
4
6
  var path = require('path');
5
- var electron = require('electron');
6
7
  var zlib = require('zlib');
7
- var crypto = require('crypto');
8
8
 
9
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
 
11
+ var crypto__default = /*#__PURE__*/_interopDefault(crypto);
12
+ var electron2__default = /*#__PURE__*/_interopDefault(electron2);
11
13
  var fs__default = /*#__PURE__*/_interopDefault(fs);
12
14
  var path__default = /*#__PURE__*/_interopDefault(path);
13
- var electron__default = /*#__PURE__*/_interopDefault(electron);
14
15
  var zlib__default = /*#__PURE__*/_interopDefault(zlib);
15
- var crypto__default = /*#__PURE__*/_interopDefault(crypto);
16
16
 
17
17
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
18
18
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
@@ -20,18 +20,200 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
20
20
  if (typeof require !== "undefined") return require.apply(this, arguments);
21
21
  throw Error('Dynamic require of "' + x + '" is not supported');
22
22
  });
23
+ function hashBuffer(data, length) {
24
+ const hash = crypto__default.default.createHash("SHA256").update(data).digest("binary");
25
+ return Buffer.from(hash).subarray(0, length);
26
+ }
27
+ function aesEncrypt(plainText, key, iv) {
28
+ const cipher = crypto__default.default.createCipheriv("aes-256-cbc", key, iv);
29
+ return cipher.update(plainText, "utf8", "base64url") + cipher.final("base64url");
30
+ }
31
+ function defaultSignature(buffer, privateKey, cert, version) {
32
+ const sig = crypto__default.default.createSign("RSA-SHA256").update(buffer).sign(crypto__default.default.createPrivateKey(privateKey), "base64");
33
+ return aesEncrypt(`${sig}%${version}`, hashBuffer(cert, 32), hashBuffer(buffer, 16));
34
+ }
35
+ function aesDecrypt(encryptedText, key, iv) {
36
+ const decipher = crypto__default.default.createDecipheriv("aes-256-cbc", key, iv);
37
+ return decipher.update(encryptedText, "base64url", "utf8") + decipher.final("utf8");
38
+ }
39
+ function defaultVerifySignature(buffer, version, signature, cert) {
40
+ try {
41
+ const [sig, ver] = aesDecrypt(signature, hashBuffer(cert, 32), hashBuffer(buffer, 16)).split("%");
42
+ if (ver !== version) {
43
+ return false;
44
+ }
45
+ return crypto__default.default.createVerify("RSA-SHA256").update(buffer).verify(cert, sig, "base64");
46
+ } catch {
47
+ return false;
48
+ }
49
+ }
50
+
51
+ // src/utils/version.ts
52
+ function parseVersion(version) {
53
+ const match = /^(\d+)\.(\d+)\.(\d+)(?:-([a-z0-9.-]+))?/i.exec(version);
54
+ if (!match) {
55
+ throw new TypeError(`invalid version: ${version}`);
56
+ }
57
+ const [major, minor, patch] = match.slice(1, 4).map(Number);
58
+ const ret = {
59
+ major,
60
+ minor,
61
+ patch,
62
+ stage: "",
63
+ stageVersion: -1
64
+ };
65
+ if (match[4]) {
66
+ let [stage, _v] = match[4].split(".");
67
+ ret.stage = stage;
68
+ ret.stageVersion = Number(_v) || -1;
69
+ }
70
+ if (Number.isNaN(major) || Number.isNaN(minor) || Number.isNaN(patch) || Number.isNaN(ret.stageVersion)) {
71
+ throw new TypeError(`Invalid version: ${version}`);
72
+ }
73
+ return ret;
74
+ }
75
+ function compareStrings(str1, str2) {
76
+ if (str1 === "") {
77
+ return str2 !== "";
78
+ } else if (str2 === "") {
79
+ return true;
80
+ }
81
+ return str1 < str2;
82
+ }
83
+ function defaultIsLowerVersion(oldVer, newVer) {
84
+ const oldV = parseVersion(oldVer);
85
+ const newV = parseVersion(newVer);
86
+ for (let key of Object.keys(oldV)) {
87
+ if (key === "stage" && compareStrings(oldV[key], newV[key])) {
88
+ return true;
89
+ } else if (oldV[key] !== newV[key]) {
90
+ return oldV[key] < newV[key];
91
+ }
92
+ }
93
+ return false;
94
+ }
95
+ var is = (j) => !!(j && j.minimumVersion && j.signature && j.version);
96
+ function isUpdateJSON(json) {
97
+ return is(json) && is(json?.beta);
98
+ }
99
+ function defaultVersionJsonGenerator(existingJson, signature, version, minimumVersion) {
100
+ existingJson.beta = {
101
+ version,
102
+ minimumVersion,
103
+ signature
104
+ };
105
+ if (!parseVersion(version).stage) {
106
+ existingJson.version = version;
107
+ existingJson.minimumVersion = minimumVersion;
108
+ existingJson.signature = signature;
109
+ }
110
+ return existingJson;
111
+ }
112
+
113
+ // src/utils/download.ts
114
+ function getHeader(headers, key) {
115
+ const value = headers[key];
116
+ if (Array.isArray(value)) {
117
+ return value.length === 0 ? null : value[value.length - 1];
118
+ } else {
119
+ return value;
120
+ }
121
+ }
122
+ async function downloadUtil(url, headers, signal, onResponse) {
123
+ await electron2__default.default.app.whenReady();
124
+ return new Promise((resolve, reject) => {
125
+ const request = electron2__default.default.net.request({ url, method: "GET", redirect: "follow", headers, cache: "no-cache" });
126
+ signal.addEventListener("abort", () => request.abort(), { once: true });
127
+ request.on("response", (resp) => {
128
+ resp.on("aborted", () => reject(new Error("aborted")));
129
+ resp.on("error", () => reject(new Error("download error")));
130
+ onResponse(resp, resolve, reject);
131
+ });
132
+ request.on("error", reject);
133
+ request.end();
134
+ });
135
+ }
136
+ function trimData(data) {
137
+ return data.trim().slice(0, 5e3).replace(/\s+/g, " ");
138
+ }
139
+ var defaultResolveDataFn = (data, resolve, reject) => {
140
+ try {
141
+ resolve(JSON.parse(data));
142
+ } catch {
143
+ reject(new Error(`Invalid json, "${trimData(data)}"`));
144
+ }
145
+ };
146
+ async function defaultDownloadJSON(url, headers, signal, resolveData = defaultResolveDataFn) {
147
+ return await downloadUtil(
148
+ url,
149
+ headers,
150
+ signal,
151
+ (resp, resolve, reject) => {
152
+ let data = "";
153
+ resp.on("data", (chunk) => data += chunk);
154
+ resp.on("end", () => resolveData(data, resolve, reject));
155
+ }
156
+ );
157
+ }
158
+ async function defaultDownloadUpdateJSON(url, headers, signal) {
159
+ return await defaultDownloadJSON(
160
+ url,
161
+ headers,
162
+ signal,
163
+ (data, resolve, reject) => {
164
+ try {
165
+ const json = JSON.parse(data);
166
+ if (isUpdateJSON(json)) {
167
+ resolve(json);
168
+ } else {
169
+ throw Error;
170
+ }
171
+ } catch {
172
+ reject(new Error(`Invalid update json, "${trimData(data)}"`));
173
+ }
174
+ }
175
+ );
176
+ }
177
+ async function defaultDownloadAsar(url, headers, signal, onDownloading) {
178
+ let transferred = 0;
179
+ let time = Date.now();
180
+ return await downloadUtil(
181
+ url,
182
+ headers,
183
+ signal,
184
+ (resp, resolve) => {
185
+ const total = +getHeader(resp.headers, "content-length") || -1;
186
+ const data = [];
187
+ resp.on("data", (chunk) => {
188
+ const delta = chunk.length;
189
+ transferred += delta;
190
+ const current = Date.now();
191
+ onDownloading?.({
192
+ percent: total > 0 ? +(transferred / total).toFixed(2) * 100 : -1,
193
+ total,
194
+ transferred,
195
+ delta,
196
+ bps: delta / (current - time)
197
+ });
198
+ time = current;
199
+ data.push(chunk);
200
+ });
201
+ resp.on("end", () => resolve(Buffer.concat(data)));
202
+ }
203
+ );
204
+ }
23
205
  var isDev = __EIU_IS_DEV__;
24
206
  var isWin = process.platform === "win32";
25
207
  var isMac = process.platform === "darwin";
26
208
  var isLinux = process.platform === "linux";
27
209
  function getPathFromAppNameAsar(...paths) {
28
- return isDev ? "DEV.asar" : path__default.default.join(path__default.default.dirname(electron__default.default.app.getAppPath()), `${electron__default.default.app.name}.asar`, ...paths);
210
+ return isDev ? "DEV.asar" : path__default.default.join(path__default.default.dirname(electron2__default.default.app.getAppPath()), `${electron2__default.default.app.name}.asar`, ...paths);
29
211
  }
30
212
  function getAppVersion() {
31
213
  return isDev ? getEntryVersion() : fs__default.default.readFileSync(getPathFromAppNameAsar("version"), "utf-8");
32
214
  }
33
215
  function getEntryVersion() {
34
- return electron__default.default.app.getVersion();
216
+ return electron2__default.default.app.getVersion();
35
217
  }
36
218
  function requireNative(moduleName) {
37
219
  const m = getPathFromEntryAsar(moduleName);
@@ -48,21 +230,21 @@ async function importNative(moduleName) {
48
230
  return await import(`file://${m}.js`);
49
231
  }
50
232
  function restartApp() {
51
- electron__default.default.app.relaunch();
52
- electron__default.default.app.quit();
233
+ electron2__default.default.app.relaunch();
234
+ electron2__default.default.app.quit();
53
235
  }
54
236
  function setAppUserModelId(id) {
55
237
  if (isWin) {
56
- electron__default.default.app.setAppUserModelId(id ?? `org.${electron__default.default.app.name}`);
238
+ electron2__default.default.app.setAppUserModelId(id ?? `org.${electron2__default.default.app.name}`);
57
239
  }
58
240
  }
59
241
  function disableHWAccForWin7() {
60
242
  if (!__EIU_IS_ESM__ && __require("os").release().startsWith("6.1")) {
61
- electron__default.default.app.disableHardwareAcceleration();
243
+ electron2__default.default.app.disableHardwareAcceleration();
62
244
  }
63
245
  }
64
246
  function singleInstance(window) {
65
- electron__default.default.app.on("second-instance", () => {
247
+ electron2__default.default.app.on("second-instance", () => {
66
248
  if (window) {
67
249
  window.show();
68
250
  if (window.isMinimized()) {
@@ -73,11 +255,11 @@ function singleInstance(window) {
73
255
  });
74
256
  }
75
257
  function setPortableAppDataPath(dirName = "data") {
76
- const portablePath = path__default.default.join(path__default.default.dirname(electron__default.default.app.getPath("exe")), dirName);
258
+ const portablePath = path__default.default.join(path__default.default.dirname(electron2__default.default.app.getPath("exe")), dirName);
77
259
  if (!fs__default.default.existsSync(portablePath)) {
78
260
  fs__default.default.mkdirSync(portablePath);
79
261
  }
80
- electron__default.default.app.setPath("appData", portablePath);
262
+ electron2__default.default.app.setPath("appData", portablePath);
81
263
  }
82
264
  function loadPage(win, htmlFilePath = "index.html") {
83
265
  if (isDev) {
@@ -98,21 +280,32 @@ function beautifyDevTools(win, options) {
98
280
  });
99
281
  }
100
282
  function getPathFromMain(...paths) {
101
- return isDev ? path__default.default.join(electron__default.default.app.getAppPath(), __EIU_ELECTRON_DIST_PATH__, "main", ...paths) : getPathFromAppNameAsar("main", ...paths);
283
+ return isDev ? path__default.default.join(electron2__default.default.app.getAppPath(), __EIU_ELECTRON_DIST_PATH__, "main", ...paths) : getPathFromAppNameAsar("main", ...paths);
102
284
  }
103
285
  function getPathFromPreload(...paths) {
104
- return isDev ? path__default.default.join(electron__default.default.app.getAppPath(), __EIU_ELECTRON_DIST_PATH__, "preload", ...paths) : getPathFromAppNameAsar("preload", ...paths);
286
+ return isDev ? path__default.default.join(electron2__default.default.app.getAppPath(), __EIU_ELECTRON_DIST_PATH__, "preload", ...paths) : getPathFromAppNameAsar("preload", ...paths);
105
287
  }
106
288
  function getPathFromPublic(...paths) {
107
- return isDev ? path__default.default.join(electron__default.default.app.getAppPath(), "public", ...paths) : getPathFromAppNameAsar("renderer", ...paths);
289
+ return isDev ? path__default.default.join(electron2__default.default.app.getAppPath(), "public", ...paths) : getPathFromAppNameAsar("renderer", ...paths);
108
290
  }
109
291
  function getPathFromEntryAsar(...paths) {
110
- return path__default.default.join(electron__default.default.app.getAppPath(), __EIU_ENTRY_DIST_PATH__, ...paths);
292
+ return path__default.default.join(electron2__default.default.app.getAppPath(), __EIU_ENTRY_DIST_PATH__, ...paths);
111
293
  }
112
294
  function handleUnexpectedErrors(callback) {
113
295
  process.on("uncaughtException", callback);
114
296
  process.on("unhandledRejection", callback);
115
297
  }
298
+ function reloadOnPreloadScriptChanged() {
299
+ if (isDev) {
300
+ process.on("message", (msg) => {
301
+ if (msg === "electron-vite&type=hot-reload") {
302
+ for (const window of electron2__default.default.BrowserWindow.getAllWindows()) {
303
+ window.reload();
304
+ }
305
+ }
306
+ });
307
+ }
308
+ }
116
309
  async function defaultZipFile(buffer) {
117
310
  return new Promise((resolve, reject) => {
118
311
  zlib__default.default.brotliCompress(buffer, (err, buffer2) => err ? reject(err) : resolve(buffer2));
@@ -124,98 +317,12 @@ async function defaultUnzipFile(buffer) {
124
317
  });
125
318
  }
126
319
 
127
- // src/utils/version.ts
128
- function parseVersion(version) {
129
- const match = /^(\d+)\.(\d+)\.(\d+)(?:-([a-z0-9.-]+))?/i.exec(version);
130
- if (!match) {
131
- throw new TypeError(`invalid version: ${version}`);
132
- }
133
- const [major, minor, patch] = match.slice(1, 4).map(Number);
134
- const ret = {
135
- major,
136
- minor,
137
- patch,
138
- stage: "",
139
- stageVersion: -1
140
- };
141
- if (match[4]) {
142
- let [stage, _v] = match[4].split(".");
143
- ret.stage = stage;
144
- ret.stageVersion = Number(_v) || -1;
145
- }
146
- if (Number.isNaN(major) || Number.isNaN(minor) || Number.isNaN(patch) || Number.isNaN(ret.stageVersion)) {
147
- throw new TypeError(`Invalid version: ${version}`);
148
- }
149
- return ret;
150
- }
151
- function compareStrings(str1, str2) {
152
- if (str1 === "") {
153
- return str2 !== "";
154
- } else if (str2 === "") {
155
- return true;
156
- }
157
- return str1 < str2;
158
- }
159
- function defaultIsLowerVersion(oldVer, newVer) {
160
- const oldV = parseVersion(oldVer);
161
- const newV = parseVersion(newVer);
162
- for (let key of Object.keys(oldV)) {
163
- if (key === "stage" && compareStrings(oldV[key], newV[key])) {
164
- return true;
165
- } else if (oldV[key] !== newV[key]) {
166
- return oldV[key] < newV[key];
167
- }
168
- }
169
- return false;
170
- }
171
- var is = (j) => !!(j && j.minimumVersion && j.signature && j.version);
172
- function isUpdateJSON(json) {
173
- return is(json) && is(json?.beta);
174
- }
175
- function defaultVersionJsonGenerator(existingJson, signature, version, minimumVersion) {
176
- existingJson.beta = {
177
- version,
178
- minimumVersion,
179
- signature
180
- };
181
- if (!parseVersion(version).stage) {
182
- existingJson.version = version;
183
- existingJson.minimumVersion = minimumVersion;
184
- existingJson.signature = signature;
185
- }
186
- return existingJson;
187
- }
188
- function hashBuffer(data, length) {
189
- const hash = crypto__default.default.createHash("SHA256").update(data).digest("binary");
190
- return Buffer.from(hash).subarray(0, length);
191
- }
192
- function aesEncrypt(plainText, key, iv) {
193
- const cipher = crypto__default.default.createCipheriv("aes-256-cbc", key, iv);
194
- return cipher.update(plainText, "utf8", "base64url") + cipher.final("base64url");
195
- }
196
- function defaultSignature(buffer, privateKey, cert, version) {
197
- const sig = crypto__default.default.createSign("RSA-SHA256").update(buffer).sign(crypto__default.default.createPrivateKey(privateKey), "base64");
198
- return aesEncrypt(`${sig}%${version}`, hashBuffer(cert, 32), hashBuffer(buffer, 16));
199
- }
200
- function aesDecrypt(encryptedText, key, iv) {
201
- const decipher = crypto__default.default.createDecipheriv("aes-256-cbc", key, iv);
202
- return decipher.update(encryptedText, "base64url", "utf8") + decipher.final("utf8");
203
- }
204
- function defaultVerifySignature(buffer, version, signature, cert) {
205
- try {
206
- const [sig, ver] = aesDecrypt(signature, hashBuffer(cert, 32), hashBuffer(buffer, 16)).split("%");
207
- if (ver !== version) {
208
- return false;
209
- }
210
- return crypto__default.default.createVerify("RSA-SHA256").update(buffer).verify(cert, sig, "base64");
211
- } catch {
212
- return false;
213
- }
214
- }
215
-
216
320
  exports.aesDecrypt = aesDecrypt;
217
321
  exports.aesEncrypt = aesEncrypt;
218
322
  exports.beautifyDevTools = beautifyDevTools;
323
+ exports.defaultDownloadAsar = defaultDownloadAsar;
324
+ exports.defaultDownloadJSON = defaultDownloadJSON;
325
+ exports.defaultDownloadUpdateJSON = defaultDownloadUpdateJSON;
219
326
  exports.defaultIsLowerVersion = defaultIsLowerVersion;
220
327
  exports.defaultSignature = defaultSignature;
221
328
  exports.defaultUnzipFile = defaultUnzipFile;
@@ -223,8 +330,10 @@ exports.defaultVerifySignature = defaultVerifySignature;
223
330
  exports.defaultVersionJsonGenerator = defaultVersionJsonGenerator;
224
331
  exports.defaultZipFile = defaultZipFile;
225
332
  exports.disableHWAccForWin7 = disableHWAccForWin7;
333
+ exports.downloadUtil = downloadUtil;
226
334
  exports.getAppVersion = getAppVersion;
227
335
  exports.getEntryVersion = getEntryVersion;
336
+ exports.getHeader = getHeader;
228
337
  exports.getPathFromAppNameAsar = getPathFromAppNameAsar;
229
338
  exports.getPathFromEntryAsar = getPathFromEntryAsar;
230
339
  exports.getPathFromMain = getPathFromMain;
@@ -240,6 +349,7 @@ exports.isUpdateJSON = isUpdateJSON;
240
349
  exports.isWin = isWin;
241
350
  exports.loadPage = loadPage;
242
351
  exports.parseVersion = parseVersion;
352
+ exports.reloadOnPreloadScriptChanged = reloadOnPreloadScriptChanged;
243
353
  exports.requireNative = requireNative;
244
354
  exports.restartApp = restartApp;
245
355
  exports.setAppUserModelId = setAppUserModelId;
package/dist/utils.d.cts CHANGED
@@ -1,6 +1,8 @@
1
+ export { b as aesDecrypt, a as aesEncrypt, j as defaultDownloadAsar, f as defaultDownloadJSON, i as defaultDownloadUpdateJSON, d as defaultSignature, l as defaultUnzipFile, c as defaultVerifySignature, k as defaultZipFile, e as downloadUtil, g as getHeader, h as hashBuffer } from './zip-BQS8qbGA.cjs';
1
2
  import { BrowserWindow } from 'electron';
2
- export { e as aesDecrypt, b as aesEncrypt, c as defaultSignature, a as defaultUnzipFile, f as defaultVerifySignature, d as defaultZipFile, h as hashBuffer } from './crypto-Zynscwmj.cjs';
3
- export { U as UpdateInfo, a as UpdateJSON, V as Version, d as defaultIsLowerVersion, b as defaultVersionJsonGenerator, i as isUpdateJSON, p as parseVersion } from './version-BYVQ367i.cjs';
3
+ export { U as UpdateInfo, a as UpdateJSON, V as Version, d as defaultIsLowerVersion, c as defaultVersionJsonGenerator, i as isUpdateJSON, p as parseVersion } from './types-C5M2xRjF.cjs';
4
+ import '@subframe7536/type-utils';
5
+ import 'node:url';
4
6
 
5
7
  /**
6
8
  * Compile time dev check
@@ -115,5 +117,6 @@ declare function getPathFromEntryAsar(...paths: string[]): string;
115
117
  * @param callback callback function
116
118
  */
117
119
  declare function handleUnexpectedErrors(callback: (err: unknown) => void): void;
120
+ declare function reloadOnPreloadScriptChanged(): void;
118
121
 
119
- export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance };
122
+ export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, reloadOnPreloadScriptChanged, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance };
package/dist/utils.d.ts CHANGED
@@ -1,6 +1,8 @@
1
+ export { b as aesDecrypt, a as aesEncrypt, j as defaultDownloadAsar, f as defaultDownloadJSON, i as defaultDownloadUpdateJSON, d as defaultSignature, l as defaultUnzipFile, c as defaultVerifySignature, k as defaultZipFile, e as downloadUtil, g as getHeader, h as hashBuffer } from './zip-DbfskMQi.js';
1
2
  import { BrowserWindow } from 'electron';
2
- export { e as aesDecrypt, b as aesEncrypt, c as defaultSignature, a as defaultUnzipFile, f as defaultVerifySignature, d as defaultZipFile, h as hashBuffer } from './crypto-Zynscwmj.js';
3
- export { U as UpdateInfo, a as UpdateJSON, V as Version, d as defaultIsLowerVersion, b as defaultVersionJsonGenerator, i as isUpdateJSON, p as parseVersion } from './version-BYVQ367i.js';
3
+ export { U as UpdateInfo, a as UpdateJSON, V as Version, d as defaultIsLowerVersion, c as defaultVersionJsonGenerator, i as isUpdateJSON, p as parseVersion } from './types-C5M2xRjF.js';
4
+ import '@subframe7536/type-utils';
5
+ import 'node:url';
4
6
 
5
7
  /**
6
8
  * Compile time dev check
@@ -115,5 +117,6 @@ declare function getPathFromEntryAsar(...paths: string[]): string;
115
117
  * @param callback callback function
116
118
  */
117
119
  declare function handleUnexpectedErrors(callback: (err: unknown) => void): void;
120
+ declare function reloadOnPreloadScriptChanged(): void;
118
121
 
119
- export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance };
122
+ export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, reloadOnPreloadScriptChanged, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance };
package/dist/utils.js CHANGED
@@ -1,3 +1,3 @@
1
- export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance } from './chunk-JI27JWJN.js';
2
- export { aesDecrypt, aesEncrypt, defaultSignature, defaultUnzipFile, defaultVerifySignature, defaultZipFile, hashBuffer } from './chunk-PUVBFHOK.js';
1
+ export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, reloadOnPreloadScriptChanged, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance } from './chunk-YZGE4RFY.js';
2
+ export { aesDecrypt, aesEncrypt, defaultDownloadAsar, defaultDownloadJSON, defaultDownloadUpdateJSON, defaultSignature, defaultUnzipFile, defaultVerifySignature, defaultZipFile, downloadUtil, getHeader, hashBuffer } from './chunk-D7NXTCQW.js';
3
3
  export { defaultIsLowerVersion, defaultVersionJsonGenerator, isUpdateJSON, parseVersion } from './chunk-AAAM44NW.js';
package/dist/vite.d.ts CHANGED
@@ -4,18 +4,48 @@ import { Promisable } from '@subframe7536/type-utils';
4
4
  export { isCI } from 'ci-info';
5
5
  export { getPackageInfo, getPackageInfoSync, loadPackageJSON, resolveModule } from 'local-pkg';
6
6
 
7
+ interface BytecodeOptions {
8
+ enable: boolean;
9
+ /**
10
+ * Enable in preload script. Remember to set `sandbox: false` when creating window
11
+ */
12
+ preload?: boolean;
13
+ /**
14
+ * Custom electron binary path
15
+ */
16
+ electronPath?: string;
17
+ /**
18
+ * Before transformed code compile function. If return `Falsy` value, it will be ignored
19
+ * @param code transformed code
20
+ * @param id file path
21
+ */
22
+ beforeCompile?: (code: string, id: string) => Promisable<string | null | undefined | void>;
23
+ }
24
+
7
25
  /**
8
26
  * Update info json
9
27
  */
10
28
  type UpdateInfo = {
29
+ /**
30
+ * Update Asar signature
31
+ */
11
32
  signature: string;
33
+ /**
34
+ * Minimum version
35
+ */
12
36
  minimumVersion: string;
37
+ /**
38
+ * Target version
39
+ */
13
40
  version: string;
14
41
  };
15
42
  /**
16
43
  * {@link UpdateInfo} with beta
17
44
  */
18
45
  type UpdateJSON = UpdateInfo & {
46
+ /**
47
+ * Beta update info
48
+ */
19
49
  beta: UpdateInfo;
20
50
  };
21
51
 
@@ -140,20 +170,19 @@ interface GeneratorOverrideFunctions {
140
170
  * Custom signature generate function
141
171
  * @param buffer file buffer
142
172
  * @param privateKey private key
143
- * @param cert certificate string, **EOL must be '\n'**
173
+ * @param cert certificate string, **EOL must be `\n`**
144
174
  * @param version current version
145
175
  */
146
176
  generateSignature?: (buffer: Buffer, privateKey: string, cert: string, version: string) => Promisable<string>;
147
177
  /**
148
- * Custom generate version json function
178
+ * Custom generate update json function
149
179
  * @param existingJson The existing JSON object.
150
180
  * @param buffer file buffer
151
181
  * @param signature generated signature
152
182
  * @param version current version
153
183
  * @param minVersion The minimum version
154
- * @returns The updated version json
155
184
  */
156
- generateVersionJson?: (existingJson: UpdateJSON, signature: string, version: string, minVersion: string) => Promisable<UpdateJSON>;
185
+ generateUpdateJson?: (existingJson: UpdateJSON, signature: string, version: string, minVersion: string) => Promisable<UpdateJSON>;
157
186
  /**
158
187
  * Custom generate zip file buffer
159
188
  * @param buffer source buffer
@@ -248,24 +277,6 @@ interface ElectronUpdaterOptions {
248
277
  overrideGenerator?: GeneratorOverrideFunctions;
249
278
  }
250
279
 
251
- interface BytecodeOptions {
252
- enable: boolean;
253
- /**
254
- * Enable in preload script. Remember to set `sandbox: false` when creating window
255
- */
256
- preload?: boolean;
257
- /**
258
- * Custom electron binary path
259
- */
260
- electronPath?: string;
261
- /**
262
- * Before transformed code compile function. If return `Falsy` value, it will be ignored
263
- * @param code transformed code
264
- * @param id file path
265
- */
266
- beforeCompile?: (code: string, id: string) => Promisable<string | null | undefined | void>;
267
- }
268
-
269
280
  /**
270
281
  * Obfuscate string
271
282
  * @param code source code
@@ -284,8 +295,9 @@ type ReplaceKey<T, Key extends keyof T, NewKey extends string> = Omit<T, Key> &
284
295
  [P in NewKey]: T[Key];
285
296
  };
286
297
  type MakeRequiredAndReplaceKey<T, K extends keyof T, NewKey extends string> = MakeRequired<ReplaceKey<T, K, NewKey>, NewKey>;
298
+ type StartupFn = Exclude<Exclude<ElectronSimpleOptions['preload'], undefined>['onstart'], undefined>;
287
299
  /**
288
- * startup function for debug (see {@link https://github.com/electron-vite/electron-vite-vue/blob/main/vite.config.ts electron-vite-vue template})
300
+ * Startup function for debug (see {@link https://github.com/electron-vite/electron-vite-vue/blob/main/vite.config.ts electron-vite-vue template})
289
301
  * @example
290
302
  * import { debugStartup, buildElectronPluginOptions } from 'electron-incremental-update/vite'
291
303
  * const options = buildElectronPluginOptions({
@@ -296,10 +308,20 @@ type MakeRequiredAndReplaceKey<T, K extends keyof T, NewKey extends string> = Ma
296
308
  * },
297
309
  * })
298
310
  */
299
- declare function debugStartup(args: {
300
- startup: (argv?: string[]) => Promise<void>;
301
- reload: () => void;
302
- }): void;
311
+ declare const debugStartup: StartupFn;
312
+ /**
313
+ * Startup function util to fix Windows terminal charset
314
+ * @example
315
+ * import { debugStartup, fixWinCharEncoding, buildElectronPluginOptions } from 'electron-incremental-update/vite'
316
+ * const options = buildElectronPluginOptions({
317
+ * // ...
318
+ * main: {
319
+ * // ...
320
+ * startup: fixWinCharEncoding(debugStartup)
321
+ * },
322
+ * })
323
+ */
324
+ declare function fixWinCharEncoding(fn: StartupFn): StartupFn;
303
325
  type ExcludeOutputDirOptions = {
304
326
  vite?: {
305
327
  build?: {
@@ -432,4 +454,4 @@ interface ElectronWithUpdaterOptions {
432
454
  */
433
455
  declare function electronWithUpdater(options: ElectronWithUpdaterOptions): Promise<PluginOption[] | undefined>;
434
456
 
435
- export { type ElectronWithUpdaterOptions, convertLiteral, debugStartup, electronWithUpdater as default, electronWithUpdater };
457
+ export { type ElectronWithUpdaterOptions, convertLiteral, debugStartup, electronWithUpdater as default, electronWithUpdater, fixWinCharEncoding };