electron-incremental-update 2.2.3 → 2.2.4

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/README.md CHANGED
@@ -197,19 +197,6 @@ export default startupWithUpdater((updater) => {
197
197
  updater.onDownloading = ({ percent }) => {
198
198
  console.log(percent)
199
199
  }
200
- updater.logger = console
201
- updater.receiveBeta = true
202
- // setup provider later
203
- updater.provider = new GitHubProvider({
204
- user: 'yourname',
205
- repo: 'electron',
206
- // setup url handler
207
- urlHandler: (url) => {
208
- url.hostname = 'mirror.ghproxy.com'
209
- url.pathname = `https://github.com${url.pathname}`
210
- return url
211
- }
212
- })
213
200
 
214
201
  updater.on('update-available', async ({ version }) => {
215
202
  const { response } = await dialog.showMessageBox({
@@ -222,25 +209,56 @@ export default startupWithUpdater((updater) => {
222
209
  }
223
210
  await updater.downloadUpdate()
224
211
  })
212
+
225
213
  updater.on('update-not-available', (code, reason, info) => console.log(code, reason, info))
214
+
226
215
  updater.on('download-progress', (data) => {
227
216
  console.log(data)
228
217
  main.send(BrowserWindow.getAllWindows()[0], 'msg', data)
229
218
  })
219
+
230
220
  updater.on('update-downloaded', () => {
231
221
  updater.quitAndInstall()
232
222
  })
223
+
233
224
  updater.checkForUpdates()
234
225
  })
235
226
  ```
236
227
 
228
+ #### Dynamicly setup `UpdateProvider`
229
+
230
+ ```ts
231
+ updater.provider = new GitHubProvider({
232
+ user: 'yourname',
233
+ repo: 'electron',
234
+ // setup url handler
235
+ urlHandler: (url) => {
236
+ url.hostname = 'mirror.ghproxy.com'
237
+ url.pathname = `https://github.com${url.pathname}`
238
+ return url
239
+ }
240
+ })
241
+ ```
242
+
243
+ #### Custom logger
244
+
245
+ ```ts
246
+ updater.logger = console
247
+ ```
248
+
249
+ #### Setup Beta Channel
250
+
251
+ ```ts
252
+ updater.receiveBeta = true
253
+ ```
254
+
237
255
  ### Use Native Modules
238
256
 
239
257
  To reduce production size, it is recommended that all the **native modules** should be set as `dependency` in `package.json` and other packages should be set as `devDependencies`. Also, `electron-rebuild` only check dependencies inside `dependency` field.
240
258
 
241
259
  If you are using `electron-builder` to build distributions, all the native modules with its **large relavent `node_modiles`** will be packaged into `app.asar` by default.
242
260
 
243
- Luckily, `Esbuild` can bundle all the dependencies. Just follow the steps:
261
+ Luckily, `vite` can bundle all the dependencies. Just follow the steps:
244
262
 
245
263
  1. setup `nativeModuleEntryMap` option
246
264
  2. Manually copy the native binaries in `postBuild` callback
@@ -1,5 +1,5 @@
1
1
  import { readableSize } from './chunk-TPTWE33H.js';
2
- import { convertLiteral, bytecodeModuleLoaderCode, bytecodeModuleLoader, convertArrowFunctionAndTemplate, compileToBytecode, useStrict, toRelativePath } from './chunk-LR7LR5WG.js';
2
+ import { convertArrowFunctionAndTemplate, bytecodeModuleLoader, bytecodeModuleLoaderCode, convertLiteral, compileToBytecode, useStrict, toRelativePath } from './chunk-LR7LR5WG.js';
3
3
  import { bytecodeLog, bytecodeId } from './chunk-5NKEXGI3.js';
4
4
  import fs from 'node:fs';
5
5
  import path from 'node:path';
@@ -71,13 +71,13 @@ function loadPage(win, htmlFilePath = "index.html") {
71
71
  }
72
72
  function beautifyDevTools(win, options) {
73
73
  const { mono, sans, scrollbar = true } = options;
74
- win.webContents.on("devtools-opened", () => {
75
- let css = `:root{--sans: ${sans};--mono: ${mono}}:root,body{--source-code-font-family: var(--mono) !important;--source-code-font-size: 12px !important;--monospace-font-family: var(--mono) !important;--monospace-font-size: 12px !important;--default-font-family: var(--sans), sans-serif !important;--default-font-size: 12px !important}button,input,select,.undisplayable-text,.expandable-inline-button{font-family:var(--sans)!important}`;
74
+ win.webContents.on("devtools-opened", async () => {
75
+ let css = `:root{--sans:${sans};--mono:${mono}}:root,body{--source-code-font-family:var(--mono)!important;--source-code-font-size:12px!important;--monospace-font-family:var(--mono)!important;--monospace-font-size:12px!important;--default-font-family:var(--sans), sans-serif!important;--default-font-size:12px!important}button,input,select,.undisplayable-text,.expandable-inline-button{font-family:var(--sans)!important}`;
76
76
  if (scrollbar) {
77
- css += ":root{--scrollbar-width: max(.85vw, 10px)}@media (prefers-color-scheme: light){:root{--scrollbar-color-rgb: 0, 0, 0}}@media (prefers-color-scheme: dark){:root{--scrollbar-color-rgb: 255, 255, 255}}*::-webkit-scrollbar{width:var(--scrollbar-width)!important;height:var(--scrollbar-width)!important}*::-webkit-scrollbar-track{background-color:transparent!important;border-radius:var(--scrollbar-width)!important;box-shadow:none!important}*::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 var(--scrollbar-width)!important;border-radius:var(--scrollbar-width)!important;border:calc(var(--scrollbar-width) * 2 / 9) solid transparent!important;background-clip:content-box;background-color:transparent!important;color:rgba(var(--scrollbar-color-rgb),30%)!important}*::-webkit-scrollbar-thumb:hover{color:rgba(var(--scrollbar-color-rgb),45%)!important}*::-webkit-scrollbar-thumb:active{color:rgba(var(--scrollbar-color-rgb),60%)!important}@supports not selector(::-webkit-scrollbar){html{scrollbar-color:rgb(var(--scrollbar-color-rgb));scrollbar-width:thin}}";
77
+ css += ":root{--scrollbar-width:max(.85vw,10px)}@media (prefers-color-scheme:light){:root{--scrollbar-color-rgb:0,0,0}}@media (prefers-color-scheme:dark){:root{--scrollbar-color-rgb:255,255,255}}*::-webkit-scrollbar{width:var(--scrollbar-width)!important;height:var(--scrollbar-width)!important}*::-webkit-scrollbar-track{background-color:transparent!important;border-radius:var(--scrollbar-width)!important;box-shadow:none!important}*::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 var(--scrollbar-width)!important;border-radius:var(--scrollbar-width)!important;border:calc(var(--scrollbar-width) * 2/9) solid transparent!important;background-clip:content-box;background-color:transparent!important;color:rgba(var(--scrollbar-color-rgb),30%)!important}*::-webkit-scrollbar-thumb:hover{color:rgba(var(--scrollbar-color-rgb),45%)!important}*::-webkit-scrollbar-thumb:active{color:rgba(var(--scrollbar-color-rgb),60%)!important}@supports not selector(::-webkit-scrollbar){html{scrollbar-color:rgb(var(--scrollbar-color-rgb));scrollbar-width:thin}}";
78
78
  }
79
- const js = `let overriddenStyle=document.createElement('style');overriddenStyle.innerHTML='${css}';document.body.append(overriddenStyle);document.body.classList.remove('platform-windows','platform-mac','platform-linux');`;
80
- win?.webContents.devToolsWebContents?.executeJavaScript(js);
79
+ const js = `${'function run(n){let d=document.createElement("style");d.innerHTML=n,document.body.append(d),["platform-windows","platform-mac","platform-linux"].forEach(t=>document.querySelectorAll(`.${t}`).forEach(o=>o.classList.remove(t))),l();const r=new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(let e=0;e<o.addedNodes.length;e++)o.addedNodes[e].classList.contains("editor-tooltip-host")&&l()});r.observe(document.body,{childList:!0});function l(){document.querySelectorAll(".editor-tooltip-host").forEach(t=>{if(t?.shadowRoot?.querySelectorAll(\'[data-key="overridden-dev-tools-font"]\').length===0){const o=document.createElement("style");o.setAttribute("data-key","overridden-dev-tools-font"),o.innerHTML=`${n}.cm-tooltip-autocomplete ul[role=listbox]{font-family:var(--mono)!important;}`,t.shadowRoot.append(o)}})}document.onclose=()=>r.disconnect()}'};run(\`${css}\`)`;
80
+ await win?.webContents.devToolsWebContents?.executeJavaScript(js);
81
81
  });
82
82
  }
83
83
  function getPathFromMain(...paths) {
@@ -185,7 +185,7 @@ function convertLiteral(code, sourcemap, offset) {
185
185
  }
186
186
  return {
187
187
  code: s.toString(),
188
- map: sourcemap ? s.generateMap({ hires: true }) : void 0
188
+ map: sourcemap ? s.generateMap({ hires: true }) : undefined
189
189
  };
190
190
  }
191
191
 
package/dist/index.cjs CHANGED
@@ -177,7 +177,7 @@ var Updater = class extends events.EventEmitter {
177
177
  this.err("Download failed", "ERR_PARAM", "No update asar buffer and provider");
178
178
  return false;
179
179
  }
180
- const buffer = await this.fetch("buffer", data ? Buffer.from(data) : void 0);
180
+ const buffer = await this.fetch("buffer", data ? Buffer.from(data) : undefined);
181
181
  if (!buffer) {
182
182
  this.err("Download failed", "ERR_PARAM", "No update asar file buffer");
183
183
  return false;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Promisable } from '@subframe7536/type-utils';
2
- import { I as IProvider, U as UpdateInfo, D as DownloadingInfo, a as UpdateJSON, b as UpdateJSONWithURL } from './types-C5M2xRjF.cjs';
2
+ import { U as UpdateInfo, I as IProvider, D as DownloadingInfo, a as UpdateJSON, b as UpdateJSONWithURL } from './types-C5M2xRjF.cjs';
3
3
  import { EventEmitter } from 'node:events';
4
4
  import 'node:url';
5
5
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Promisable } from '@subframe7536/type-utils';
2
- import { I as IProvider, U as UpdateInfo, D as DownloadingInfo, a as UpdateJSON, b as UpdateJSONWithURL } from './types-C5M2xRjF.js';
2
+ import { U as UpdateInfo, I as IProvider, D as DownloadingInfo, a as UpdateJSON, b as UpdateJSONWithURL } from './types-C5M2xRjF.js';
3
3
  import { EventEmitter } from 'node:events';
