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.
Files changed (70) hide show
  1. package/LICENSE +22 -0
  2. package/out/AppAdapter.js +19 -28
  3. package/out/AppAdapter.js.map +1 -1
  4. package/out/AppImageUpdater.js +103 -173
  5. package/out/AppImageUpdater.js.map +1 -1
  6. package/out/AppUpdater.d.ts +1 -3
  7. package/out/AppUpdater.js +517 -773
  8. package/out/AppUpdater.js.map +1 -1
  9. package/out/BaseUpdater.js +79 -103
  10. package/out/BaseUpdater.js.map +1 -1
  11. package/out/DownloadedUpdateHelper.js +150 -224
  12. package/out/DownloadedUpdateHelper.js.map +1 -1
  13. package/out/ElectronAppAdapter.js +35 -63
  14. package/out/ElectronAppAdapter.js.map +1 -1
  15. package/out/MacUpdater.d.ts +1 -1
  16. package/out/MacUpdater.js +132 -182
  17. package/out/MacUpdater.js.map +1 -1
  18. package/out/NoOpLogger.d.ts +6 -0
  19. package/out/NoOpLogger.js +19 -0
  20. package/out/NoOpLogger.js.map +1 -0
  21. package/out/NsisUpdater.js +199 -331
  22. package/out/NsisUpdater.js.map +1 -1
  23. package/out/differentialDownloader/DataSplitter.js +180 -252
  24. package/out/differentialDownloader/DataSplitter.js.map +1 -1
  25. package/out/differentialDownloader/DifferentialDownloader.d.ts +3 -0
  26. package/out/differentialDownloader/DifferentialDownloader.js +243 -308
  27. package/out/differentialDownloader/DifferentialDownloader.js.map +1 -1
  28. package/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader.js +29 -65
  29. package/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader.js.map +1 -1
  30. package/out/differentialDownloader/GenericDifferentialDownloader.js +7 -21
  31. package/out/differentialDownloader/GenericDifferentialDownloader.js.map +1 -1
  32. package/out/differentialDownloader/ProgressDifferentialDownloadCallbackTransform.d.ts +32 -0
  33. package/out/differentialDownloader/ProgressDifferentialDownloadCallbackTransform.js +90 -0
  34. package/out/differentialDownloader/ProgressDifferentialDownloadCallbackTransform.js.map +1 -0
  35. package/out/differentialDownloader/downloadPlanBuilder.js +99 -124
  36. package/out/differentialDownloader/downloadPlanBuilder.js.map +1 -1
  37. package/out/differentialDownloader/multipleRangeDownloader.js +99 -148
  38. package/out/differentialDownloader/multipleRangeDownloader.js.map +1 -1
  39. package/out/electronHttpExecutor.js +73 -106
  40. package/out/electronHttpExecutor.js.map +1 -1
  41. package/out/event.d.ts +35 -0
  42. package/out/event.js +39 -0
  43. package/out/event.js.map +1 -0
  44. package/out/log.d.ts +11 -0
  45. package/out/log.js +19 -0
  46. package/out/log.js.map +1 -0
  47. package/out/main.d.ts +1 -4
  48. package/out/main.js +60 -212
  49. package/out/main.js.map +1 -1
  50. package/out/providerFactory.js +49 -105
  51. package/out/providerFactory.js.map +1 -1
  52. package/out/providers/BintrayProvider.d.ts +2 -2
  53. package/out/providers/BintrayProvider.js +40 -95
  54. package/out/providers/BintrayProvider.js.map +1 -1
  55. package/out/providers/GenericProvider.d.ts +2 -2
  56. package/out/providers/GenericProvider.js +46 -80
  57. package/out/providers/GenericProvider.js.map +1 -1
  58. package/out/providers/GitHubProvider.d.ts +2 -2
  59. package/out/providers/GitHubProvider.js +122 -201
  60. package/out/providers/GitHubProvider.js.map +1 -1
  61. package/out/providers/PrivateGitHubProvider.js +87 -165
  62. package/out/providers/PrivateGitHubProvider.js.map +1 -1
  63. package/out/providers/Provider.js +122 -173
  64. package/out/providers/Provider.js.map +1 -1
  65. package/out/util.d.ts +5 -0
  66. package/out/util.js +42 -0
  67. package/out/util.js.map +1 -0
  68. package/out/windowsExecutableCodeSignatureVerifier.js +99 -139
  69. package/out/windowsExecutableCodeSignatureVerifier.js.map +1 -1
  70. 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
- function _builderUtilRuntime() {
9
- const data = require("builder-util-runtime");
10
-
11
- _builderUtilRuntime = function () {
12
- return data;
13
- };
14
-
15
- return data;
16
- }
17
-
18
- function _fsExtra() {
19
- const data = require("fs-extra");
20
-
21
- _fsExtra = function () {
22
- return data;
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
- return this.executeDownload({
97
- fileExtension: "zip",
98
- fileInfo: zipFileInfo,
99
- downloadUpdateOptions,
100
- task: (destinationFile, downloadOptions) => {
101
- return this.httpExecutor.download(zipFileInfo.url, destinationFile, downloadOptions);
102
- },
103
- done: async event => {
104
- const downloadedFile = event.downloadedFile;
105
- this.updateInfoForPendingUpdateDownloadedEvent = event;
106
- let updateFileSize = zipFileInfo.info.size;
107
-
108
- if (updateFileSize == null) {
109
- updateFileSize = (await (0, _fsExtra().stat)(downloadedFile)).size;
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
- return await new Promise((resolve, reject) => {
113
- // insecure random is ok
114
- const fileUrl = "/" + Date.now() + "-" + Math.floor(Math.random() * 9999) + ".zip";
115
- server.on("request", (request, response) => {
116
- const requestUrl = request.url;
117
-
118
- this._logger.info(`${requestUrl} requested`);
119
-
120
- if (requestUrl === "/") {
121
- const data = Buffer.from(`{ "url": "${getServerUrl()}${fileUrl}" }`);
122
- response.writeHead(200, {
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
- const readStream = (0, _fs.createReadStream)(downloadedFile);
152
- readStream.on("error", error => {
153
- try {
154
- response.end();
155
- } catch (e) {
156
- this._logger.warn(`cannot end response: ${e}`);
157
- }
158
-
159
- errorOccurred = true;
160
- this.nativeUpdater.removeListener("error", reject);
161
- reject(new Error(`Cannot pipe "${downloadedFile}": ${error}`));
162
- });
163
- response.writeHead(200, {
164
- "Content-Type": "application/zip",
165
- "Content-Length": updateFileSize
166
- });
167
- readStream.pipe(response);
168
- });
169
- server.listen(0, "127.0.0.1", () => {
170
- this.nativeUpdater.setFeedURL({
171
- url: getServerUrl(),
172
- headers: {
173
- "Cache-Control": "no-cache"
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
- this.nativeUpdater.once("error", reject);
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
@@ -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":"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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 { 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,6 @@
1
+ import { Logger } from "./main";
2
+ export declare class NoOpLogger implements Logger {
3
+ info(message?: any): void;
4
+ warn(message?: any): void;
5
+ error(message?: any): void;
6
+ }
@@ -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"]}