electrify-web 1.0.0

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 (129) hide show
  1. package/LICENSE.md +10 -0
  2. package/README.md +351 -0
  3. package/app/inject/_placeholder +0 -0
  4. package/app/lib/main.js +11772 -0
  5. package/app/lib/main.js.map +1 -0
  6. package/app/lib/preload.js +338 -0
  7. package/app/lib/preload.js.map +1 -0
  8. package/app/lib/static/login.css +57 -0
  9. package/app/lib/static/login.html +24 -0
  10. package/app/lib/static/login.js +10 -0
  11. package/app/nativefier.json +8 -0
  12. package/app/npm-shrinkwrap.json +1170 -0
  13. package/app/package.json +25 -0
  14. package/icon-scripts/convertToIcns +56 -0
  15. package/icon-scripts/convertToIco +39 -0
  16. package/icon-scripts/convertToIconset +68 -0
  17. package/icon-scripts/convertToPng +76 -0
  18. package/icon-scripts/convertToTrayIcon +32 -0
  19. package/lib/autologin/index.d.ts +25 -0
  20. package/lib/autologin/index.js +189 -0
  21. package/lib/autologin/index.js.map +1 -0
  22. package/lib/build/buildIcon.d.ts +6 -0
  23. package/lib/build/buildIcon.js +110 -0
  24. package/lib/build/buildIcon.js.map +1 -0
  25. package/lib/build/buildNativefierApp.d.ts +2 -0
  26. package/lib/build/buildNativefierApp.js +234 -0
  27. package/lib/build/buildNativefierApp.js.map +1 -0
  28. package/lib/build/prepareElectronApp.d.ts +15 -0
  29. package/lib/build/prepareElectronApp.js +220 -0
  30. package/lib/build/prepareElectronApp.js.map +1 -0
  31. package/lib/cli.d.ts +6 -0
  32. package/lib/cli.js +783 -0
  33. package/lib/cli.js.map +1 -0
  34. package/lib/config/index.d.ts +87 -0
  35. package/lib/config/index.js +460 -0
  36. package/lib/config/index.js.map +1 -0
  37. package/lib/constants.d.ts +11 -0
  38. package/lib/constants.js +58 -0
  39. package/lib/constants.js.map +1 -0
  40. package/lib/helpers/fsHelpers.d.ts +2 -0
  41. package/lib/helpers/fsHelpers.js +57 -0
  42. package/lib/helpers/fsHelpers.js.map +1 -0
  43. package/lib/helpers/helpers.d.ts +29 -0
  44. package/lib/helpers/helpers.js +225 -0
  45. package/lib/helpers/helpers.js.map +1 -0
  46. package/lib/helpers/iconShellHelpers.d.ts +5 -0
  47. package/lib/helpers/iconShellHelpers.js +91 -0
  48. package/lib/helpers/iconShellHelpers.js.map +1 -0
  49. package/lib/helpers/upgrade/executableHelpers.d.ts +2 -0
  50. package/lib/helpers/upgrade/executableHelpers.js +173 -0
  51. package/lib/helpers/upgrade/executableHelpers.js.map +1 -0
  52. package/lib/helpers/upgrade/plistInfoXMLHelpers.d.ts +2 -0
  53. package/lib/helpers/upgrade/plistInfoXMLHelpers.js +29 -0
  54. package/lib/helpers/upgrade/plistInfoXMLHelpers.js.map +1 -0
  55. package/lib/helpers/upgrade/rceditGet.d.ts +1 -0
  56. package/lib/helpers/upgrade/rceditGet.js +65 -0
  57. package/lib/helpers/upgrade/rceditGet.js.map +1 -0
  58. package/lib/helpers/upgrade/upgrade.d.ts +8 -0
  59. package/lib/helpers/upgrade/upgrade.js +193 -0
  60. package/lib/helpers/upgrade/upgrade.js.map +1 -0
  61. package/lib/infer/browsers/inferChromeVersion.d.ts +1 -0
  62. package/lib/infer/browsers/inferChromeVersion.js +73 -0
  63. package/lib/infer/browsers/inferChromeVersion.js.map +1 -0
  64. package/lib/infer/browsers/inferFirefoxVersion.d.ts +1 -0
  65. package/lib/infer/browsers/inferFirefoxVersion.js +61 -0
  66. package/lib/infer/browsers/inferFirefoxVersion.js.map +1 -0
  67. package/lib/infer/browsers/inferSafariVersion.d.ts +6 -0
  68. package/lib/infer/browsers/inferSafariVersion.js +96 -0
  69. package/lib/infer/browsers/inferSafariVersion.js.map +1 -0
  70. package/lib/infer/inferDefaults.d.ts +33 -0
  71. package/lib/infer/inferDefaults.js +272 -0
  72. package/lib/infer/inferDefaults.js.map +1 -0
  73. package/lib/infer/inferIcon.d.ts +1 -0
  74. package/lib/infer/inferIcon.js +116 -0
  75. package/lib/infer/inferIcon.js.map +1 -0
  76. package/lib/infer/inferOs.d.ts +4 -0
  77. package/lib/infer/inferOs.js +69 -0
  78. package/lib/infer/inferOs.js.map +1 -0
  79. package/lib/infer/inferTitle.d.ts +1 -0
  80. package/lib/infer/inferTitle.js +56 -0
  81. package/lib/infer/inferTitle.js.map +1 -0
  82. package/lib/integration-test.d.ts +1 -0
  83. package/lib/main.d.ts +11 -0
  84. package/lib/main.js +18 -0
  85. package/lib/main.js.map +1 -0
  86. package/lib/options/asyncConfig.d.ts +5 -0
  87. package/lib/options/asyncConfig.js +46 -0
  88. package/lib/options/asyncConfig.js.map +1 -0
  89. package/lib/options/fields/fields.d.ts +2 -0
  90. package/lib/options/fields/fields.js +32 -0
  91. package/lib/options/fields/fields.js.map +1 -0
  92. package/lib/options/fields/icon.d.ts +9 -0
  93. package/lib/options/fields/icon.js +106 -0
  94. package/lib/options/fields/icon.js.map +1 -0
  95. package/lib/options/fields/name.d.ts +9 -0
  96. package/lib/options/fields/name.js +59 -0
  97. package/lib/options/fields/name.js.map +1 -0
  98. package/lib/options/fields/userAgent.d.ts +10 -0
  99. package/lib/options/fields/userAgent.js +81 -0
  100. package/lib/options/fields/userAgent.js.map +1 -0
  101. package/lib/options/normalizeUrl.d.ts +1 -0
  102. package/lib/options/normalizeUrl.js +62 -0
  103. package/lib/options/normalizeUrl.js.map +1 -0
  104. package/lib/options/optionsMain.d.ts +6 -0
  105. package/lib/options/optionsMain.js +305 -0
  106. package/lib/options/optionsMain.js.map +1 -0
  107. package/lib/presets/index.d.ts +27 -0
  108. package/lib/presets/index.js +162 -0
  109. package/lib/presets/index.js.map +1 -0
  110. package/lib/pwa/index.d.ts +57 -0
  111. package/lib/pwa/index.js +241 -0
  112. package/lib/pwa/index.js.map +1 -0
  113. package/lib/security/index.d.ts +27 -0
  114. package/lib/security/index.js +202 -0
  115. package/lib/security/index.js.map +1 -0
  116. package/lib/updater/index.d.ts +34 -0
  117. package/lib/updater/index.js +264 -0
  118. package/lib/updater/index.js.map +1 -0
  119. package/lib/utils/parseUtils.d.ts +3 -0
  120. package/lib/utils/parseUtils.js +95 -0
  121. package/lib/utils/parseUtils.js.map +1 -0
  122. package/lib/utils/sanitizeFilename.d.ts +1 -0
  123. package/lib/utils/sanitizeFilename.js +53 -0
  124. package/lib/utils/sanitizeFilename.js.map +1 -0
  125. package/lib/wizard/index.d.ts +13 -0
  126. package/lib/wizard/index.js +252 -0
  127. package/lib/wizard/index.js.map +1 -0
  128. package/npm-shrinkwrap.json +8144 -0
  129. package/package.json +148 -0