4
4
  import 'node:url';
5
5
 
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isDev, getAppVersion, getEntryVersion, getPathFromAppNameAsar, restartApp } from './chunk-YZGE4RFY.js';
1
+ import { isDev, getEntryVersion, getAppVersion, getPathFromAppNameAsar, restartApp } from './chunk-K4N2OHNS.js';
2
2
  import { isUpdateJSON, __require } from './chunk-AAAM44NW.js';
3
3
  import fs2 from 'node:fs';
4
4
  import path from 'node:path';
@@ -141,7 +141,7 @@ var Updater = class extends EventEmitter {
141
141
  this.err("Download failed", "ERR_PARAM", "No update asar buffer and provider");
142
142
  return false;
143
143
  }
144
- const buffer = await this.fetch("buffer", data ? Buffer.from(data) : void 0);
144
+ const buffer = await this.fetch("buffer", data ? Buffer.from(data) : undefined);
145
145
  if (!buffer) {
146
146
  this.err("Download failed", "ERR_PARAM", "No update asar file buffer");
147
147
  return false;
package/dist/provider.cjs CHANGED
@@ -1,36 +1,17 @@
1
1
  'use strict';
2
2
 
3
+ var electron = require('electron');
3
4
  var crypto = require('crypto');
4
5
  var zlib = require('zlib');
5
- var electron = require('electron');
6
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);
10
11
  var crypto__default = /*#__PURE__*/_interopDefault(crypto);
