electron-incremental-update 2.2.2 → 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 +88 -17
- package/dist/bytecode-R2B4KTMV.js +1 -1
- package/dist/chunk-D7NXTCQW.js +135 -0
- package/dist/{chunk-JI27JWJN.js → chunk-K4N2OHNS.js} +17 -6
- package/dist/chunk-LR7LR5WG.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +1 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +3 -3
- package/dist/provider.cjs +49 -46
- package/dist/provider.d.cts +13 -43
- package/dist/provider.d.ts +13 -43
- package/dist/provider.js +4 -95
- package/dist/{types-CStrrQPl.d.ts → types-C5M2xRjF.d.cts} +74 -3
- package/dist/{types-CWtySwqA.d.cts → types-C5M2xRjF.d.ts} +74 -3
- package/dist/utils.cjs +190 -80
- package/dist/utils.d.cts +7 -3
- package/dist/utils.d.ts +7 -3
- package/dist/utils.js +2 -2
- package/dist/vite.d.ts +3 -4
- package/dist/vite.js +17 -17
- package/dist/zip-BQS8qbGA.d.cts +70 -0
- package/dist/zip-DbfskMQi.d.ts +70 -0
- package/package.json +23 -18
- package/dist/chunk-XGWQQVIZ.js +0 -43
- package/dist/version-Bl_0oO5f.d.cts +0 -74
- package/dist/version-Bl_0oO5f.d.ts +0 -74
- package/dist/zip-DQdr8pFv.d.cts +0 -33
- package/dist/zip-DQdr8pFv.d.ts +0 -33
package/dist/utils.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var crypto = require('crypto');
|
|
4
|
+
var electron2 = require('electron');
|
|
4
5
|
var fs = require('fs');
|
|
5
6
|
var path = require('path');
|
|
6
|
-
var electron = require('electron');
|
|
7
7
|
var zlib = require('zlib');
|
|
8
8
|
|
|
9
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
10
|
|
|
11
11
|
var crypto__default = /*#__PURE__*/_interopDefault(crypto);
|
|
12
|
+
var electron2__default = /*#__PURE__*/_interopDefault(electron2);
|
|
12
13
|
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
13
14
|
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
14
|
-
var electron__default = /*#__PURE__*/_interopDefault(electron);
|
|
15
15
|
var zlib__default = /*#__PURE__*/_interopDefault(zlib);
|
|
16
16
|
|
|
17
17
|
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
@@ -47,18 +47,173 @@ function defaultVerifySignature(buffer, version, signature, cert) {
|
|
|
47
47
|
return false;
|
|
48
48
|
}
|
|
49
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
|
+
}
|
|
50
205
|
var isDev = __EIU_IS_DEV__;
|
|
51
206
|
var isWin = process.platform === "win32";
|
|
52
207
|
var isMac = process.platform === "darwin";
|
|
53
208
|
var isLinux = process.platform === "linux";
|
|
54
209
|
function getPathFromAppNameAsar(...paths) {
|
|
55
|
-
return isDev ? "DEV.asar" : path__default.default.join(path__default.default.dirname(
|
|
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);
|
|
56
211
|
}
|
|
57
212
|
function getAppVersion() {
|
|
58
213
|
return isDev ? getEntryVersion() : fs__default.default.readFileSync(getPathFromAppNameAsar("version"), "utf-8");
|
|
59
214
|
}
|
|
60
215
|
function getEntryVersion() {
|
|
61
|
-
return
|
|
216
|
+
return electron2__default.default.app.getVersion();
|
|
62
217
|
}
|
|
63
218
|
function requireNative(moduleName) {
|
|
64
219
|
const m = getPathFromEntryAsar(moduleName);
|
|
@@ -75,21 +230,21 @@ async function importNative(moduleName) {
|
|
|
75
230
|
return await import(`file://${m}.js`);
|
|
76
231
|
}
|
|
77
232
|
function restartApp() {
|
|
78
|
-
|
|
79
|
-
|
|
233
|
+
electron2__default.default.app.relaunch();
|
|
234
|
+
electron2__default.default.app.quit();
|
|
80
235
|
}
|
|
81
236
|
function setAppUserModelId(id) {
|
|
82
237
|
if (isWin) {
|
|
83
|
-
|
|
238
|
+
electron2__default.default.app.setAppUserModelId(id ?? `org.${electron2__default.default.app.name}`);
|
|
84
239
|
}
|
|
85
240
|
}
|
|
86
241
|
function disableHWAccForWin7() {
|
|
87
242
|
if (!__EIU_IS_ESM__ && __require("os").release().startsWith("6.1")) {
|
|
88
|
-
|
|
243
|
+
electron2__default.default.app.disableHardwareAcceleration();
|
|
89
244
|
}
|
|
90
245
|
}
|
|
91
246
|
function singleInstance(window) {
|
|
92
|
-
|
|
247
|
+
electron2__default.default.app.on("second-instance", () => {
|
|
93
248
|
if (window) {
|
|
94
249
|
window.show();
|
|
95
250
|
if (window.isMinimized()) {
|
|
@@ -100,11 +255,11 @@ function singleInstance(window) {
|
|
|
100
255
|
});
|
|
101
256
|
}
|
|
102
257
|
function setPortableAppDataPath(dirName = "data") {
|
|
103
|
-
const portablePath = path__default.default.join(path__default.default.dirname(
|
|
258
|
+
const portablePath = path__default.default.join(path__default.default.dirname(electron2__default.default.app.getPath("exe")), dirName);
|
|
104
259
|
if (!fs__default.default.existsSync(portablePath)) {
|
|
105
260
|
fs__default.default.mkdirSync(portablePath);
|
|
106
261
|
}
|
|
107
|
-
|
|
262
|
+
electron2__default.default.app.setPath("appData", portablePath);
|
|
108
263
|
}
|
|
109
264
|
function loadPage(win, htmlFilePath = "index.html") {
|
|
110
265
|
if (isDev) {
|
|
@@ -115,92 +270,41 @@ function loadPage(win, htmlFilePath = "index.html") {
|
|
|
115
270
|
}
|
|
116
271
|
function beautifyDevTools(win, options) {
|
|
117
272
|
const { mono, sans, scrollbar = true } = options;
|
|
118
|
-
win.webContents.on("devtools-opened", () => {
|
|
119
|
-
let css = `:root{--sans
|
|
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}`;
|
|
120
275
|
if (scrollbar) {
|
|
121
|
-
css += ":root{--scrollbar-width:
|
|
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}}";
|
|
122
277
|
}
|
|
123
|
-
const js =
|
|
124
|
-
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);
|
|
125
280
|
});
|
|
126
281
|
}
|
|
127
282
|
function getPathFromMain(...paths) {
|
|
128
|
-
return isDev ? path__default.default.join(
|
|
283
|
+
return isDev ? path__default.default.join(electron2__default.default.app.getAppPath(), __EIU_ELECTRON_DIST_PATH__, "main", ...paths) : getPathFromAppNameAsar("main", ...paths);
|
|
129
284
|
}
|
|
130
285
|
function getPathFromPreload(...paths) {
|
|
131
|
-
return isDev ? path__default.default.join(
|
|
286
|
+
return isDev ? path__default.default.join(electron2__default.default.app.getAppPath(), __EIU_ELECTRON_DIST_PATH__, "preload", ...paths) : getPathFromAppNameAsar("preload", ...paths);
|
|
132
287
|
}
|
|
133
288
|
function getPathFromPublic(...paths) {
|
|
134
|
-
return isDev ? path__default.default.join(
|
|
289
|
+
return isDev ? path__default.default.join(electron2__default.default.app.getAppPath(), "public", ...paths) : getPathFromAppNameAsar("renderer", ...paths);
|
|
135
290
|
}
|
|
136
291
|
function getPathFromEntryAsar(...paths) {
|
|
137
|
-
return path__default.default.join(
|
|
292
|
+
return path__default.default.join(electron2__default.default.app.getAppPath(), __EIU_ENTRY_DIST_PATH__, ...paths);
|
|
138
293
|
}
|
|
139
294
|
function handleUnexpectedErrors(callback) {
|
|
140
295
|
process.on("uncaughtException", callback);
|
|
141
296
|
process.on("unhandledRejection", callback);
|
|
142
297
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
major,
|
|
153
|
-
minor,
|
|
154
|
-
patch,
|
|
155
|
-
stage: "",
|
|
156
|
-
stageVersion: -1
|
|
157
|
-
};
|
|
158
|
-
if (match[4]) {
|
|
159
|
-
let [stage, _v] = match[4].split(".");
|
|
160
|
-
ret.stage = stage;
|
|
161
|
-
ret.stageVersion = Number(_v) || -1;
|
|
162
|
-
}
|
|
163
|
-
if (Number.isNaN(major) || Number.isNaN(minor) || Number.isNaN(patch) || Number.isNaN(ret.stageVersion)) {
|
|
164
|
-
throw new TypeError(`Invalid version: ${version}`);
|
|
165
|
-
}
|
|
166
|
-
return ret;
|
|
167
|
-
}
|
|
168
|
-
function compareStrings(str1, str2) {
|
|
169
|
-
if (str1 === "") {
|
|
170
|
-
return str2 !== "";
|
|
171
|
-
} else if (str2 === "") {
|
|
172
|
-
return true;
|
|
173
|
-
}
|
|
174
|
-
return str1 < str2;
|
|
175
|
-
}
|
|
176
|
-
function defaultIsLowerVersion(oldVer, newVer) {
|
|
177
|
-
const oldV = parseVersion(oldVer);
|
|
178
|
-
const newV = parseVersion(newVer);
|
|
179
|
-
for (let key of Object.keys(oldV)) {
|
|
180
|
-
if (key === "stage" && compareStrings(oldV[key], newV[key])) {
|
|
181
|
-
return true;
|
|
182
|
-
} else if (oldV[key] !== newV[key]) {
|
|
183
|
-
return oldV[key] < newV[key];
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return false;
|
|
187
|
-
}
|
|
188
|
-
var is = (j) => !!(j && j.minimumVersion && j.signature && j.version);
|
|
189
|
-
function isUpdateJSON(json) {
|
|
190
|
-
return is(json) && is(json?.beta);
|
|
191
|
-
}
|
|
192
|
-
function defaultVersionJsonGenerator(existingJson, signature, version, minimumVersion) {
|
|
193
|
-
existingJson.beta = {
|
|
194
|
-
version,
|
|
195
|
-
minimumVersion,
|
|
196
|
-
signature
|
|
197
|
-
};
|
|
198
|
-
if (!parseVersion(version).stage) {
|
|
199
|
-
existingJson.version = version;
|
|
200
|
-
existingJson.minimumVersion = minimumVersion;
|
|
201
|
-
existingJson.signature = signature;
|
|
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
|
+
});
|
|
202
307
|
}
|
|
203
|
-
return existingJson;
|
|
204
308
|
}
|
|
205
309
|
async function defaultZipFile(buffer) {
|
|
206
310
|
return new Promise((resolve, reject) => {
|
|
@@ -216,6 +320,9 @@ async function defaultUnzipFile(buffer) {
|
|
|
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, d as defaultSignature,
|
|
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';
|
|
2
2
|
import { BrowserWindow } from 'electron';
|
|
3
|
-
export { U as UpdateInfo, a as UpdateJSON, V as Version, d as defaultIsLowerVersion,
|
|
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
|
|
@@ -88,6 +90,7 @@ interface BeautifyDevToolsOptions {
|
|
|
88
90
|
* Beautify devtools' font and scrollbar
|
|
89
91
|
* @param win target window
|
|
90
92
|
* @param options sans font family, mono font family and scrollbar
|
|
93
|
+
* @see https://github.com/electron/electron/issues/42055
|
|
91
94
|
*/
|
|
92
95
|
declare function beautifyDevTools(win: BrowserWindow, options: BeautifyDevToolsOptions): void;
|
|
93
96
|
/**
|
|
@@ -115,5 +118,6 @@ declare function getPathFromEntryAsar(...paths: string[]): string;
|
|
|
115
118
|
* @param callback callback function
|
|
116
119
|
*/
|
|
117
120
|
declare function handleUnexpectedErrors(callback: (err: unknown) => void): void;
|
|
121
|
+
declare function reloadOnPreloadScriptChanged(): void;
|
|
118
122
|
|
|
119
|
-
export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance };
|
|
123
|
+
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, d as defaultSignature,
|
|
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';
|
|
2
2
|
import { BrowserWindow } from 'electron';
|
|
3
|
-
export { U as UpdateInfo, a as UpdateJSON, V as Version, d as defaultIsLowerVersion,
|
|
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
|
|
@@ -88,6 +90,7 @@ interface BeautifyDevToolsOptions {
|
|
|
88
90
|
* Beautify devtools' font and scrollbar
|
|
89
91
|
* @param win target window
|
|
90
92
|
* @param options sans font family, mono font family and scrollbar
|
|
93
|
+
* @see https://github.com/electron/electron/issues/42055
|
|
91
94
|
*/
|
|
92
95
|
declare function beautifyDevTools(win: BrowserWindow, options: BeautifyDevToolsOptions): void;
|
|
93
96
|
/**
|
|
@@ -115,5 +118,6 @@ declare function getPathFromEntryAsar(...paths: string[]): string;
|
|
|
115
118
|
* @param callback callback function
|
|
116
119
|
*/
|
|
117
120
|
declare function handleUnexpectedErrors(callback: (err: unknown) => void): void;
|
|
121
|
+
declare function reloadOnPreloadScriptChanged(): void;
|
|
118
122
|
|
|
119
|
-
export { beautifyDevTools, disableHWAccForWin7, getAppVersion, getEntryVersion, getPathFromAppNameAsar, getPathFromEntryAsar, getPathFromMain, getPathFromPreload, getPathFromPublic, handleUnexpectedErrors, importNative, isDev, isLinux, isMac, isWin, loadPage, requireNative, restartApp, setAppUserModelId, setPortableAppDataPath, singleInstance };
|
|
123
|
+
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-
|
|
2
|
-
export { aesDecrypt, aesEncrypt, defaultSignature, defaultUnzipFile, defaultVerifySignature, defaultZipFile, hashBuffer } from './chunk-
|
|
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
|
+
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
|
@@ -170,20 +170,19 @@ interface GeneratorOverrideFunctions {
|
|
|
170
170
|
* Custom signature generate function
|
|
171
171
|
* @param buffer file buffer
|
|
172
172
|
* @param privateKey private key
|
|
173
|
-
* @param cert certificate string, **EOL must be
|
|
173
|
+
* @param cert certificate string, **EOL must be `\n`**
|
|
174
174
|
* @param version current version
|
|
175
175
|
*/
|
|
176
176
|
generateSignature?: (buffer: Buffer, privateKey: string, cert: string, version: string) => Promisable<string>;
|
|
177
177
|
/**
|
|
178
|
-
* Custom generate
|
|
178
|
+
* Custom generate update json function
|
|
179
179
|
* @param existingJson The existing JSON object.
|
|
180
180
|
* @param buffer file buffer
|
|
181
181
|
* @param signature generated signature
|
|
182
182
|
* @param version current version
|
|
183
183
|
* @param minVersion The minimum version
|
|
184
|
-
* @returns The updated version json
|
|
185
184
|
*/
|
|
186
|
-
|
|
185
|
+
generateUpdateJson?: (existingJson: UpdateJSON, signature: string, version: string, minVersion: string) => Promisable<UpdateJSON>;
|
|
187
186
|
/**
|
|
188
187
|
* Custom generate zip file buffer
|
|
189
188
|
* @param buffer source buffer
|
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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';
|
|
@@ -33,14 +33,14 @@ async function buildAsar({
|
|
|
33
33
|
log.info(`Build update asar to '${gzipPath}' [${readableSize(buf.length)}]`, { timestamp: true });
|
|
34
34
|
return buf;
|
|
35
35
|
}
|
|
36
|
-
async function
|
|
36
|
+
async function buildUpdateJson({
|
|
37
37
|
versionPath,
|
|
38
38
|
privateKey,
|
|
39
39
|
cert,
|
|
40
40
|
version,
|
|
41
41
|
minimumVersion,
|
|
42
42
|
generateSignature,
|
|
43
|
-
|
|
43
|
+
generateUpdateJson
|
|
44
44
|
}, asarBuffer) {
|
|
45
45
|
let _json = {
|
|
46
46
|
beta: {
|
|
@@ -64,12 +64,12 @@ async function buildVersion({
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
const sig = await generateSignature(asarBuffer, privateKey, cert, version);
|
|
67
|
-
_json = await
|
|
67
|
+
_json = await generateUpdateJson(_json, sig, version, minimumVersion);
|
|
68
68
|
if (!isUpdateJSON(_json)) {
|
|
69
|
-
throw new Error("Invalid
|
|
69
|
+
throw new Error("Invalid update json");
|
|
70
70
|
}
|
|
71
71
|
fs2.writeFileSync(versionPath, JSON.stringify(_json, null, 2));
|
|
72
|
-
log.info(`build
|
|
72
|
+
log.info(`build update json to '${versionPath}'`, { timestamp: true });
|
|
73
73
|
}
|
|
74
74
|
async function buildEntry({
|
|
75
75
|
sourcemap,
|
|
@@ -202,7 +202,7 @@ function parseOptions(pkg, sourcemap = false, minify = false, options = {}) {
|
|
|
202
202
|
overrideGenerator: {
|
|
203
203
|
generateGzipFile = defaultZipFile,
|
|
204
204
|
generateSignature = defaultSignature,
|
|
205
|
-
|
|
205
|
+
generateUpdateJson = defaultVersionJsonGenerator
|
|
206
206
|
} = {}
|
|
207
207
|
} = options;
|
|
208
208
|
const buildAsarOption = {
|
|
@@ -226,7 +226,7 @@ function parseOptions(pkg, sourcemap = false, minify = false, options = {}) {
|
|
|
226
226
|
return false;
|
|
227
227
|
}
|
|
228
228
|
if (!external) {
|
|
229
|
-
return
|
|
229
|
+
return undefined;
|
|
230
230
|
}
|
|
231
231
|
if (typeof external === "string") {
|
|
232
232
|
return source === external;
|
|
@@ -251,7 +251,7 @@ function parseOptions(pkg, sourcemap = false, minify = false, options = {}) {
|
|
|
251
251
|
cert,
|
|
252
252
|
versionPath,
|
|
253
253
|
generateSignature,
|
|
254
|
-
|
|
254
|
+
generateUpdateJson
|
|
255
255
|
};
|
|
256
256
|
return { buildAsarOption, buildEntryOption, buildVersionOption, postBuild, cert };
|
|
257
257
|
}
|
|
@@ -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
|
|
312
|
+
return undefined;
|
|
313
313
|
}
|
|
314
314
|
const isESM = pkg.type === "module";
|
|
315
|
-
let bytecodeOptions = typeof bytecode === "object" ? bytecode : bytecode === true ? { enable: true } :
|
|
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 =
|
|
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() :
|
|
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() :
|
|
410
|
+
!isBuild && useNotBundle ? notBundle() : undefined,
|
|
411
411
|
bytecodeOptions && await import('./bytecode-R2B4KTMV.js').then((m) => m.bytecodePlugin("main", bytecodeOptions)),
|
|
412
412
|
esmShimPlugin
|
|
413
413
|
],
|
|
@@ -443,13 +443,13 @@ async function electronWithUpdater(options) {
|
|
|
443
443
|
if (!buildVersionJson && !isCI) {
|
|
444
444
|
log.warn("No `buildVersionJson` option setup, skip build version json. Only build in CI by default", { timestamp: true });
|
|
445
445
|
} else {
|
|
446
|
-
await
|
|
446
|
+
await buildUpdateJson(buildVersionOption, buffer);
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
}
|
|
450
450
|
],
|
|
451
451
|
build: {
|
|
452
|
-
sourcemap: sourcemap ? "inline" :
|
|
452
|
+
sourcemap: sourcemap ? "inline" : undefined,
|
|
453
453
|
minify,
|
|
454
454
|
outDir: `${buildAsarOption.electronDistPath}/preload`,
|
|
455
455
|
rollupOptions
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Arrayable } from '@subframe7536/type-utils';
|
|
2
|
+
import { a as UpdateJSON, D as DownloadingInfo } from './types-C5M2xRjF.cjs';
|
|
3
|
+
import { IncomingMessage } from 'electron';
|
|
4
|
+
|
|
5
|
+
declare function hashBuffer(data: string | Buffer, length: number): Buffer;
|
|
6
|
+
declare function aesEncrypt(plainText: string, key: Buffer, iv: Buffer): string;
|
|
7
|
+
/**
|
|
8
|
+
* Default function to generate asar signature, returns generated signature
|
|
9
|
+
* @param buffer file buffer
|
|
10
|
+
* @param privateKey primary key
|
|
11
|
+
* @param cert certificate
|
|
12
|
+
* @param version target version
|
|
13
|
+
*/
|
|
14
|
+
declare function defaultSignature(buffer: Buffer, privateKey: string, cert: string, version: string): string;
|
|
15
|
+
declare function aesDecrypt(encryptedText: string, key: Buffer, iv: Buffer): string;
|
|
16
|
+
/**
|
|
17
|
+
* Default function to verify asar signature,
|
|
18
|
+
* if signature is valid, returns the version, otherwise returns `undefined`
|
|
19
|
+
* @param buffer file buffer
|
|
20
|
+
* @param version target version
|
|
21
|
+
* @param signature signature
|
|
22
|
+
* @param cert certificate
|
|
23
|
+
*/
|
|
24
|
+
declare function defaultVerifySignature(buffer: Buffer, version: string, signature: string, cert: string): boolean;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Safe get value from header
|
|
28
|
+
* @param headers response header
|
|
29
|
+
* @param key target header key
|
|
30
|
+
*/
|
|
31
|
+
declare function getHeader(headers: Record<string, Arrayable<string>>, key: any): any;
|
|
32
|
+
declare function downloadUtil<T>(url: string, headers: Record<string, any>, signal: AbortSignal, onResponse: (resp: IncomingMessage, resolve: (data: T) => void, reject: (e: any) => void) => void): Promise<T>;
|
|
33
|
+
type ResolveDataFn = (data: string, resolve: (data: any) => void, reject: (e: any) => void) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Default function to download json and parse to UpdateJson
|
|
36
|
+
* @param url target url
|
|
37
|
+
* @param headers extra headers
|
|
38
|
+
* @param signal abort signal
|
|
39
|
+
* @param resolveData on resolve
|
|
40
|
+
*/
|
|
41
|
+
declare function defaultDownloadJSON<T>(url: string, headers: Record<string, any>, signal: AbortSignal, resolveData?: ResolveDataFn): Promise<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Default function to download json and parse to UpdateJson
|
|
44
|
+
* @param url target url
|
|
45
|
+
* @param headers extra headers
|
|
46
|
+
* @param signal abort signal
|
|
47
|
+
*/
|
|
48
|
+
declare function defaultDownloadUpdateJSON(url: string, headers: Record<string, any>, signal: AbortSignal): Promise<UpdateJSON>;
|
|
49
|
+
/**
|
|
50
|
+
* Default function to download asar buffer,
|
|
51
|
+
* get total size from `Content-Length` header
|
|
52
|
+
* @param url target url
|
|
53
|
+
* @param headers extra headers
|
|
54
|
+
* @param signal abort signal
|
|
55
|
+
* @param onDownloading on downloading callback
|
|
56
|
+
*/
|
|
57
|
+
declare function defaultDownloadAsar(url: string, headers: Record<string, any>, signal: AbortSignal, onDownloading?: (progress: DownloadingInfo) => void): Promise<Buffer>;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Default function to compress file using brotli
|
|
61
|
+
* @param buffer uncompressed file buffer
|
|
62
|
+
*/
|
|
63
|
+
declare function defaultZipFile(buffer: Buffer): Promise<Buffer>;
|
|
64
|
+
/**
|
|
65
|
+
* Default function to decompress file using brotli
|
|
66
|
+
* @param buffer compressed file buffer
|
|
67
|
+
*/
|
|
68
|
+
declare function defaultUnzipFile(buffer: Buffer): Promise<Buffer>;
|
|
69
|
+
|
|
70
|
+
export { aesEncrypt as a, aesDecrypt as b, defaultVerifySignature as c, defaultSignature as d, downloadUtil as e, defaultDownloadJSON as f, getHeader as g, hashBuffer as h, defaultDownloadUpdateJSON as i, defaultDownloadAsar as j, defaultZipFile as k, defaultUnzipFile as l };
|