@@ -0,0 +1,2 @@
1
+ export declare function dirExists(dirName: string): boolean;
2
+ export declare function fileExists(fileName: string): boolean;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.dirExists = dirExists;
37
+ exports.fileExists = fileExists;
38
+ const fs = __importStar(require("fs"));
39
+ function dirExists(dirName) {
40
+ try {
41
+ const dirStat = fs.statSync(dirName);
42
+ return dirStat.isDirectory();
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ function fileExists(fileName) {
49
+ try {
50
+ const fileStat = fs.statSync(fileName);
51
+ return fileStat.isFile();
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ //# sourceMappingURL=fsHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fsHelpers.js","sourceRoot":"","sources":["../../src/helpers/fsHelpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,8BAOC;AAED,gCAOC;AAlBD,uCAAyB;AAEzB,SAAgB,SAAS,CAAC,OAAe;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,29 @@
1
+ export type DownloadResult = {
2
+ data: Buffer;
3
+ ext: string;
4
+ };
5
+ type ProcessEnvs = Record<string, unknown>;
6
+ export declare function hasWine(): boolean;
7
+ export declare function isLinux(): boolean;
8
+ export declare function isOSX(): boolean;
9
+ export declare function isWindows(): boolean;
10
+ export declare function isWindowsAdmin(): boolean;
11
+ /**
12
+ * Create a temp directory with a debug-friendly name, and return its path.
13
+ * Will be automatically deleted on exit.
14
+ */
15
+ export declare function getTempDir(prefix: string, mode?: number): string;
16
+ export declare function downloadFile(fileUrl: string): Promise<DownloadResult | undefined>;
17
+ export declare function getAllowedIconFormats(platform: string): string[];
18
+ /**
19
+ * Refuse args like '--n' or '-name', we accept either short '-n' or long '--name'
20
+ */
21
+ export declare function isArgFormatInvalid(arg: string): boolean;
22
+ export declare function generateRandomSuffix(length?: number): string;
23
+ export declare function getProcessEnvs(val: string): ProcessEnvs | undefined;
24
+ export declare function checkInternet(): void;
25
+ /**
26
+ * Takes in a snake-cased string and converts to camelCase
27
+ */
28
+ export declare function camelCased(str: string): string;
29
+ export {};
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.hasWine = hasWine;
40
+ exports.isLinux = isLinux;
41
+ exports.isOSX = isOSX;
42
+ exports.isWindows = isWindows;
43
+ exports.isWindowsAdmin = isWindowsAdmin;
44
+ exports.getTempDir = getTempDir;
45
+ exports.downloadFile = downloadFile;
46
+ exports.getAllowedIconFormats = getAllowedIconFormats;
47
+ exports.isArgFormatInvalid = isArgFormatInvalid;
48
+ exports.generateRandomSuffix = generateRandomSuffix;
49
+ exports.getProcessEnvs = getProcessEnvs;
50
+ exports.checkInternet = checkInternet;
51
+ exports.camelCased = camelCased;
52
+ const child_process_1 = require("child_process");
53
+ const crypto = __importStar(require("crypto"));
54
+ const os = __importStar(require("os"));
55
+ const path = __importStar(require("path"));
56
+ const axios_1 = __importDefault(require("axios"));
57
+ const dns = __importStar(require("dns"));
58
+ const hasbin = __importStar(require("hasbin"));
59
+ const log = __importStar(require("loglevel"));
60
+ const tmp = __importStar(require("tmp"));
61
+ const parseUtils_1 = require("../utils/parseUtils");
62
+ tmp.setGracefulCleanup(); // cleanup temp dirs even when an uncaught exception occurs
63
+ const now = new Date();
64
+ const TMP_TIME = `${now.getHours()}-${now.getMinutes()}-${now.getSeconds()}`;
65
+ function hasWine() {
66
+ return hasbin.sync('wine');
67
+ }
68
+ // I tried to place this (and the other is* functions) in
69
+ // a new shared helpers, but alas eslint gets real confused
70
+ // about the type signatures and thinks they're all any.
71
+ // TODO: Figure out a way to refactor duplicate code from
72
+ // src/helpers/helpers.ts and app/src/helpers/helpers.ts
73
+ // into the shared module
74
+ function isLinux() {
75
+ return os.platform() === 'linux';
76
+ }
77
+ function isOSX() {
78
+ return os.platform() === 'darwin';
79
+ }
80
+ function isWindows() {
81
+ return os.platform() === 'win32';
82
+ }
83
+ function isWindowsAdmin() {
84
+ if (process.platform !== 'win32') {
85
+ return false;
86
+ }
87
+ // https://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rights
88
+ // https://stackoverflow.com/questions/57009374/check-admin-or-non-admin-users-in-nodejs-or-javascript
89
+ return (0, child_process_1.spawnSync)('fltmc').status === 0;
90
+ }
91
+ /**
92
+ * Create a temp directory with a debug-friendly name, and return its path.
93
+ * Will be automatically deleted on exit.
94
+ */
95
+ function getTempDir(prefix, mode) {
96
+ return tmp.dirSync({
97
+ mode,
98
+ unsafeCleanup: true, // recursively remove tmp dir on exit, even if not empty.
99
+ prefix: `nativefier-${TMP_TIME}-${prefix}-`,
100
+ }).name;
101
+ }
102
+ function downloadFile(fileUrl) {
103
+ log.debug(`Downloading ${fileUrl}`);
104
+ return axios_1.default
105
+ .get(fileUrl, {
106
+ responseType: 'arraybuffer',
107
+ })
108
+ .then((response) => {
109
+ if (!response.data) {
110
+ return undefined;
111
+ }
112
+ return {
113
+ data: response.data,
114
+ ext: path.extname(fileUrl),
115
+ };
116
+ });
117
+ }
118
+ function getAllowedIconFormats(platform) {
119
+ const hasIdentify = hasbin.sync('identify') || hasbin.sync('gm');
120
+ const hasConvert = hasbin.sync('convert') || hasbin.sync('gm');
121
+ const hasIconUtil = hasbin.sync('iconutil');
122
+ const pngToIcns = hasConvert && hasIconUtil;
123
+ const pngToIco = hasConvert;
124
+ const icoToIcns = pngToIcns && hasIdentify;
125
+ const icoToPng = hasConvert;
126
+ // Unsupported
127
+ const icnsToPng = false;
128
+ const icnsToIco = false;
129
+ const formats = [];
130
+ // Shell scripting is not supported on windows, temporary override
131
+ if (isWindows()) {
132
+ switch (platform) {
133
+ case 'darwin':
134
+ formats.push('.icns');
135
+ break;
136
+ case 'linux':
137
+ formats.push('.png');
138
+ break;
139
+ case 'win32':
140
+ formats.push('.ico');
141
+ break;
142
+ default:
143
+ throw new Error(`Unknown platform ${platform}`);
144
+ }
145
+ log.debug(`Allowed icon formats when building for ${platform} (limited on Windows):`, formats);
146
+ return formats;
147
+ }
148
+ switch (platform) {
149
+ case 'darwin':
150
+ formats.push('.icns');
151
+ if (pngToIcns) {
152
+ formats.push('.png');
153
+ }
154
+ if (icoToIcns) {
155
+ formats.push('.ico');
156
+ }
157
+ break;
158
+ case 'linux':
159
+ formats.push('.png');
160
+ if (icoToPng) {
161
+ formats.push('.ico');
162
+ }
163
+ if (icnsToPng) {
164
+ formats.push('.icns');
165
+ }
166
+ break;
167
+ case 'win32':
168
+ formats.push('.ico');
169
+ if (pngToIco) {
170
+ formats.push('.png');
171
+ }
172
+ if (icnsToIco) {
173
+ formats.push('.icns');
174
+ }
175
+ break;
176
+ default:
177
+ throw new Error(`Unknown platform ${platform}`);
178
+ }
179
+ log.debug(`Allowed icon formats when building for ${platform}:`, formats);
180
+ return formats;
181
+ }
182
+ /**
183
+ * Refuse args like '--n' or '-name', we accept either short '-n' or long '--name'
184
+ */
185
+ function isArgFormatInvalid(arg) {
186
+ return ((arg.startsWith('---') ||
187
+ /^--[a-z]$/i.exec(arg) !== null ||
188
+ /^-[a-z]{2,}$/i.exec(arg) !== null) &&
189
+ !['--x', '--y'].includes(arg) // exception for long args --{x,y}
190
+ );
191
+ }
192
+ function generateRandomSuffix(length = 6) {
193
+ const hash = crypto.createHash('md5');
194
+ // Add a random salt to help avoid collisions
195
+ hash.update(crypto.randomBytes(256));
196
+ return hash.digest('hex').substring(0, length);
197
+ }
198
+ function getProcessEnvs(val) {
199
+ if (!val) {
200
+ return undefined;
201
+ }
202
+ return (0, parseUtils_1.parseJson)(val);
203
+ }
204
+ function checkInternet() {
205
+ dns.lookup('npmjs.com', (err) => {
206
+ if (err && err.code === 'ENOTFOUND') {
207
+ log.warn('\nNo Internet Connection\nTo offline build, download electron from https://github.com/electron/electron/releases\nand place in ~/AppData/Local/electron/Cache/ on Windows,\n~/.cache/electron on Linux or ~/Library/Caches/electron/ on Mac\nUse --electron-version to specify the version you downloaded.');
208
+ }
209
+ });
210
+ }
211
+ /**
212
+ * Takes in a snake-cased string and converts to camelCase
213
+ */
214
+ function camelCased(str) {
215
+ return str
216
+ .split('-')
217
+ .filter((s) => s.length > 0)
218
+ .map((word, i) => {
219
+ if (i === 0)
220
+ return word;
221
+ return `${word[0].toUpperCase()}${word.substring(1)}`;
222
+ })
223
+ .join('');
224
+ }
225
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function singleIco(icoSrc: string): string;
2
+ export declare function convertToPng(icoSrc: string): string;
3
+ export declare function convertToIco(icoSrc: string): string;
4
+ export declare function convertToIcns(icoSrc: string): string;
5
+ export declare function convertToTrayIcon(icoSrc: string): string;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.singleIco = singleIco;
37
+ exports.convertToPng = convertToPng;
38
+ exports.convertToIco = convertToIco;
39
+ exports.convertToIcns = convertToIcns;
40
+ exports.convertToTrayIcon = convertToTrayIcon;
41
+ const path = __importStar(require("path"));
42
+ const child_process_1 = require("child_process");
43
+ const helpers_1 = require("./helpers");
44
+ const log = __importStar(require("loglevel"));
45
+ const SCRIPT_PATHS = {
46
+ singleIco: path.join(__dirname, '../..', 'icon-scripts/singleIco'),
47
+ convertToPng: path.join(__dirname, '../..', 'icon-scripts/convertToPng'),
48
+ convertToIco: path.join(__dirname, '../..', 'icon-scripts/convertToIco'),
49
+ convertToIcns: path.join(__dirname, '../..', 'icon-scripts/convertToIcns'),
50
+ convertToTrayIcon: path.join(__dirname, '../..', 'icon-scripts/convertToTrayIcon'),
51
+ };
52
+ /**
53
+ * Executes a shell script with the form "./pathToScript param1 param2"
54
+ */
55
+ function iconShellHelper(shellScriptPath, icoSource, icoDestination) {
56
+ if ((0, helpers_1.isWindows)()) {
57
+ throw new Error('Icon conversion only supported on macOS or Linux. ' +
58
+ 'If building for Windows, download/create a .ico and pass it with --icon favicon.ico . ' +
59
+ 'If building for macOS/Linux, do it from macOS/Linux');
60
+ }
61
+ const shellCommand = `"${shellScriptPath}" "${icoSource}" "${icoDestination}"`;
62
+ log.debug(`Converting icon ${icoSource} to ${icoDestination}.`, `Calling shell command: ${shellCommand}`);
63
+ const { stdout, stderr, status } = (0, child_process_1.spawnSync)(shellScriptPath, [icoSource, icoDestination], { timeout: 10000 });
64
+ if (status) {
65
+ throw new Error(`Icon conversion failed with status code ${status}.\nstdout: ${stdout.toString()}\nstderr: ${stderr.toString()}`);
66
+ }
67
+ log.debug(`Conversion succeeded and produced icon at ${icoDestination}`);
68
+ return icoDestination;
69
+ }
70
+ function singleIco(icoSrc) {
71
+ return iconShellHelper(SCRIPT_PATHS.singleIco, icoSrc, `${(0, helpers_1.getTempDir)('iconconv')}/icon.ico`);
72
+ }
73
+ function convertToPng(icoSrc) {
74
+ return iconShellHelper(SCRIPT_PATHS.convertToPng, icoSrc, `${(0, helpers_1.getTempDir)('iconconv')}/icon.png`);
75
+ }
76
+ function convertToIco(icoSrc) {
77
+ return iconShellHelper(SCRIPT_PATHS.convertToIco, icoSrc, `${(0, helpers_1.getTempDir)('iconconv')}/icon.ico`);
78
+ }
79
+ function convertToIcns(icoSrc) {
80
+ if (!(0, helpers_1.isOSX)()) {
81
+ throw new Error('macOS is required to convert to a .icns icon');
82
+ }
83
+ return iconShellHelper(SCRIPT_PATHS.convertToIcns, icoSrc, `${(0, helpers_1.getTempDir)('iconconv')}/icon.icns`);
84
+ }
85
+ function convertToTrayIcon(icoSrc) {
86
+ if (!(0, helpers_1.isOSX)()) {
87
+ throw new Error('macOS is required to convert from a .icns icon');
88
+ }
89
+ return iconShellHelper(SCRIPT_PATHS.convertToTrayIcon, icoSrc, `${path.dirname(icoSrc)}/tray-icon.png`);
90
+ }
91
+ //# sourceMappingURL=iconShellHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iconShellHelpers.js","sourceRoot":"","sources":["../../src/helpers/iconShellHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { NativefierOptions } from '../../../shared/src/options/model';
2
+ export declare function getOptionsFromExecutable(appResourcesDir: string, priorOptions: NativefierOptions): NativefierOptions;
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getOptionsFromExecutable = getOptionsFromExecutable;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const log = __importStar(require("loglevel"));
40
+ const rceditGet_1 = require("./rceditGet");
41
+ const fsHelpers_1 = require("../fsHelpers");
42
+ function getExecutableBytes(executablePath) {
43
+ return fs.readFileSync(executablePath);
44
+ }
45
+ function getExecutableArch(exeBytes, platform) {
46
+ switch (platform) {
47
+ case 'linux':
48
+ // https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header
49
+ switch (exeBytes[0x12]) {
50
+ case 0x03:
51
+ return 'ia32';
52
+ case 0x28:
53
+ return 'armv7l';
54
+ case 0x3e:
55
+ return 'x64';
56
+ case 0xb7:
57
+ return 'arm64';
58
+ default:
59
+ return undefined;
60
+ }
61
+ case 'darwin':
62
+ case 'mas':
63
+ // https://opensource.apple.com/source/xnu/xnu-2050.18.24/EXTERNAL_HEADERS/mach-o/loader.h
64
+ switch ((exeBytes[0x04] << 8) + exeBytes[0x05]) {
65
+ case 0x0700:
66
+ return 'x64';
67
+ case 0x0c00:
68
+ return 'arm64';
69
+ default:
70
+ return undefined;
71
+ }
72
+ case 'win32':
73
+ // https://en.wikibooks.org/wiki/X86_Disassembly/Windows_Executable_Files#COFF_Header
74
+ switch ((exeBytes[0x7d] << 8) + exeBytes[0x7c]) {
75
+ case 0x014c:
76
+ return 'ia32';
77
+ case 0x8664:
78
+ return 'x64';
79
+ case 0xaa64:
80
+ return 'arm64';
81
+ default:
82
+ return undefined;
83
+ }
84
+ default:
85
+ return undefined;
86
+ }
87
+ }
88
+ function getExecutableInfo(executablePath, platform) {
89
+ if (!(0, fsHelpers_1.fileExists)(executablePath)) {
90
+ return undefined;
91
+ }
92
+ const exeBytes = getExecutableBytes(executablePath);
93
+ return {
94
+ arch: getExecutableArch(exeBytes, platform),
95
+ };
96
+ }
97
+ function getOptionsFromExecutable(appResourcesDir, priorOptions) {
98
+ const newOptions = { ...priorOptions };
99
+ if (!newOptions.name) {
100
+ throw new Error('Can not extract options from executable with no name specified.');
101
+ }
102
+ const name = newOptions.name;
103
+ let executablePath = undefined;
104
+ const appRoot = path.resolve(path.join(appResourcesDir, '..', '..'));
105
+ const children = fs.readdirSync(appRoot, { withFileTypes: true });
106
+ const looksLikeMacOS = children.filter((c) => c.name === 'MacOS' && c.isDirectory()).length > 0;
107
+ const looksLikeWindows = children.filter((c) => c.name.toLowerCase().endsWith('.exe') && c.isFile())
108
+ .length > 0;
109
+ const looksLikeLinux = children.filter((c) => c.name.toLowerCase().endsWith('.so') && c.isFile())
110
+ .length > 0;
111
+ if (looksLikeMacOS) {
112
+ log.debug('This looks like a MacOS app...');
113
+ if (newOptions.platform === undefined) {
114
+ newOptions.platform =
115
+ children.filter((c) => c.name === 'Library' && c.isDirectory()).length >
116
+ 0
117
+ ? 'mas'
118
+ : 'darwin';
119
+ }
120
+ executablePath = path.join(appRoot, 'MacOS', fs.readdirSync(path.join(appRoot, 'MacOS'))[0]);
121
+ }
122
+ else if (looksLikeWindows) {
123
+ log.debug('This looks like a Windows app...');
124
+ if (newOptions.platform === undefined) {
125
+ newOptions.platform = 'win32';
126
+ }
127
+ executablePath = path.join(appRoot, children.filter((c) => c.name.toLowerCase() === `${name.toLowerCase()}.exe` && c.isFile())[0].name);
128
+ if (newOptions.appVersion === undefined) {
129
+ // https://github.com/electron/electron-packager/blob/f1c159f4c844d807968078ea504fba40ca7d9c73/src/win32.js#L46-L48
130
+ newOptions.appVersion = (0, rceditGet_1.getVersionString)(executablePath, 'ProductVersion');
131
+ log.debug(`Extracted app version from executable: ${newOptions.appVersion}`);
132
+ }
133
+ if (newOptions.buildVersion === undefined) {
134
+ //https://github.com/electron/electron-packager/blob/f1c159f4c844d807968078ea504fba40ca7d9c73/src/win32.js#L50-L52
135
+ newOptions.buildVersion = (0, rceditGet_1.getVersionString)(executablePath, 'FileVersion');
136
+ if (newOptions.appVersion == newOptions.buildVersion) {
137
+ newOptions.buildVersion = undefined;
138
+ }
139
+ else {
140
+ log.debug(`Extracted build version from executable: ${newOptions.buildVersion}`);
141
+ }
142
+ }
143
+ if (newOptions.appCopyright === undefined) {
144
+ // https://github.com/electron/electron-packager/blob/f1c159f4c844d807968078ea504fba40ca7d9c73/src/win32.js#L54-L56
145
+ newOptions.appCopyright = (0, rceditGet_1.getVersionString)(executablePath, 'LegalCopyright');
146
+ log.debug(`Extracted app copyright from executable: ${newOptions.appCopyright}`);
147
+ }
148
+ }
149
+ else if (looksLikeLinux) {
150
+ log.debug('This looks like a Linux app...');
151
+ if (newOptions.platform === undefined) {
152
+ newOptions.platform = 'linux';
153
+ }
154
+ executablePath = path.join(appRoot, children.filter((c) => c.name == name && c.isFile())[0].name);
155
+ }
156
+ if (!executablePath || !newOptions.platform) {
157
+ throw Error(`Could not find executablePath or platform of app in ${appRoot}`);
158
+ }
159
+ log.debug(`Executable path: ${executablePath}`);
160
+ if (newOptions.arch === undefined) {
161
+ const executableInfo = getExecutableInfo(executablePath, newOptions.platform);
162
+ if (!executableInfo) {
163
+ throw new Error(`Could not get executable info for executable path: ${executablePath}`);
164
+ }
165
+ newOptions.arch = executableInfo.arch;
166
+ log.debug(`Extracted arch from executable: ${newOptions.arch}`);
167
+ }
168
+ if (newOptions.platform === undefined || newOptions.arch == undefined) {
169
+ throw Error(`Could not determine platform / arch of app in ${appRoot}`);
170
+ }
171
+ return newOptions;
172
+ }
173
+ //# sourceMappingURL=executableHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executableHelpers.js","sourceRoot":"","sources":["../../../src/helpers/upgrade/executableHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function extractBoolean(infoPlistXML: string, plistKey: string): boolean | undefined;
2
+ export declare function extractString(infoPlistXML: string, plistKey: string): string | undefined;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractBoolean = extractBoolean;
4
+ exports.extractString = extractString;
5
+ function extractBoolean(infoPlistXML, plistKey) {
6
+ const plistValue = extractRaw(infoPlistXML, plistKey);
7
+ return plistValue === undefined
8
+ ? undefined
9
+ : plistValue.split('<')[1].split('/>')[0].toLowerCase() === 'true';
10
+ }
11
+ function extractString(infoPlistXML, plistKey) {
12
+ const plistValue = extractRaw(infoPlistXML, plistKey);
13
+ return plistValue === undefined
14
+ ? undefined
15
+ : plistValue.split('<string>')[1].split('</string>')[0];
16
+ }
17
+ function extractRaw(infoPlistXML, plistKey) {
18
+ // This would be easier with xml2js, but let's not add a dependency for something this minor.
19
+ const fullKey = `\n <key>${plistKey}</key>`;
20
+ if (infoPlistXML.indexOf(fullKey) === -1) {
21
+ // This value wasn't set, so we'll stay agnostic to it
22
+ return undefined;
23
+ }
24
+ return infoPlistXML
25
+ .split(fullKey)[1]
26
+ .split('\n </dict>')[0] // Get everything between here and the end of the main plist dict
27
+ .split('\n <key>')[0]; // Get everything before the next key (if it exists)
28
+ }
29
+ //# sourceMappingURL=plistInfoXMLHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plistInfoXMLHelpers.js","sourceRoot":"","sources":["../../../src/helpers/upgrade/plistInfoXMLHelpers.ts"],"names":[],"mappings":";;AAAA,wCASC;AAED,sCASC;AApBD,SAAgB,cAAc,CAC5B,YAAoB,EACpB,QAAgB;IAEhB,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEtD,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AACvE,CAAC;AAED,SAAgB,aAAa,CAC3B,YAAoB,EACpB,QAAgB;IAEhB,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAEtD,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,UAAU,CACjB,YAAoB,EACpB,QAAgB;IAEhB,6FAA6F;IAC7F,MAAM,OAAO,GAAG,cAAc,QAAQ,QAAQ,CAAC;IAE/C,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzC,sDAAsD;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,YAAY;SAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACjB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,iEAAiE;SACzF,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;AAClF,CAAC"}