electron-updater 4.3.5 → 4.3.9
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/LICENSE +22 -0
- package/out/AppAdapter.js +19 -28
- package/out/AppAdapter.js.map +1 -1
- package/out/AppImageUpdater.js +103 -173
- package/out/AppImageUpdater.js.map +1 -1
- package/out/AppUpdater.d.ts +1 -3
- package/out/AppUpdater.js +517 -773
- package/out/AppUpdater.js.map +1 -1
- package/out/BaseUpdater.js +79 -103
- package/out/BaseUpdater.js.map +1 -1
- package/out/DownloadedUpdateHelper.js +150 -224
- package/out/DownloadedUpdateHelper.js.map +1 -1
- package/out/ElectronAppAdapter.js +35 -63
- package/out/ElectronAppAdapter.js.map +1 -1
- package/out/MacUpdater.d.ts +1 -1
- package/out/MacUpdater.js +132 -182
- package/out/MacUpdater.js.map +1 -1
- package/out/NoOpLogger.d.ts +6 -0
- package/out/NoOpLogger.js +19 -0
- package/out/NoOpLogger.js.map +1 -0
- package/out/NsisUpdater.js +199 -331
- package/out/NsisUpdater.js.map +1 -1
- package/out/differentialDownloader/DataSplitter.js +180 -252
- package/out/differentialDownloader/DataSplitter.js.map +1 -1
- package/out/differentialDownloader/DifferentialDownloader.d.ts +3 -0
- package/out/differentialDownloader/DifferentialDownloader.js +243 -308
- package/out/differentialDownloader/DifferentialDownloader.js.map +1 -1
- package/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader.js +29 -65
- package/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader.js.map +1 -1
- package/out/differentialDownloader/GenericDifferentialDownloader.js +7 -21
- package/out/differentialDownloader/GenericDifferentialDownloader.js.map +1 -1
- package/out/differentialDownloader/ProgressDifferentialDownloadCallbackTransform.d.ts +32 -0
- package/out/differentialDownloader/ProgressDifferentialDownloadCallbackTransform.js +90 -0
- package/out/differentialDownloader/ProgressDifferentialDownloadCallbackTransform.js.map +1 -0
- package/out/differentialDownloader/downloadPlanBuilder.js +99 -124
- package/out/differentialDownloader/downloadPlanBuilder.js.map +1 -1
- package/out/differentialDownloader/multipleRangeDownloader.js +99 -148
- package/out/differentialDownloader/multipleRangeDownloader.js.map +1 -1
- package/out/electronHttpExecutor.js +73 -106
- package/out/electronHttpExecutor.js.map +1 -1
- package/out/event.d.ts +35 -0
- package/out/event.js +39 -0
- package/out/event.js.map +1 -0
- package/out/log.d.ts +11 -0
- package/out/log.js +19 -0
- package/out/log.js.map +1 -0
- package/out/main.d.ts +1 -4
- package/out/main.js +60 -212
- package/out/main.js.map +1 -1
- package/out/providerFactory.js +49 -105
- package/out/providerFactory.js.map +1 -1
- package/out/providers/BintrayProvider.d.ts +2 -2
- package/out/providers/BintrayProvider.js +40 -95
- package/out/providers/BintrayProvider.js.map +1 -1
- package/out/providers/GenericProvider.d.ts +2 -2
- package/out/providers/GenericProvider.js +46 -80
- package/out/providers/GenericProvider.js.map +1 -1
- package/out/providers/GitHubProvider.d.ts +2 -2
- package/out/providers/GitHubProvider.js +122 -201
- package/out/providers/GitHubProvider.js.map +1 -1
- package/out/providers/PrivateGitHubProvider.js +87 -165
- package/out/providers/PrivateGitHubProvider.js.map +1 -1
- package/out/providers/Provider.js +122 -173
- package/out/providers/Provider.js.map +1 -1
- package/out/util.d.ts +5 -0
- package/out/util.js +42 -0
- package/out/util.js.map +1 -0
- package/out/windowsExecutableCodeSignatureVerifier.js +99 -139
- package/out/windowsExecutableCodeSignatureVerifier.js.map +1 -1
- package/package.json +33 -31
package/out/MacUpdater.js
CHANGED
|
@@ -1,190 +1,140 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.MacUpdater = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return data;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
var _fs = require("fs");
|
|
29
|
-
|
|
30
|
-
function _http() {
|
|
31
|
-
const data = require("http");
|
|
32
|
-
|
|
33
|
-
_http = function () {
|
|
34
|
-
return data;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
return data;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function _AppUpdater() {
|
|
41
|
-
const data = require("./AppUpdater");
|
|
42
|
-
|
|
43
|
-
_AppUpdater = function () {
|
|
44
|
-
return data;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
return data;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function _Provider() {
|
|
51
|
-
const data = require("./providers/Provider");
|
|
52
|
-
|
|
53
|
-
_Provider = function () {
|
|
54
|
-
return data;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
return data;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
class MacUpdater extends _AppUpdater().AppUpdater {
|
|
61
|
-
constructor(options, app) {
|
|
62
|
-
super(options, app);
|
|
63
|
-
this.nativeUpdater = require("electron").autoUpdater;
|
|
64
|
-
this.updateInfoForPendingUpdateDownloadedEvent = null;
|
|
65
|
-
this.nativeUpdater.on("error", it => {
|
|
66
|
-
this._logger.warn(it);
|
|
67
|
-
|
|
68
|
-
this.emit("error", it);
|
|
69
|
-
});
|
|
70
|
-
this.nativeUpdater.on("update-downloaded", () => {
|
|
71
|
-
const updateInfo = this.updateInfoForPendingUpdateDownloadedEvent;
|
|
72
|
-
this.updateInfoForPendingUpdateDownloadedEvent = null;
|
|
73
|
-
this.dispatchUpdateDownloaded(updateInfo);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
doDownloadUpdate(downloadUpdateOptions) {
|
|
78
|
-
this.updateInfoForPendingUpdateDownloadedEvent = null;
|
|
79
|
-
const files = downloadUpdateOptions.updateInfoAndProvider.provider.resolveFiles(downloadUpdateOptions.updateInfoAndProvider.info);
|
|
80
|
-
const zipFileInfo = (0, _Provider().findFile)(files, "zip", ["pkg", "dmg"]);
|
|
81
|
-
|
|
82
|
-
if (zipFileInfo == null) {
|
|
83
|
-
throw (0, _builderUtilRuntime().newError)(`ZIP file not provided: ${(0, _builderUtilRuntime().safeStringifyJson)(files)}`, "ERR_UPDATER_ZIP_FILE_NOT_FOUND");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const server = (0, _http().createServer)();
|
|
87
|
-
server.on("close", () => {
|
|
88
|
-
this._logger.info(`Proxy server for native Squirrel.Mac is closed (was started to download ${zipFileInfo.url.href})`);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
function getServerUrl() {
|
|
92
|
-
const address = server.address();
|
|
93
|
-
return `http://127.0.0.1:${address.port}`;
|
|
4
|
+
const builder_util_runtime_1 = require("builder-util-runtime");
|
|
5
|
+
const fs_extra_1 = require("fs-extra");
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const http_1 = require("http");
|
|
8
|
+
const AppUpdater_1 = require("./AppUpdater");
|
|
9
|
+
const Provider_1 = require("./providers/Provider");
|
|
10
|
+
class MacUpdater extends AppUpdater_1.AppUpdater {
|
|
11
|
+
constructor(options, app) {
|
|
12
|
+
super(options, app);
|
|
13
|
+
this.nativeUpdater = require("electron").autoUpdater;
|
|
14
|
+
this.squirrelDownloadedUpdate = false;
|
|
15
|
+
this.nativeUpdater.on("error", it => {
|
|
16
|
+
this._logger.warn(it);
|
|
17
|
+
this.emit("error", it);
|
|
18
|
+
});
|
|
19
|
+
this.nativeUpdater.on("update-downloaded", () => {
|
|
20
|
+
this.squirrelDownloadedUpdate = true;
|
|
21
|
+
});
|
|
94
22
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
23
|
+
doDownloadUpdate(downloadUpdateOptions) {
|
|
24
|
+
let files = downloadUpdateOptions.updateInfoAndProvider.provider.resolveFiles(downloadUpdateOptions.updateInfoAndProvider.info);
|
|
25
|
+
// Allow arm64 macs to install universal or rosetta2(x64) - https://github.com/electron-userland/electron-builder/pull/5524
|
|
26
|
+
const isArm64 = (file) => file.url.pathname.includes("arm64");
|
|
27
|
+
if (files.some(isArm64)) {
|
|
28
|
+
files = files.filter(file => (process.arch === "arm64") === isArm64(file));
|
|
29
|
+
}
|
|
30
|
+
const zipFileInfo = Provider_1.findFile(files, "zip", ["pkg", "dmg"]);
|
|
31
|
+
if (zipFileInfo == null) {
|
|
32
|
+
throw builder_util_runtime_1.newError(`ZIP file not provided: ${builder_util_runtime_1.safeStringifyJson(files)}`, "ERR_UPDATER_ZIP_FILE_NOT_FOUND");
|
|
33
|
+
}
|
|
34
|
+
const server = http_1.createServer();
|
|
35
|
+
server.on("close", () => {
|
|
36
|
+
this._logger.info(`Proxy server for native Squirrel.Mac is closed (was started to download ${zipFileInfo.url.href})`);
|
|
37
|
+
});
|
|
38
|
+
function getServerUrl() {
|
|
39
|
+
const address = server.address();
|
|
40
|
+
return `http://127.0.0.1:${address.port}`;
|
|
110
41
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
"Content-Type": "application/json",
|
|
124
|
-
"Content-Length": data.length
|
|
125
|
-
});
|
|
126
|
-
response.end(data);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (!requestUrl.startsWith(fileUrl)) {
|
|
131
|
-
this._logger.warn(`${requestUrl} requested, but not supported`);
|
|
132
|
-
|
|
133
|
-
response.writeHead(404);
|
|
134
|
-
response.end();
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
this._logger.info(`${fileUrl} requested by Squirrel.Mac, pipe ${downloadedFile}`);
|
|
139
|
-
|
|
140
|
-
let errorOccurred = false;
|
|
141
|
-
response.on("finish", () => {
|
|
142
|
-
try {
|
|
143
|
-
setImmediate(() => server.close());
|
|
144
|
-
} finally {
|
|
145
|
-
if (!errorOccurred) {
|
|
146
|
-
this.nativeUpdater.removeListener("error", reject);
|
|
147
|
-
resolve([]);
|
|
42
|
+
return this.executeDownload({
|
|
43
|
+
fileExtension: "zip",
|
|
44
|
+
fileInfo: zipFileInfo,
|
|
45
|
+
downloadUpdateOptions,
|
|
46
|
+
task: (destinationFile, downloadOptions) => {
|
|
47
|
+
return this.httpExecutor.download(zipFileInfo.url, destinationFile, downloadOptions);
|
|
48
|
+
},
|
|
49
|
+
done: async (event) => {
|
|
50
|
+
const downloadedFile = event.downloadedFile;
|
|
51
|
+
let updateFileSize = zipFileInfo.info.size;
|
|
52
|
+
if (updateFileSize == null) {
|
|
53
|
+
updateFileSize = (await fs_extra_1.stat(downloadedFile)).size;
|
|
148
54
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
55
|
+
return await new Promise((resolve, reject) => {
|
|
56
|
+
// insecure random is ok
|
|
57
|
+
const fileUrl = `/${Date.now()}-${Math.floor(Math.random() * 9999)}.zip`;
|
|
58
|
+
server.on("request", (request, response) => {
|
|
59
|
+
const requestUrl = request.url;
|
|
60
|
+
this._logger.info(`${requestUrl} requested`);
|
|
61
|
+
if (requestUrl === "/") {
|
|
62
|
+
const data = Buffer.from(`{ "url": "${getServerUrl()}${fileUrl}" }`);
|
|
63
|
+
response.writeHead(200, { "Content-Type": "application/json", "Content-Length": data.length });
|
|
64
|
+
response.end(data);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!requestUrl.startsWith(fileUrl)) {
|
|
68
|
+
this._logger.warn(`${requestUrl} requested, but not supported`);
|
|
69
|
+
response.writeHead(404);
|
|
70
|
+
response.end();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this._logger.info(`${fileUrl} requested by Squirrel.Mac, pipe ${downloadedFile}`);
|
|
74
|
+
let errorOccurred = false;
|
|
75
|
+
response.on("finish", () => {
|
|
76
|
+
try {
|
|
77
|
+
setImmediate(() => server.close());
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
if (!errorOccurred) {
|
|
81
|
+
this.nativeUpdater.removeListener("error", reject);
|
|
82
|
+
resolve([]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
const readStream = fs_1.createReadStream(downloadedFile);
|
|
87
|
+
readStream.on("error", error => {
|
|
88
|
+
try {
|
|
89
|
+
response.end();
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
this._logger.warn(`cannot end response: ${e}`);
|
|
93
|
+
}
|
|
94
|
+
errorOccurred = true;
|
|
95
|
+
this.nativeUpdater.removeListener("error", reject);
|
|
96
|
+
reject(new Error(`Cannot pipe "${downloadedFile}": ${error}`));
|
|
97
|
+
});
|
|
98
|
+
response.writeHead(200, {
|
|
99
|
+
"Content-Type": "application/zip",
|
|
100
|
+
"Content-Length": updateFileSize,
|
|
101
|
+
});
|
|
102
|
+
readStream.pipe(response);
|
|
103
|
+
});
|
|
104
|
+
server.listen(0, "127.0.0.1", () => {
|
|
105
|
+
this.nativeUpdater.setFeedURL({
|
|
106
|
+
url: getServerUrl(),
|
|
107
|
+
headers: { "Cache-Control": "no-cache" },
|
|
108
|
+
});
|
|
109
|
+
// The update has been downloaded and is ready to be served to Squirrel
|
|
110
|
+
this.dispatchUpdateDownloaded(event);
|
|
111
|
+
if (this.autoInstallOnAppQuit) {
|
|
112
|
+
this.nativeUpdater.once("error", reject);
|
|
113
|
+
// This will trigger fetching and installing the file on Squirrel side
|
|
114
|
+
this.nativeUpdater.checkForUpdates();
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
resolve([]);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
quitAndInstall() {
|
|
125
|
+
if (this.squirrelDownloadedUpdate) {
|
|
126
|
+
// Update already fetched by Squirrel, it's ready to install
|
|
127
|
+
this.nativeUpdater.quitAndInstall();
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// Quit and install as soon as Squirrel get the update
|
|
131
|
+
this.nativeUpdater.on("update-downloaded", () => {
|
|
132
|
+
this.nativeUpdater.quitAndInstall();
|
|
175
133
|
});
|
|
176
|
-
|
|
134
|
+
// And trigger the update
|
|
177
135
|
this.nativeUpdater.checkForUpdates();
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
quitAndInstall() {
|
|
185
|
-
this.nativeUpdater.quitAndInstall();
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
} exports.MacUpdater = MacUpdater;
|
|
189
|
-
// __ts-babel@6.0.4
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.MacUpdater = MacUpdater;
|
|
190
140
|
//# sourceMappingURL=MacUpdater.js.map
|
package/out/MacUpdater.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MacUpdater.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllPublishOptions, newError, safeStringifyJson } from \"builder-util-runtime\"\nimport { stat } from \"fs-extra\"\nimport { createReadStream } from \"fs\"\nimport { createServer, IncomingMessage, ServerResponse } from \"http\"\nimport { AddressInfo } from \"net\"\nimport { AppAdapter } from \"./AppAdapter\"\nimport { AppUpdater, DownloadUpdateOptions } from \"./AppUpdater\"\nimport { UpdateDownloadedEvent } from \"./main\"\nimport { findFile } from \"./providers/Provider\"\nimport AutoUpdater = Electron.AutoUpdater\n\nexport class MacUpdater extends AppUpdater {\n private readonly nativeUpdater: AutoUpdater = require(\"electron\").autoUpdater\n\n private updateInfoForPendingUpdateDownloadedEvent: UpdateDownloadedEvent | null = null\n\n constructor(options?: AllPublishOptions, app?: AppAdapter) {\n super(options, app)\n\n this.nativeUpdater.on(\"error\", it => {\n this._logger.warn(it)\n this.emit(\"error\", it)\n })\n this.nativeUpdater.on(\"update-downloaded\", () => {\n const updateInfo = this.updateInfoForPendingUpdateDownloadedEvent\n this.updateInfoForPendingUpdateDownloadedEvent = null\n this.dispatchUpdateDownloaded(updateInfo!!)\n })\n }\n\n protected doDownloadUpdate(downloadUpdateOptions: DownloadUpdateOptions): Promise<Array<string>> {\n this.updateInfoForPendingUpdateDownloadedEvent = null\n\n const files = downloadUpdateOptions.updateInfoAndProvider.provider.resolveFiles(downloadUpdateOptions.updateInfoAndProvider.info)\n const zipFileInfo = findFile(files, \"zip\", [\"pkg\", \"dmg\"])\n if (zipFileInfo == null) {\n throw newError(`ZIP file not provided: ${safeStringifyJson(files)}`, \"ERR_UPDATER_ZIP_FILE_NOT_FOUND\")\n }\n\n const server = createServer()\n server.on(\"close\", () => {\n this._logger.info(`Proxy server for native Squirrel.Mac is closed (was started to download ${zipFileInfo.url.href})`)\n })\n\n function getServerUrl(): string {\n const address = server.address() as AddressInfo\n return `http://127.0.0.1:${address.port}`\n }\n\n return this.executeDownload({\n fileExtension: \"zip\",\n fileInfo: zipFileInfo,\n downloadUpdateOptions,\n task: (destinationFile, downloadOptions) => {\n return this.httpExecutor.download(zipFileInfo.url, destinationFile, downloadOptions)\n },\n done: async event => {\n const downloadedFile = event.downloadedFile\n this.updateInfoForPendingUpdateDownloadedEvent = event\n let updateFileSize = zipFileInfo.info.size\n if (updateFileSize == null) {\n updateFileSize = (await stat(downloadedFile)).size\n }\n\n return await new Promise<Array<string>>((resolve, reject) => {\n // insecure random is ok\n const fileUrl = \"/\" + Date.now() + \"-\" + Math.floor(Math.random() * 9999) + \".zip\"\n server.on(\"request\", (request: IncomingMessage, response: ServerResponse) => {\n const requestUrl = request.url!!\n this._logger.info(`${requestUrl} requested`)\n if (requestUrl === \"/\") {\n const data = Buffer.from(`{ \"url\": \"${getServerUrl()}${fileUrl}\" }`)\n response.writeHead(200, {\"Content-Type\": \"application/json\", \"Content-Length\": data.length})\n response.end(data)\n return\n }\n\n if (!requestUrl.startsWith(fileUrl)) {\n this._logger.warn(`${requestUrl} requested, but not supported`)\n response.writeHead(404)\n response.end()\n return\n }\n\n this._logger.info(`${fileUrl} requested by Squirrel.Mac, pipe ${downloadedFile}`)\n\n let errorOccurred = false\n response.on(\"finish\", () => {\n try {\n setImmediate(() => server.close())\n }\n finally {\n if (!errorOccurred) {\n this.nativeUpdater.removeListener(\"error\", reject)\n resolve([])\n }\n }\n })\n\n const readStream = createReadStream(downloadedFile)\n readStream.on(\"error\", error => {\n try {\n response.end()\n }\n catch (e) {\n this._logger.warn(`cannot end response: ${e}`)\n }\n errorOccurred = true\n this.nativeUpdater.removeListener(\"error\", reject)\n reject(new Error(`Cannot pipe \"${downloadedFile}\": ${error}`))\n })\n\n response.writeHead(200, {\n \"Content-Type\": \"application/zip\",\n \"Content-Length\": updateFileSize,\n })\n readStream.pipe(response)\n })\n server.listen(0, \"127.0.0.1\", () => {\n this.nativeUpdater.setFeedURL({\n url: getServerUrl(),\n headers: {\"Cache-Control\": \"no-cache\"},\n })\n\n this.nativeUpdater.once(\"error\", reject)\n this.nativeUpdater.checkForUpdates()\n })\n })\n }\n })\n }\n\n quitAndInstall(): void {\n this.nativeUpdater.quitAndInstall()\n }\n}"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"MacUpdater.js","sourceRoot":"","sources":["../src/MacUpdater.ts"],"names":[],"mappings":";;;AAAA,+DAAqF;AACrF,uCAA+B;AAC/B,2BAAqC;AACrC,+BAAoE;AAGpE,6CAAgE;AAEhE,mDAA+C;AAG/C,MAAa,UAAW,SAAQ,uBAAU;IAKxC,YAAY,OAA2B,EAAE,GAAgB;QACvD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QALJ,kBAAa,GAAgB,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAA;QAErE,6BAAwB,GAAG,KAAK,CAAA;QAKtC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC9C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC;IAES,gBAAgB,CAAC,qBAA4C;QACrE,IAAI,KAAK,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAE/H,2HAA2H;QAC3H,MAAM,OAAO,GAAG,CAAC,IAA4B,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACrF,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACvB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;SAC3E;QAED,MAAM,WAAW,GAAG,mBAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAC1D,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,MAAM,+BAAQ,CAAC,0BAA0B,wCAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAA;SACvG;QAED,MAAM,MAAM,GAAG,mBAAY,EAAE,CAAA;QAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,2EAA2E,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;QACvH,CAAC,CAAC,CAAA;QAEF,SAAS,YAAY;YACnB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAA;YAC/C,OAAO,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAA;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC;YAC1B,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,WAAW;YACrB,qBAAqB;YACrB,IAAI,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE;gBACzC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,CAAC,CAAA;YACtF,CAAC;YACD,IAAI,EAAE,KAAK,EAAC,KAAK,EAAC,EAAE;gBAClB,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAA;gBAC3C,IAAI,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAA;gBAC1C,IAAI,cAAc,IAAI,IAAI,EAAE;oBAC1B,cAAc,GAAG,CAAC,MAAM,eAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAA;iBACnD;gBAED,OAAO,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1D,wBAAwB;oBACxB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;oBACxE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAwB,EAAE,QAAwB,EAAE,EAAE;wBAC1E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAI,CAAA;wBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,YAAY,CAAC,CAAA;wBAC5C,IAAI,UAAU,KAAK,GAAG,EAAE;4BACtB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,GAAG,OAAO,KAAK,CAAC,CAAA;4BACpE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;4BAC9F,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;4BAClB,OAAM;yBACP;wBAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;4BACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,+BAA+B,CAAC,CAAA;4BAC/D,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;4BACvB,QAAQ,CAAC,GAAG,EAAE,CAAA;4BACd,OAAM;yBACP;wBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,oCAAoC,cAAc,EAAE,CAAC,CAAA;wBAEjF,IAAI,aAAa,GAAG,KAAK,CAAA;wBACzB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;4BACzB,IAAI;gCACF,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;6BACnC;oCAAS;gCACR,IAAI,CAAC,aAAa,EAAE;oCAClB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oCAClD,OAAO,CAAC,EAAE,CAAC,CAAA;iCACZ;6BACF;wBACH,CAAC,CAAC,CAAA;wBAEF,MAAM,UAAU,GAAG,qBAAgB,CAAC,cAAc,CAAC,CAAA;wBACnD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;4BAC7B,IAAI;gCACF,QAAQ,CAAC,GAAG,EAAE,CAAA;6BACf;4BAAC,OAAO,CAAC,EAAE;gCACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAA;6BAC/C;4BACD,aAAa,GAAG,IAAI,CAAA;4BACpB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;4BAClD,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,cAAc,MAAM,KAAK,EAAE,CAAC,CAAC,CAAA;wBAChE,CAAC,CAAC,CAAA;wBAEF,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;4BACtB,cAAc,EAAE,iBAAiB;4BACjC,gBAAgB,EAAE,cAAc;yBACjC,CAAC,CAAA;wBACF,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAC3B,CAAC,CAAC,CAAA;oBACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;wBACjC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;4BAC5B,GAAG,EAAE,YAAY,EAAE;4BACnB,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE;yBACzC,CAAC,CAAA;wBAEF,uEAAuE;wBACvE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;wBAEpC,IAAI,IAAI,CAAC,oBAAoB,EAAE;4BAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;4BACxC,sEAAsE;4BACtE,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAA;yBACrC;6BAAM;4BACL,OAAO,CAAC,EAAE,CAAC,CAAA;yBACZ;oBACH,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,4DAA4D;YAC5D,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAA;SACpC;aAAM;YACL,sDAAsD;YACtD,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBAC9C,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAA;YACrC,CAAC,CAAC,CAAA;YAEF,yBAAyB;YACzB,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAA;SACrC;IACH,CAAC;CACF;AA/ID,gCA+IC","sourcesContent":["import { AllPublishOptions, newError, safeStringifyJson } from \"builder-util-runtime\"\nimport { stat } from \"fs-extra\"\nimport { createReadStream } from \"fs\"\nimport { createServer, IncomingMessage, ServerResponse } from \"http\"\nimport { AddressInfo } from \"net\"\nimport { AppAdapter } from \"./AppAdapter\"\nimport { AppUpdater, DownloadUpdateOptions } from \"./AppUpdater\"\nimport { ResolvedUpdateFileInfo } from \"./main\"\nimport { findFile } from \"./providers/Provider\"\nimport AutoUpdater = Electron.AutoUpdater\n\nexport class MacUpdater extends AppUpdater {\n private readonly nativeUpdater: AutoUpdater = require(\"electron\").autoUpdater\n\n private squirrelDownloadedUpdate = false\n\n constructor(options?: AllPublishOptions, app?: AppAdapter) {\n super(options, app)\n\n this.nativeUpdater.on(\"error\", it => {\n this._logger.warn(it)\n this.emit(\"error\", it)\n })\n this.nativeUpdater.on(\"update-downloaded\", () => {\n this.squirrelDownloadedUpdate = true\n })\n }\n\n protected doDownloadUpdate(downloadUpdateOptions: DownloadUpdateOptions): Promise<Array<string>> {\n let files = downloadUpdateOptions.updateInfoAndProvider.provider.resolveFiles(downloadUpdateOptions.updateInfoAndProvider.info)\n\n // Allow arm64 macs to install universal or rosetta2(x64) - https://github.com/electron-userland/electron-builder/pull/5524\n const isArm64 = (file: ResolvedUpdateFileInfo) => file.url.pathname.includes(\"arm64\")\n if (files.some(isArm64)) {\n files = files.filter(file => (process.arch === \"arm64\") === isArm64(file))\n }\n\n const zipFileInfo = findFile(files, \"zip\", [\"pkg\", \"dmg\"])\n if (zipFileInfo == null) {\n throw newError(`ZIP file not provided: ${safeStringifyJson(files)}`, \"ERR_UPDATER_ZIP_FILE_NOT_FOUND\")\n }\n\n const server = createServer()\n server.on(\"close\", () => {\n this._logger.info(`Proxy server for native Squirrel.Mac is closed (was started to download ${zipFileInfo.url.href})`)\n })\n\n function getServerUrl(): string {\n const address = server.address() as AddressInfo\n return `http://127.0.0.1:${address.port}`\n }\n\n return this.executeDownload({\n fileExtension: \"zip\",\n fileInfo: zipFileInfo,\n downloadUpdateOptions,\n task: (destinationFile, downloadOptions) => {\n return this.httpExecutor.download(zipFileInfo.url, destinationFile, downloadOptions)\n },\n done: async event => {\n const downloadedFile = event.downloadedFile\n let updateFileSize = zipFileInfo.info.size\n if (updateFileSize == null) {\n updateFileSize = (await stat(downloadedFile)).size\n }\n\n return await new Promise<Array<string>>((resolve, reject) => {\n // insecure random is ok\n const fileUrl = `/${Date.now()}-${Math.floor(Math.random() * 9999)}.zip`\n server.on(\"request\", (request: IncomingMessage, response: ServerResponse) => {\n const requestUrl = request.url!\n this._logger.info(`${requestUrl} requested`)\n if (requestUrl === \"/\") {\n const data = Buffer.from(`{ \"url\": \"${getServerUrl()}${fileUrl}\" }`)\n response.writeHead(200, { \"Content-Type\": \"application/json\", \"Content-Length\": data.length })\n response.end(data)\n return\n }\n\n if (!requestUrl.startsWith(fileUrl)) {\n this._logger.warn(`${requestUrl} requested, but not supported`)\n response.writeHead(404)\n response.end()\n return\n }\n\n this._logger.info(`${fileUrl} requested by Squirrel.Mac, pipe ${downloadedFile}`)\n\n let errorOccurred = false\n response.on(\"finish\", () => {\n try {\n setImmediate(() => server.close())\n } finally {\n if (!errorOccurred) {\n this.nativeUpdater.removeListener(\"error\", reject)\n resolve([])\n }\n }\n })\n\n const readStream = createReadStream(downloadedFile)\n readStream.on(\"error\", error => {\n try {\n response.end()\n } catch (e) {\n this._logger.warn(`cannot end response: ${e}`)\n }\n errorOccurred = true\n this.nativeUpdater.removeListener(\"error\", reject)\n reject(new Error(`Cannot pipe \"${downloadedFile}\": ${error}`))\n })\n\n response.writeHead(200, {\n \"Content-Type\": \"application/zip\",\n \"Content-Length\": updateFileSize,\n })\n readStream.pipe(response)\n })\n server.listen(0, \"127.0.0.1\", () => {\n this.nativeUpdater.setFeedURL({\n url: getServerUrl(),\n headers: { \"Cache-Control\": \"no-cache\" },\n })\n\n // The update has been downloaded and is ready to be served to Squirrel\n this.dispatchUpdateDownloaded(event)\n\n if (this.autoInstallOnAppQuit) {\n this.nativeUpdater.once(\"error\", reject)\n // This will trigger fetching and installing the file on Squirrel side\n this.nativeUpdater.checkForUpdates()\n } else {\n resolve([])\n }\n })\n })\n },\n })\n }\n\n quitAndInstall(): void {\n if (this.squirrelDownloadedUpdate) {\n // Update already fetched by Squirrel, it's ready to install\n this.nativeUpdater.quitAndInstall()\n } else {\n // Quit and install as soon as Squirrel get the update\n this.nativeUpdater.on(\"update-downloaded\", () => {\n this.nativeUpdater.quitAndInstall()\n })\n\n // And trigger the update\n this.nativeUpdater.checkForUpdates()\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoOpLogger = void 0;
|
|
4
|
+
class NoOpLogger {
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6
|
+
info(message) {
|
|
7
|
+
// ignore
|
|
8
|
+
}
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
+
warn(message) {
|
|
11
|
+
// ignore
|
|
12
|
+
}
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
14
|
+
error(message) {
|
|
15
|
+
// ignore
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.NoOpLogger = NoOpLogger;
|
|
19
|
+
//# sourceMappingURL=NoOpLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoOpLogger.js","sourceRoot":"","sources":["../src/NoOpLogger.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACrB,6DAA6D;IAC7D,IAAI,CAAC,OAAa;QAChB,SAAS;IACX,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,OAAa;QAChB,SAAS;IACX,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,OAAa;QACjB,SAAS;IACX,CAAC;CACF;AAfD,gCAeC","sourcesContent":["import { Logger } from \"./main\"\n\nexport class NoOpLogger implements Logger {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n info(message?: any) {\n // ignore\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n warn(message?: any) {\n // ignore\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n error(message?: any) {\n // ignore\n }\n}\n"]}
|