electron-incremental-update 1.3.0 → 2.0.0-beta.1
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 +6 -2
- package/dist/chunk-RSLOPAIZ.js +247 -0
- package/dist/decrypt-BNBcodiO.d.cts +4 -0
- package/dist/decrypt-BNBcodiO.d.ts +4 -0
- package/dist/index.cjs +108 -261
- package/dist/index.d.cts +68 -161
- package/dist/index.d.ts +68 -161
- package/dist/index.js +76 -195
- package/dist/provider.cjs +227 -0
- package/dist/provider.d.cts +37 -0
- package/dist/provider.d.ts +37 -0
- package/dist/provider.js +98 -0
- package/dist/types-DxPmQmaq.d.cts +61 -0
- package/dist/types-seJf3Wbc.d.ts +61 -0
- package/dist/utils.cjs +139 -115
- package/dist/utils.d.cts +31 -76
- package/dist/utils.d.ts +31 -76
- package/dist/utils.js +35 -11
- package/dist/{pure-GoN_3MEj.d.cts → version-CffZWDhZ.d.cts} +8 -7
- package/dist/{pure-GoN_3MEj.d.ts → version-CffZWDhZ.d.ts} +8 -7
- package/dist/vite.js +70 -117
- package/package.json +12 -6
- package/provider.d.ts +1 -0
- package/provider.js +1 -0
- package/dist/chunk-7ET4GMTZ.js +0 -236
- package/dist/chunk-CXHA5TF7.js +0 -236
- package/dist/chunk-HWUYTDEF.js +0 -236
- package/dist/chunk-RQCTJY4L.js +0 -236
- package/dist/chunk-SBPTSLG7.js +0 -235
- package/dist/vite.d.ts +0 -372
package/dist/chunk-SBPTSLG7.js
DELETED
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/utils/electron.ts
|
|
9
|
-
import { existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
10
|
-
import { basename, dirname, join } from "node:path";
|
|
11
|
-
import { release } from "node:os";
|
|
12
|
-
import { app } from "electron";
|
|
13
|
-
var is = {
|
|
14
|
-
dev: !app.isPackaged,
|
|
15
|
-
win: process.platform === "win32",
|
|
16
|
-
mac: process.platform === "darwin",
|
|
17
|
-
linux: process.platform === "linux"
|
|
18
|
-
};
|
|
19
|
-
function getPathFromAppNameAsar(...path) {
|
|
20
|
-
return is.dev ? "DEV.asar" : join(dirname(app.getAppPath()), `${app.name}.asar`, ...path);
|
|
21
|
-
}
|
|
22
|
-
function getVersions() {
|
|
23
|
-
const platform = is.win ? "Windows" : is.mac ? "MacOS" : process.platform.toUpperCase();
|
|
24
|
-
return {
|
|
25
|
-
appVersion: is.dev ? app.getVersion() : readFileSync(getPathFromAppNameAsar("version"), "utf-8"),
|
|
26
|
-
entryVersion: app.getVersion(),
|
|
27
|
-
electronVersion: process.versions.electron,
|
|
28
|
-
nodeVersion: process.versions.node,
|
|
29
|
-
systemVersion: `${platform} ${release()}`
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
function loadNativeModuleFromEntry(devEntryDirPath = "../../dist-entry", entryDirPath = join(app.getAppPath(), basename(devEntryDirPath))) {
|
|
33
|
-
const path = is.dev ? devEntryDirPath : entryDirPath;
|
|
34
|
-
return (moduleName) => {
|
|
35
|
-
try {
|
|
36
|
-
return __require(join(path, moduleName));
|
|
37
|
-
} catch (error) {
|
|
38
|
-
console.error("fail to load module", error);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
function restartApp() {
|
|
43
|
-
app.relaunch();
|
|
44
|
-
app.quit();
|
|
45
|
-
}
|
|
46
|
-
function setAppUserModelId(id) {
|
|
47
|
-
app.setAppUserModelId(is.dev ? process.execPath : id ?? `org.${app.name}`);
|
|
48
|
-
}
|
|
49
|
-
function disableHWAccForWin7() {
|
|
50
|
-
if (release().startsWith("6.1")) {
|
|
51
|
-
app.disableHardwareAcceleration();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function singleInstance(window) {
|
|
55
|
-
const result = app.requestSingleInstanceLock();
|
|
56
|
-
result ? app.on("second-instance", () => {
|
|
57
|
-
if (window) {
|
|
58
|
-
window.show();
|
|
59
|
-
if (window.isMinimized()) {
|
|
60
|
-
window.restore();
|
|
61
|
-
}
|
|
62
|
-
window.focus();
|
|
63
|
-
}
|
|
64
|
-
}) : app.quit();
|
|
65
|
-
return result;
|
|
66
|
-
}
|
|
67
|
-
function setPortableAppDataPath(dirName = "data") {
|
|
68
|
-
const portablePath = join(dirname(app.getPath("exe")), dirName);
|
|
69
|
-
if (!existsSync(portablePath)) {
|
|
70
|
-
mkdirSync(portablePath);
|
|
71
|
-
}
|
|
72
|
-
app.setPath("appData", portablePath);
|
|
73
|
-
}
|
|
74
|
-
function waitAppReady(timeout = 1e3) {
|
|
75
|
-
return app.isReady() ? Promise.resolve() : new Promise((resolve, reject) => {
|
|
76
|
-
const _ = setTimeout(() => {
|
|
77
|
-
reject(new Error("app is not ready"));
|
|
78
|
-
}, timeout);
|
|
79
|
-
app.whenReady().then(() => {
|
|
80
|
-
clearTimeout(_);
|
|
81
|
-
resolve();
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
function getPaths(entryDirName = "dist-entry") {
|
|
86
|
-
const root = join(__dirname, "..");
|
|
87
|
-
const mainDirPath = join(root, "main");
|
|
88
|
-
const preloadDirPath = join(root, "preload");
|
|
89
|
-
const rendererDirPath = join(root, "renderer");
|
|
90
|
-
const devServerURL = process.env.VITE_DEV_SERVER_URL;
|
|
91
|
-
const indexHTMLPath = join(rendererDirPath, "index.html");
|
|
92
|
-
const publicDirPath = devServerURL ? join(root, "../public") : rendererDirPath;
|
|
93
|
-
return {
|
|
94
|
-
/**
|
|
95
|
-
* @example
|
|
96
|
-
* ```ts
|
|
97
|
-
* devServerURL && win.loadURL(devServerURL)
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
devServerURL,
|
|
101
|
-
/**
|
|
102
|
-
* @example
|
|
103
|
-
* ```ts
|
|
104
|
-
* win.loadFile(indexHTMLPath)
|
|
105
|
-
* ```
|
|
106
|
-
*/
|
|
107
|
-
indexHTMLPath,
|
|
108
|
-
/**
|
|
109
|
-
* get path inside entry asar
|
|
110
|
-
* @param paths joined path
|
|
111
|
-
*/
|
|
112
|
-
getPathFromEntryAsar(...paths) {
|
|
113
|
-
return join(app.getAppPath(), entryDirName, ...paths);
|
|
114
|
-
},
|
|
115
|
-
/**
|
|
116
|
-
* get path inside `${electron.app.name}.asar/main`
|
|
117
|
-
* @param paths joined path
|
|
118
|
-
*/
|
|
119
|
-
getPathFromMain(...paths) {
|
|
120
|
-
return join(mainDirPath, ...paths);
|
|
121
|
-
},
|
|
122
|
-
/**
|
|
123
|
-
* get path inside `${electron.app.name}.asar/preload`
|
|
124
|
-
* @param paths joined path
|
|
125
|
-
*/
|
|
126
|
-
getPathFromPreload(...paths) {
|
|
127
|
-
return join(preloadDirPath, ...paths);
|
|
128
|
-
},
|
|
129
|
-
/**
|
|
130
|
-
* get path inside public dir
|
|
131
|
-
* @param paths joined path
|
|
132
|
-
*/
|
|
133
|
-
getPathFromPublic(...paths) {
|
|
134
|
-
return join(publicDirPath, ...paths);
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// src/utils/zip.ts
|
|
140
|
-
import { existsSync as existsSync2, readFileSync as readFileSync2, rmSync, writeFileSync } from "node:fs";
|
|
141
|
-
import { brotliCompress, brotliDecompress } from "node:zlib";
|
|
142
|
-
async function unzipFile(gzipPath, targetFilePath = gzipPath.slice(0, -3)) {
|
|
143
|
-
if (!existsSync2(gzipPath)) {
|
|
144
|
-
throw new Error(`path to zipped file not exist: ${gzipPath}`);
|
|
145
|
-
}
|
|
146
|
-
const compressedBuffer = readFileSync2(gzipPath);
|
|
147
|
-
return new Promise((resolve, reject) => {
|
|
148
|
-
brotliDecompress(compressedBuffer, (err, buffer) => {
|
|
149
|
-
rmSync(gzipPath);
|
|
150
|
-
if (err) {
|
|
151
|
-
reject(err);
|
|
152
|
-
}
|
|
153
|
-
writeFileSync(targetFilePath, buffer);
|
|
154
|
-
resolve(null);
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
async function zipFile(filePath, targetFilePath = `${filePath}.gz`) {
|
|
159
|
-
if (!existsSync2(filePath)) {
|
|
160
|
-
throw new Error(`path to be zipped not exist: ${filePath}`);
|
|
161
|
-
}
|
|
162
|
-
const buffer = readFileSync2(filePath);
|
|
163
|
-
return new Promise((resolve, reject) => {
|
|
164
|
-
brotliCompress(buffer, (err, buffer2) => {
|
|
165
|
-
if (err) {
|
|
166
|
-
reject(err);
|
|
167
|
-
}
|
|
168
|
-
writeFileSync(targetFilePath, buffer2);
|
|
169
|
-
resolve(null);
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// src/utils/pure.ts
|
|
175
|
-
function parseGithubCdnURL(originRepoURL, cdnPrefix, relativeFilePath) {
|
|
176
|
-
if (!originRepoURL.startsWith("https://github.com/")) {
|
|
177
|
-
throw new Error("origin url must start with https://github.com/");
|
|
178
|
-
}
|
|
179
|
-
originRepoURL = originRepoURL.trim().replace(/\/?$/, "/").trim();
|
|
180
|
-
relativeFilePath = relativeFilePath.trim().replace(/^\/|\/?$/g, "").trim();
|
|
181
|
-
cdnPrefix = cdnPrefix.trim().replace(/^\/?|\/?$/g, "").trim();
|
|
182
|
-
return originRepoURL.replace("github.com", cdnPrefix) + relativeFilePath;
|
|
183
|
-
}
|
|
184
|
-
function handleUnexpectedErrors(callback) {
|
|
185
|
-
process.on("uncaughtException", callback);
|
|
186
|
-
process.on("unhandledRejection", callback);
|
|
187
|
-
}
|
|
188
|
-
function parseVersion(version) {
|
|
189
|
-
const match = /^(\d+)\.(\d+)\.(\d+)(?:-([a-z0-9.-]+))?/i.exec(version);
|
|
190
|
-
if (!match) {
|
|
191
|
-
throw new TypeError(`invalid version: ${version}`);
|
|
192
|
-
}
|
|
193
|
-
const [major, minor, patch] = match.slice(1, 4).map(Number);
|
|
194
|
-
const ret = {
|
|
195
|
-
major,
|
|
196
|
-
minor,
|
|
197
|
-
patch,
|
|
198
|
-
stage: "",
|
|
199
|
-
stageVersion: -1
|
|
200
|
-
};
|
|
201
|
-
if (match[4]) {
|
|
202
|
-
let [stage, _v] = match[4].split(".");
|
|
203
|
-
ret.stage = stage;
|
|
204
|
-
ret.stageVersion = Number(_v) || -1;
|
|
205
|
-
}
|
|
206
|
-
if (Number.isNaN(major) || Number.isNaN(minor) || Number.isNaN(patch) || Number.isNaN(ret.stageVersion)) {
|
|
207
|
-
throw new TypeError(`invalid version: ${version}`);
|
|
208
|
-
}
|
|
209
|
-
return ret;
|
|
210
|
-
}
|
|
211
|
-
function isUpdateJSON(json) {
|
|
212
|
-
const is2 = (j) => !!(j && j.minimumVersion && j.signature && j.size && j.version);
|
|
213
|
-
return is2(json) && is2(json?.beta);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export {
|
|
217
|
-
__require,
|
|
218
|
-
is,
|
|
219
|
-
getPathFromAppNameAsar,
|
|
220
|
-
getVersions,
|
|
221
|
-
loadNativeModuleFromEntry,
|
|
222
|
-
restartApp,
|
|
223
|
-
setAppUserModelId,
|
|
224
|
-
disableHWAccForWin7,
|
|
225
|
-
singleInstance,
|
|
226
|
-
setPortableAppDataPath,
|
|
227
|
-
waitAppReady,
|
|
228
|
-
getPaths,
|
|
229
|
-
unzipFile,
|
|
230
|
-
zipFile,
|
|
231
|
-
parseGithubCdnURL,
|
|
232
|
-
handleUnexpectedErrors,
|
|
233
|
-
parseVersion,
|
|
234
|
-
isUpdateJSON
|
|
235
|
-
};
|
package/dist/vite.d.ts
DELETED
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
import { Plugin } from 'vite';
|
|
2
|
-
import { ElectronSimpleOptions } from 'vite-plugin-electron/simple';
|
|
3
|
-
import { Promisable } from '@subframe7536/type-utils';
|
|
4
|
-
import { BuildOptions } from 'esbuild';
|
|
5
|
-
|
|
6
|
-
type UpdateInfo = {
|
|
7
|
-
signature: string;
|
|
8
|
-
minimumVersion: string;
|
|
9
|
-
version: string;
|
|
10
|
-
size: number;
|
|
11
|
-
};
|
|
12
|
-
type UpdateJSON = UpdateInfo & {
|
|
13
|
-
beta: UpdateInfo;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
type PKG = {
|
|
17
|
-
name: string;
|
|
18
|
-
version: string;
|
|
19
|
-
main: string;
|
|
20
|
-
};
|
|
21
|
-
type DistinguishedName = {
|
|
22
|
-
countryName?: string;
|
|
23
|
-
stateOrProvinceName?: string;
|
|
24
|
-
localityName?: string;
|
|
25
|
-
organizationName?: string;
|
|
26
|
-
organizationalUnitName?: string;
|
|
27
|
-
commonName?: string;
|
|
28
|
-
serialNumber?: string;
|
|
29
|
-
title?: string;
|
|
30
|
-
description?: string;
|
|
31
|
-
businessCategory?: string;
|
|
32
|
-
emailAddress?: string;
|
|
33
|
-
};
|
|
34
|
-
type BuildEntryOption = {
|
|
35
|
-
/**
|
|
36
|
-
* whether to minify
|
|
37
|
-
* @default isBuild
|
|
38
|
-
*/
|
|
39
|
-
minify?: boolean;
|
|
40
|
-
/**
|
|
41
|
-
* whether to generate sourcemap
|
|
42
|
-
* @default isBuild
|
|
43
|
-
*/
|
|
44
|
-
sourcemap?: boolean;
|
|
45
|
-
/**
|
|
46
|
-
* path to app entry output file
|
|
47
|
-
* @default 'dist-entry'
|
|
48
|
-
*/
|
|
49
|
-
entryOutputDirPath?: string;
|
|
50
|
-
/**
|
|
51
|
-
* path to app entry file
|
|
52
|
-
* @default 'electron/entry.ts'
|
|
53
|
-
*/
|
|
54
|
-
appEntryPath?: string;
|
|
55
|
-
/**
|
|
56
|
-
* esbuild path map of native modules in entry directory
|
|
57
|
-
*
|
|
58
|
-
* @default {}
|
|
59
|
-
* @example
|
|
60
|
-
* { db: './electron/native/db.ts' }
|
|
61
|
-
*/
|
|
62
|
-
nativeModuleEntryMap?: Record<string, string>;
|
|
63
|
-
/**
|
|
64
|
-
* custom options for esbuild
|
|
65
|
-
* ```ts
|
|
66
|
-
* // default options
|
|
67
|
-
* const options = {
|
|
68
|
-
* entryPoints: {
|
|
69
|
-
* entry: appEntryPath,
|
|
70
|
-
* ...moduleEntryMap,
|
|
71
|
-
* },
|
|
72
|
-
* bundle: true,
|
|
73
|
-
* platform: 'node',
|
|
74
|
-
* outdir: entryOutputDirPath,
|
|
75
|
-
* minify,
|
|
76
|
-
* sourcemap,
|
|
77
|
-
* entryNames: '[dir]/[name]',
|
|
78
|
-
* assetNames: '[dir]/[name]',
|
|
79
|
-
* external: ['electron', 'original-fs'],
|
|
80
|
-
* loader: {
|
|
81
|
-
* '.node': 'empty',
|
|
82
|
-
* },
|
|
83
|
-
* define: {
|
|
84
|
-
* __SIGNATURE_CERT__: JSON.stringify(cert),
|
|
85
|
-
* },
|
|
86
|
-
* }
|
|
87
|
-
* ```
|
|
88
|
-
*/
|
|
89
|
-
overrideEsbuildOptions?: BuildOptions;
|
|
90
|
-
/**
|
|
91
|
-
* resolve extra files on startup, such as `.node`
|
|
92
|
-
* @remark won't trigger will reload
|
|
93
|
-
*/
|
|
94
|
-
postBuild?: (args: {
|
|
95
|
-
/**
|
|
96
|
-
* get path from `entryOutputDirPath`
|
|
97
|
-
*/
|
|
98
|
-
getPathFromEntryOutputDir: (...paths: string[]) => string;
|
|
99
|
-
/**
|
|
100
|
-
* check exist and copy file to `entryOutputDirPath`
|
|
101
|
-
*
|
|
102
|
-
* if `to` absent, set to `basename(from)`
|
|
103
|
-
*
|
|
104
|
-
* if `skipIfExist` absent, skip copy if `to` exist
|
|
105
|
-
*/
|
|
106
|
-
copyToEntryOutputDir: (options: {
|
|
107
|
-
from: string;
|
|
108
|
-
to?: string;
|
|
109
|
-
/**
|
|
110
|
-
* skip copy if `to` exist
|
|
111
|
-
* @default true
|
|
112
|
-
*/
|
|
113
|
-
skipIfExist?: boolean;
|
|
114
|
-
}) => void;
|
|
115
|
-
}) => Promisable<void>;
|
|
116
|
-
};
|
|
117
|
-
type GeneratorOverrideFunctions = {
|
|
118
|
-
/**
|
|
119
|
-
* custom signature generate function
|
|
120
|
-
* @param buffer file buffer
|
|
121
|
-
* @param privateKey private key
|
|
122
|
-
* @param cert certificate string, **EOL must be '\n'**
|
|
123
|
-
* @param version current version
|
|
124
|
-
*/
|
|
125
|
-
generateSignature?: (buffer: Buffer, privateKey: string, cert: string, version: string) => string | Promise<string>;
|
|
126
|
-
/**
|
|
127
|
-
* custom generate version json function
|
|
128
|
-
* @param existingJson The existing JSON object.
|
|
129
|
-
* @param buffer file buffer
|
|
130
|
-
* @param signature generated signature
|
|
131
|
-
* @param version current version
|
|
132
|
-
* @param minVersion The minimum version
|
|
133
|
-
* @returns The updated version json
|
|
134
|
-
*/
|
|
135
|
-
generateVersionJson?: (existingJson: UpdateJSON, buffer: Buffer, signature: string, version: string, minVersion: string) => UpdateJSON | Promise<UpdateJSON>;
|
|
136
|
-
};
|
|
137
|
-
type ElectronUpdaterOptions = {
|
|
138
|
-
/**
|
|
139
|
-
* mini version of entry
|
|
140
|
-
* @default '0.0.0'
|
|
141
|
-
*/
|
|
142
|
-
minimumVersion?: string;
|
|
143
|
-
/**
|
|
144
|
-
* config for entry (app.asar)
|
|
145
|
-
*/
|
|
146
|
-
entry?: BuildEntryOption;
|
|
147
|
-
/**
|
|
148
|
-
* paths config
|
|
149
|
-
*/
|
|
150
|
-
paths?: {
|
|
151
|
-
/**
|
|
152
|
-
* Path to asar file
|
|
153
|
-
* @default `release/${app.name}.asar`
|
|
154
|
-
*/
|
|
155
|
-
asarOutputPath?: string;
|
|
156
|
-
/**
|
|
157
|
-
* Path to version info output, content is {@link UpdateJSON}
|
|
158
|
-
* @default `version.json`
|
|
159
|
-
*/
|
|
160
|
-
versionPath?: string;
|
|
161
|
-
/**
|
|
162
|
-
* Path to gzipped asar file
|
|
163
|
-
* @default `release/${app.name}-${version}.asar.gz`
|
|
164
|
-
*/
|
|
165
|
-
gzipPath?: string;
|
|
166
|
-
/**
|
|
167
|
-
* Path to electron build output
|
|
168
|
-
* @default `dist-electron`
|
|
169
|
-
*/
|
|
170
|
-
electronDistPath?: string;
|
|
171
|
-
/**
|
|
172
|
-
* Path to renderer build output
|
|
173
|
-
* @default `dist`
|
|
174
|
-
*/
|
|
175
|
-
rendererDistPath?: string;
|
|
176
|
-
};
|
|
177
|
-
/**
|
|
178
|
-
* signature config
|
|
179
|
-
*/
|
|
180
|
-
keys?: {
|
|
181
|
-
/**
|
|
182
|
-
* path to the pem file that contains private key
|
|
183
|
-
* if not ended with .pem, it will be appended
|
|
184
|
-
*
|
|
185
|
-
* **if `UPDATER_PK` is set, will read it instead of read from `privateKeyPath`**
|
|
186
|
-
* @default 'keys/private.pem'
|
|
187
|
-
*/
|
|
188
|
-
privateKeyPath?: string;
|
|
189
|
-
/**
|
|
190
|
-
* path to the pem file that contains public key
|
|
191
|
-
* if not ended with .pem, it will be appended
|
|
192
|
-
*
|
|
193
|
-
* **if `UPDATER_CERT` is set, will read it instead of read from `certPath`**
|
|
194
|
-
* @default 'keys/cert.pem'
|
|
195
|
-
*/
|
|
196
|
-
certPath?: string;
|
|
197
|
-
/**
|
|
198
|
-
* length of the key
|
|
199
|
-
* @default 2048
|
|
200
|
-
*/
|
|
201
|
-
keyLength?: number;
|
|
202
|
-
/**
|
|
203
|
-
* X509 certificate info
|
|
204
|
-
*
|
|
205
|
-
* only generate simple **self-signed** certificate **without extensions**
|
|
206
|
-
*/
|
|
207
|
-
certInfo?: {
|
|
208
|
-
/**
|
|
209
|
-
* the subject of the certificate
|
|
210
|
-
*
|
|
211
|
-
* @default { commonName: `${app.name}`, organizationName: `org.${app.name}` }
|
|
212
|
-
*/
|
|
213
|
-
subject?: DistinguishedName;
|
|
214
|
-
/**
|
|
215
|
-
* expire days of the certificate
|
|
216
|
-
*
|
|
217
|
-
* @default 3650
|
|
218
|
-
*/
|
|
219
|
-
days?: number;
|
|
220
|
-
};
|
|
221
|
-
overrideGenerator?: GeneratorOverrideFunctions;
|
|
222
|
-
};
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
type BytecodeOptions = {
|
|
226
|
-
/**
|
|
227
|
-
* strings that should be transformed
|
|
228
|
-
*/
|
|
229
|
-
protectedStrings?: string[];
|
|
230
|
-
/**
|
|
231
|
-
* Remember to set `sandbox: false` when creating window
|
|
232
|
-
*/
|
|
233
|
-
enablePreload?: boolean;
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
type MakeRequired<T, K extends keyof T> = Exclude<T, undefined> & {
|
|
237
|
-
[P in K]-?: T[P];
|
|
238
|
-
};
|
|
239
|
-
type ReplaceKey<T, Key extends keyof T, NewKey extends string> = Omit<T, Key> & {
|
|
240
|
-
[P in NewKey]: T[Key];
|
|
241
|
-
};
|
|
242
|
-
type MakeRequiredAndReplaceKey<T, K extends keyof T, NewKey extends string> = MakeRequired<ReplaceKey<T, K, NewKey>, NewKey>;
|
|
243
|
-
/**
|
|
244
|
-
* startup function for debug (see {@link https://github.com/electron-vite/electron-vite-vue/blob/main/vite.config.ts electron-vite-vue template})
|
|
245
|
-
* @example
|
|
246
|
-
* import { debugStartup, buildElectronPluginOptions } from 'electron-incremental-update/vite'
|
|
247
|
-
* const options = buildElectronPluginOptions({
|
|
248
|
-
* // ...
|
|
249
|
-
* main: {
|
|
250
|
-
* // ...
|
|
251
|
-
* startup: debugStartup
|
|
252
|
-
* },
|
|
253
|
-
* })
|
|
254
|
-
*/
|
|
255
|
-
declare function debugStartup(args: {
|
|
256
|
-
startup: (argv?: string[]) => Promise<void>;
|
|
257
|
-
reload: () => void;
|
|
258
|
-
}): void;
|
|
259
|
-
type ElectronWithUpdaterOptions = {
|
|
260
|
-
/**
|
|
261
|
-
* whether is in build mode
|
|
262
|
-
* ```ts
|
|
263
|
-
* export default defineConfig(({ command }) => {
|
|
264
|
-
* const isBuild = command === 'build'
|
|
265
|
-
* })
|
|
266
|
-
* ```
|
|
267
|
-
*/
|
|
268
|
-
isBuild: boolean;
|
|
269
|
-
/**
|
|
270
|
-
* manually setup package.json, read name, version and main
|
|
271
|
-
* ```ts
|
|
272
|
-
* import pkg from './package.json'
|
|
273
|
-
* ```
|
|
274
|
-
*/
|
|
275
|
-
pkg?: PKG;
|
|
276
|
-
/**
|
|
277
|
-
* whether to generate sourcemap
|
|
278
|
-
* @default !isBuild
|
|
279
|
-
*/
|
|
280
|
-
sourcemap?: boolean;
|
|
281
|
-
/**
|
|
282
|
-
* whether to minify the code
|
|
283
|
-
* @default isBuild
|
|
284
|
-
*/
|
|
285
|
-
minify?: boolean;
|
|
286
|
-
/**
|
|
287
|
-
* whether to generate bytecode
|
|
288
|
-
*
|
|
289
|
-
* **only support commonjs**
|
|
290
|
-
*
|
|
291
|
-
* only main process by default, if you want to use in preload script, please use `electronWithUpdater({ bytecode: { enablePreload: true } })` and set `sandbox: false` when creating window
|
|
292
|
-
*/
|
|
293
|
-
bytecode?: boolean | BytecodeOptions;
|
|
294
|
-
/**
|
|
295
|
-
* use NotBundle() plugin in main
|
|
296
|
-
* @default true
|
|
297
|
-
*/
|
|
298
|
-
useNotBundle?: boolean;
|
|
299
|
-
/**
|
|
300
|
-
* Whether to log parsed options
|
|
301
|
-
*
|
|
302
|
-
* to show certificate and private keys, set `logParsedOptions: { showKeys: true }`
|
|
303
|
-
*/
|
|
304
|
-
logParsedOptions?: boolean | {
|
|
305
|
-
showKeys: boolean;
|
|
306
|
-
};
|
|
307
|
-
/**
|
|
308
|
-
* main options
|
|
309
|
-
*/
|
|
310
|
-
main: MakeRequiredAndReplaceKey<ElectronSimpleOptions['main'], 'entry', 'files'>;
|
|
311
|
-
/**
|
|
312
|
-
* preload options
|
|
313
|
-
*/
|
|
314
|
-
preload: MakeRequiredAndReplaceKey<Exclude<ElectronSimpleOptions['preload'], undefined>, 'input', 'files'>;
|
|
315
|
-
/**
|
|
316
|
-
* updater options
|
|
317
|
-
*/
|
|
318
|
-
updater?: ElectronUpdaterOptions;
|
|
319
|
-
};
|
|
320
|
-
/**
|
|
321
|
-
* build options for `vite-plugin-electron/simple`
|
|
322
|
-
* - integrate with updater
|
|
323
|
-
* - only contains `main` and `preload` configs
|
|
324
|
-
* - remove old electron files
|
|
325
|
-
* - externalize dependencies
|
|
326
|
-
* - auto restart when entry file changes
|
|
327
|
-
* - other configs in {@link https://github.com/electron-vite/electron-vite-vue/blob/main/vite.config.ts electron-vite-vue template}
|
|
328
|
-
* - no `vite-plugin-electron-renderer` config
|
|
329
|
-
*
|
|
330
|
-
* you can override all the configs
|
|
331
|
-
*
|
|
332
|
-
* **Limitation**: entry file change cannot trigger auto restart
|
|
333
|
-
*
|
|
334
|
-
* @example
|
|
335
|
-
* import { defineConfig } from 'vite'
|
|
336
|
-
* import { debugStartup, electronWithUpdater } from 'electron-incremental-update/vite'
|
|
337
|
-
* import pkg from './package.json'
|
|
338
|
-
*
|
|
339
|
-
* export default defineConfig(async ({ command }) => {
|
|
340
|
-
* const isBuild = command === 'build'
|
|
341
|
-
* return {
|
|
342
|
-
* plugins: [
|
|
343
|
-
* electronWithUpdater({
|
|
344
|
-
* pkg,
|
|
345
|
-
* isBuild,
|
|
346
|
-
* logParsedOptions: true,
|
|
347
|
-
* main: {
|
|
348
|
-
* files: ['./electron/main/index.ts', './electron/main/worker.ts'],
|
|
349
|
-
* // see https://github.com/electron-vite/electron-vite-vue/blob/85ed267c4851bf59f32888d766c0071661d4b94c/vite.config.ts#L22-L28
|
|
350
|
-
* onstart: debugStartup,
|
|
351
|
-
* },
|
|
352
|
-
* preload: {
|
|
353
|
-
* files: './electron/preload/index.ts',
|
|
354
|
-
* },
|
|
355
|
-
* updater: {
|
|
356
|
-
* // options
|
|
357
|
-
* }
|
|
358
|
-
* }),
|
|
359
|
-
* ],
|
|
360
|
-
* server: process.env.VSCODE_DEBUG && (() => {
|
|
361
|
-
* const url = new URL(pkg.debug.env.VITE_DEV_SERVER_URL)
|
|
362
|
-
* return {
|
|
363
|
-
* host: url.hostname,
|
|
364
|
-
* port: +url.port,
|
|
365
|
-
* }
|
|
366
|
-
* })(),
|
|
367
|
-
* }
|
|
368
|
-
* })
|
|
369
|
-
*/
|
|
370
|
-
declare function electronWithUpdater(options: ElectronWithUpdaterOptions): Promise<(Plugin<any> | Promise<Plugin<any>[]> | undefined)[] | null>;
|
|
371
|
-
|
|
372
|
-
export { type ElectronWithUpdaterOptions, debugStartup, electronWithUpdater };
|