11
12
  var zlib__default = /*#__PURE__*/_interopDefault(zlib);
12
- var electron__default = /*#__PURE__*/_interopDefault(electron);
13
13
 
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
- }
14
+ // src/utils/download.ts
34
15
 
35
16
  // src/utils/version.ts
36
17
  function parseVersion(version) {
@@ -80,28 +61,8 @@ var is = (j) => !!(j && j.minimumVersion && j.signature && j.version);
80
61
  function isUpdateJSON(json) {
81
62
  return is(json) && is(json?.beta);
82
63
  }
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
- }
88
64
 
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
- };
65
+ // src/utils/download.ts
105
66
  function getHeader(headers, key) {
106
67
  const value = headers[key];
107
68
  if (Array.isArray(value)) {
@@ -193,6 +154,47 @@ async function defaultDownloadAsar(url, headers, signal, onDownloading) {
193
154
  }
194
155
  );
195
156
  }
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
+ };
196
198
  var GitHubProvider = class extends BaseProvider {
197
199
  name = "GithubProvider";
198
200
  options;
@@ -1,10 +1,10 @@
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
1
  import { c as defaultVerifySignature, l as defaultUnzipFile } from './zip-BQS8qbGA.cjs';
4
2
  export { j as defaultDownloadAsar, f as defaultDownloadJSON, i as defaultDownloadUpdateJSON, e as downloadUtil, g as getHeader } from './zip-BQS8qbGA.cjs';
3
+ import { e as UpdateInfoWithURL, I as IProvider, d as defaultIsLowerVersion, D as DownloadingInfo, f as URLHandler } from './types-C5M2xRjF.cjs';
4
+ export { b as UpdateJSONWithURL } from './types-C5M2xRjF.cjs';
5
5
  import '@subframe7536/type-utils';
6
- import 'node:url';
7
6
  import 'electron';
7
+ import 'node:url';
8
8
 
9
9
  declare abstract class BaseProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> implements IProvider<T> {
10
10
  name: string;
@@ -1,10 +1,10 @@
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
1
  import { c as defaultVerifySignature, l as defaultUnzipFile } from './zip-DbfskMQi.js';
4
2
  export { j as defaultDownloadAsar, f as defaultDownloadJSON, i as defaultDownloadUpdateJSON, e as downloadUtil, g as getHeader } from './zip-DbfskMQi.js';
3
+ import { e as UpdateInfoWithURL, I as IProvider, d as defaultIsLowerVersion, D as DownloadingInfo, f as URLHandler } from './types-C5M2xRjF.js';
4
+ export { b as UpdateJSONWithURL } from './types-C5M2xRjF.js';
5
5
  import '@subframe7536/type-utils';
6
- import 'node:url';
7
6
  import 'electron';
7
+ import 'node:url';
8
8
 
9
9
  declare abstract class BaseProvider<T extends UpdateInfoWithURL = UpdateInfoWithURL> implements IProvider<T> {
10
10
  name: string;
package/dist/utils.cjs CHANGED
@@ -270,13 +270,13 @@ function loadPage(win, htmlFilePath = "index.html") {
270
270
  }
271
271
  function beautifyDevTools(win, options) {
272
272
  const { mono, sans, scrollbar = true } = options;
273
- win.webContents.on("devtools-opened", () => {
274
- let css = `:root{--sans: ${sans};--mono: ${mono}}:root,body{--source-code-font-family: var(--mono) !important;--source-code-font-size: 12px !important;--monospace-font-family: var(--mono) !important;--monospace-font-size: 12px !important;--default-font-family: var(--sans), sans-serif !important;--default-font-size: 12px !important}button,input,select,.undisplayable-text,.expandable-inline-button{font-family:var(--sans)!important}`;
273
+ win.webContents.on("devtools-opened", async () => {
274
+ let css = `:root{--sans:${sans};--mono:${mono}}:root,body{--source-code-font-family:var(--mono)!important;--source-code-font-size:12px!important;--monospace-font-family:var(--mono)!important;--monospace-font-size:12px!important;--default-font-family:var(--sans), sans-serif!important;--default-font-size:12px!important}button,input,select,.undisplayable-text,.expandable-inline-button{font-family:var(--sans)!important}`;
275
275
  if (scrollbar) {
276
- css += ":root{--scrollbar-width: max(.85vw, 10px)}@media (prefers-color-scheme: light){:root{--scrollbar-color-rgb: 0, 0, 0}}@media (prefers-color-scheme: dark){:root{--scrollbar-color-rgb: 255, 255, 255}}*::-webkit-scrollbar{width:var(--scrollbar-width)!important;height:var(--scrollbar-width)!important}*::-webkit-scrollbar-track{background-color:transparent!important;border-radius:var(--scrollbar-width)!important;box-shadow:none!important}*::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 var(--scrollbar-width)!important;border-radius:var(--scrollbar-width)!important;border:calc(var(--scrollbar-width) * 2 / 9) solid transparent!important;background-clip:content-box;background-color:transparent!important;color:rgba(var(--scrollbar-color-rgb),30%)!important}*::-webkit-scrollbar-thumb:hover{color:rgba(var(--scrollbar-color-rgb),45%)!important}*::-webkit-scrollbar-thumb:active{color:rgba(var(--scrollbar-color-rgb),60%)!important}@supports not selector(::-webkit-scrollbar){html{scrollbar-color:rgb(var(--scrollbar-color-rgb));scrollbar-width:thin}}";
276
+ css += ":root{--scrollbar-width:max(.85vw,10px)}@media (prefers-color-scheme:light){:root{--scrollbar-color-rgb:0,0,0}}@media (prefers-color-scheme:dark){:root{--scrollbar-color-rgb:255,255,255}}*::-webkit-scrollbar{width:var(--scrollbar-width)!important;height:var(--scrollbar-width)!important}*::-webkit-scrollbar-track{background-color:transparent!important;border-radius:var(--scrollbar-width)!important;box-shadow:none!important}*::-webkit-scrollbar-thumb{box-shadow:inset 0 0 0 var(--scrollbar-width)!important;border-radius:var(--scrollbar-width)!important;border:calc(var(--scrollbar-width) * 2/9) solid transparent!important;background-clip:content-box;background-color:transparent!important;color:rgba(var(--scrollbar-color-rgb),30%)!important}*::-webkit-scrollbar-thumb:hover{color:rgba(var(--scrollbar-color-rgb),45%)!important}*::-webkit-scrollbar-thumb:active{color:rgba(var(--scrollbar-color-rgb),60%)!important}@supports not selector(::-webkit-scrollbar){html{scrollbar-color:rgb(var(--scrollbar-color-rgb));scrollbar-width:thin}}";
277
277
  }
278
- const js = `let overriddenStyle=document.createElement('style');overriddenStyle.innerHTML='${css}';document.body.append(overriddenStyle);document.body.classList.remove('platform-windows','platform-mac','platform-linux');`;
279
- win?.webContents.devToolsWebContents?.executeJavaScript(js);
278
+ const js = `${'function run(n){let d=document.createElement("style");d.innerHTML=n,document.body.append(d),["platform-windows","platform-mac","platform-linux"].forEach(t=>document.querySelectorAll(`.${t}`).forEach(o=>o.classList.remove(t))),l();const r=new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(let e=0;e<o.addedNodes.length;e++)o.addedNodes[e].classList.contains("editor-tooltip-host")&&l()});r.observe(document.body,{childList:!0});function l(){document.querySelectorAll(".editor-tooltip-host").forEach(t=>{if(t?.shadowRoot?.querySelectorAll(\'[data-key="overridden-dev-tools-font"]\').length===0){const o=document.createElement("style");o.setAttribute("data-key","overridden-dev-tools-font"),o.innerHTML=`${n}.cm-tooltip-autocomplete ul[role=listbox]{font-family:var(--mono)!important;}`,t.shadowRoot.append(o)}})}document.onclose=()=>r.disconnect()}'};run(\`${css}\`)`;
279
+ await win?.webContents.devToolsWebContents?.executeJavaScript(js);
280
280
  });
281
281
  }
282
282
  function getPathFromMain(...paths) {
package/dist/utils.d.cts CHANGED
@@ -90,6 +90,7 @@ interface BeautifyDevToolsOptions {
90
90
  * Beautify devtools' font and scrollbar
91
91
  * @param win target window
92
92
  * @param options sans font family, mono font family and scrollbar
93
+ * @see https://github.com/electron/electron/issues/42055
93
94
  */
94
95
  declare function beautifyDevTools(win: BrowserWindow, options: BeautifyDevToolsOptions): void;
95
96
  /**
package/dist/utils.d.ts CHANGED
@@ -90,6 +90,7 @@ interface BeautifyDevToolsOptions {
90
90
  * Beautify devtools' font and scrollbar
91
91
  * @param win target window
92
92
  * @param options sans font family, mono font family and scrollbar
93
+ * @see https://github.com/electron/electron/issues/42055
93
94
  */
94
95
  declare function beautifyDevTools(win: BrowserWindow, options: BeautifyDevToolsOptions): void;
95
96
  /**
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, reloadOnPreloadScriptChanged, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance } from './chunk-YZGE4RFY.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-K4N2OHNS.js';
2
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.js CHANGED
@@ -1,5 +1,5 @@
1
- import { readableSize, copyAndSkipIfExist } from './chunk-TPTWE33H.js';
2
- import { isUpdateJSON, defaultVersionJsonGenerator } from './chunk-LR7LR5WG.js';
1
+ import { copyAndSkipIfExist, readableSize } from './chunk-TPTWE33H.js';
2
+ import { defaultVersionJsonGenerator, isUpdateJSON } from './chunk-LR7LR5WG.js';
3
3
  export { convertLiteral } from './chunk-LR7LR5WG.js';
4
4
  import { log, id } from './chunk-5NKEXGI3.js';
5
5
  import fs2 from 'node:fs';
@@ -226,7 +226,7 @@ function parseOptions(pkg, sourcemap = false, minify = false, options = {}) {
226
226
  return false;
227
227
  }
228
228
  if (!external) {
229
- return void 0;
229
+ return undefined;
230
230
  }
231
231
  if (typeof external === "string") {
232
232
  return source === external;
@@ -309,16 +309,16 @@ async function electronWithUpdater(options) {
309
309
  } = options;
310
310
  if (!pkg || !pkg.version || !pkg.name || !pkg.main) {
311
311
  log.error("package.json not found or invalid", { timestamp: true });
312
- return void 0;
312
+ return undefined;
313
313
  }
314
314
  const isESM = pkg.type === "module";
315
- let bytecodeOptions = typeof bytecode === "object" ? bytecode : bytecode === true ? { enable: true } : void 0;
315
+ let bytecodeOptions = typeof bytecode === "object" ? bytecode : bytecode === true ? { enable: true } : undefined;
316
316
  if (isESM && bytecodeOptions?.enable) {
317
317
  (await import('./constant-ME27JB5D.js')).bytecodeLog.warn(
318
318
  '`bytecodePlugin` does not support ES module, please remove "type": "module" in package.json',
319
319
  { timestamp: true }
320
320
  );
321
- bytecodeOptions = void 0;
321
+ bytecodeOptions = undefined;
322
322
  }
323
323
  const {
324
324
  buildAsarOption,
@@ -388,7 +388,7 @@ async function electronWithUpdater(options) {
388
388
  external: (src) => src.startsWith("node:") || Object.keys("dependencies" in pkg ? pkg.dependencies : {}).includes(src) || src === "original-fs",
389
389
  treeshake: true
390
390
  };
391
- const esmShimPlugin = isESM ? (await import('./esm-4S4XCVEW.js')).esm() : void 0;
391
+ const esmShimPlugin = isESM ? (await import('./esm-4S4XCVEW.js')).esm() : undefined;
392
392
  const electronPluginOptions = {
393
393
  main: {
394
394
  entry: _main.files,
@@ -407,7 +407,7 @@ async function electronWithUpdater(options) {
407
407
  vite: mergeConfig(
408
408
  {
409
409
  plugins: [
410
- !isBuild && useNotBundle ? notBundle() : void 0,
410
+ !isBuild && useNotBundle ? notBundle() : undefined,
411
411
  bytecodeOptions && await import('./bytecode-R2B4KTMV.js').then((m) => m.bytecodePlugin("main", bytecodeOptions)),
412
412
  esmShimPlugin
413
413
  ],
@@ -449,7 +449,7 @@ async function electronWithUpdater(options) {
449
449
  }
450
450
  ],
451
451
  build: {
452
- sourcemap: sourcemap ? "inline" : void 0,
452
+ sourcemap: sourcemap ? "inline" : undefined,
453
453
  minify,
454
454
  outDir: `${buildAsarOption.electronDistPath}/preload`,
455
455
  rollupOptions
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "electron-incremental-update",
3
3
  "type": "module",
4
- "version": "2.2.3",
4
+ "version": "2.2.4",
5
5
  "description": "Electron incremental update tools with Vite plugin, support bytecode protection",
6
6
  "author": "subframe7536",
7
7
  "license": "MIT",
@@ -60,27 +60,32 @@
60
60
  "esbuild": "*"
61
61
  },
62
62
  "dependencies": {
63
- "@babel/core": "^7.26.0",
63
+ "@babel/core": "^7.26.7",
64
64
  "@babel/plugin-transform-arrow-functions": "^7.25.9",
65
65
  "@babel/plugin-transform-template-literals": "^7.25.9",
66
66
  "@subframe7536/type-utils": "^0.1.6",
67
67
  "ci-info": "^4.1.0",
68
- "local-pkg": "^0.5.1",
69
- "magic-string": "^0.30.14",
68
+ "local-pkg": "^1.0.0",
69
+ "magic-string": "^0.30.17",
70
70
  "selfsigned": "^2.4.1",
71
71
  "vite-plugin-electron": "^0.29.0"
72
72
  },
73
73
  "devDependencies": {
74
- "@subframe7536/eslint-config": "^0.9.7",
74
+ "@subframe7536/eslint-config": "^1.1.8",
75
75
  "@types/babel__core": "^7.20.5",
76
- "@types/node": "^20.17.9",
77
- "bumpp": "^9.8.1",
78
- "electron": "32.2.6",
79
- "eslint": "^9.15.0",
80
- "tsup": "^8.3.5",
81
- "typescript": "^5.7.2",
82
- "vite": "^6.0.1",
76
+ "@types/node": "^20.17.17",
77
+ "bumpp": "^10.0.1",
78
+ "electron": "34.0.2",
79
+ "eslint": "^9.19.0",
80
+ "tsup": "^8.3.6",
81
+ "typescript": "^5.7.3",
82
+ "vite": "^6.0.11",
83
83
  "vite-plugin-electron": "^0.29.0",
84
- "vitest": "^2.1.6"
84
+ "vitest": "^3.0.5"
85
+ },
86
+ "pnpm": {
87
+ "overrides": {
88
+ "is-core-module": "npm:@nolyfill/is-core-module@^1"
89
+ }
85
90
  }
86
91
  }