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.
- package/LICENSE.md +10 -0
- package/README.md +351 -0
- package/app/inject/_placeholder +0 -0
- package/app/lib/main.js +11772 -0
- package/app/lib/main.js.map +1 -0
- package/app/lib/preload.js +338 -0
- package/app/lib/preload.js.map +1 -0
- package/app/lib/static/login.css +57 -0
- package/app/lib/static/login.html +24 -0
- package/app/lib/static/login.js +10 -0
- package/app/nativefier.json +8 -0
- package/app/npm-shrinkwrap.json +1170 -0
- package/app/package.json +25 -0
- package/icon-scripts/convertToIcns +56 -0
- package/icon-scripts/convertToIco +39 -0
- package/icon-scripts/convertToIconset +68 -0
- package/icon-scripts/convertToPng +76 -0
- package/icon-scripts/convertToTrayIcon +32 -0
- package/lib/autologin/index.d.ts +25 -0
- package/lib/autologin/index.js +189 -0
- package/lib/autologin/index.js.map +1 -0
- package/lib/build/buildIcon.d.ts +6 -0
- package/lib/build/buildIcon.js +110 -0
- package/lib/build/buildIcon.js.map +1 -0
- package/lib/build/buildNativefierApp.d.ts +2 -0
- package/lib/build/buildNativefierApp.js +234 -0
- package/lib/build/buildNativefierApp.js.map +1 -0
- package/lib/build/prepareElectronApp.d.ts +15 -0
- package/lib/build/prepareElectronApp.js +220 -0
- package/lib/build/prepareElectronApp.js.map +1 -0
- package/lib/cli.d.ts +6 -0
- package/lib/cli.js +783 -0
- package/lib/cli.js.map +1 -0
- package/lib/config/index.d.ts +87 -0
- package/lib/config/index.js +460 -0
- package/lib/config/index.js.map +1 -0
- package/lib/constants.d.ts +11 -0
- package/lib/constants.js +58 -0
- package/lib/constants.js.map +1 -0
- package/lib/helpers/fsHelpers.d.ts +2 -0
- package/lib/helpers/fsHelpers.js +57 -0
- package/lib/helpers/fsHelpers.js.map +1 -0
- package/lib/helpers/helpers.d.ts +29 -0
- package/lib/helpers/helpers.js +225 -0
- package/lib/helpers/helpers.js.map +1 -0
- package/lib/helpers/iconShellHelpers.d.ts +5 -0
- package/lib/helpers/iconShellHelpers.js +91 -0
- package/lib/helpers/iconShellHelpers.js.map +1 -0
- package/lib/helpers/upgrade/executableHelpers.d.ts +2 -0
- package/lib/helpers/upgrade/executableHelpers.js +173 -0
- package/lib/helpers/upgrade/executableHelpers.js.map +1 -0
- package/lib/helpers/upgrade/plistInfoXMLHelpers.d.ts +2 -0
- package/lib/helpers/upgrade/plistInfoXMLHelpers.js +29 -0
- package/lib/helpers/upgrade/plistInfoXMLHelpers.js.map +1 -0
- package/lib/helpers/upgrade/rceditGet.d.ts +1 -0
- package/lib/helpers/upgrade/rceditGet.js +65 -0
- package/lib/helpers/upgrade/rceditGet.js.map +1 -0
- package/lib/helpers/upgrade/upgrade.d.ts +8 -0
- package/lib/helpers/upgrade/upgrade.js +193 -0
- package/lib/helpers/upgrade/upgrade.js.map +1 -0
- package/lib/infer/browsers/inferChromeVersion.d.ts +1 -0
- package/lib/infer/browsers/inferChromeVersion.js +73 -0
- package/lib/infer/browsers/inferChromeVersion.js.map +1 -0
- package/lib/infer/browsers/inferFirefoxVersion.d.ts +1 -0
- package/lib/infer/browsers/inferFirefoxVersion.js +61 -0
- package/lib/infer/browsers/inferFirefoxVersion.js.map +1 -0
- package/lib/infer/browsers/inferSafariVersion.d.ts +6 -0
- package/lib/infer/browsers/inferSafariVersion.js +96 -0
- package/lib/infer/browsers/inferSafariVersion.js.map +1 -0
- package/lib/infer/inferDefaults.d.ts +33 -0
- package/lib/infer/inferDefaults.js +272 -0
- package/lib/infer/inferDefaults.js.map +1 -0
- package/lib/infer/inferIcon.d.ts +1 -0
- package/lib/infer/inferIcon.js +116 -0
- package/lib/infer/inferIcon.js.map +1 -0
- package/lib/infer/inferOs.d.ts +4 -0
- package/lib/infer/inferOs.js +69 -0
- package/lib/infer/inferOs.js.map +1 -0
- package/lib/infer/inferTitle.d.ts +1 -0
- package/lib/infer/inferTitle.js +56 -0
- package/lib/infer/inferTitle.js.map +1 -0
- package/lib/integration-test.d.ts +1 -0
- package/lib/main.d.ts +11 -0
- package/lib/main.js +18 -0
- package/lib/main.js.map +1 -0
- package/lib/options/asyncConfig.d.ts +5 -0
- package/lib/options/asyncConfig.js +46 -0
- package/lib/options/asyncConfig.js.map +1 -0
- package/lib/options/fields/fields.d.ts +2 -0
- package/lib/options/fields/fields.js +32 -0
- package/lib/options/fields/fields.js.map +1 -0
- package/lib/options/fields/icon.d.ts +9 -0
- package/lib/options/fields/icon.js +106 -0
- package/lib/options/fields/icon.js.map +1 -0
- package/lib/options/fields/name.d.ts +9 -0
- package/lib/options/fields/name.js +59 -0
- package/lib/options/fields/name.js.map +1 -0
- package/lib/options/fields/userAgent.d.ts +10 -0
- package/lib/options/fields/userAgent.js +81 -0
- package/lib/options/fields/userAgent.js.map +1 -0
- package/lib/options/normalizeUrl.d.ts +1 -0
- package/lib/options/normalizeUrl.js +62 -0
- package/lib/options/normalizeUrl.js.map +1 -0
- package/lib/options/optionsMain.d.ts +6 -0
- package/lib/options/optionsMain.js +305 -0
- package/lib/options/optionsMain.js.map +1 -0
- package/lib/presets/index.d.ts +27 -0
- package/lib/presets/index.js +162 -0
- package/lib/presets/index.js.map +1 -0
- package/lib/pwa/index.d.ts +57 -0
- package/lib/pwa/index.js +241 -0
- package/lib/pwa/index.js.map +1 -0
- package/lib/security/index.d.ts +27 -0
- package/lib/security/index.js +202 -0
- package/lib/security/index.js.map +1 -0
- package/lib/updater/index.d.ts +34 -0
- package/lib/updater/index.js +264 -0
- package/lib/updater/index.js.map +1 -0
- package/lib/utils/parseUtils.d.ts +3 -0
- package/lib/utils/parseUtils.js +95 -0
- package/lib/utils/parseUtils.js.map +1 -0
- package/lib/utils/sanitizeFilename.d.ts +1 -0
- package/lib/utils/sanitizeFilename.js +53 -0
- package/lib/utils/sanitizeFilename.js.map +1 -0
- package/lib/wizard/index.d.ts +13 -0
- package/lib/wizard/index.js +252 -0
- package/lib/wizard/index.js.map +1 -0
- package/npm-shrinkwrap.json +8144 -0
- package/package.json +148 -0
|
@@ -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,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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6EA,4DAkIC;AA/MD,uCAAyB;AACzB,2CAA6B;AAE7B,8CAAgC;AAGhC,2CAA+C;AAC/C,4CAA0C;AAK1C,SAAS,kBAAkB,CAAC,cAAsB;IAChD,OAAO,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAoB,EACpB,QAAgB;IAEhB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,2EAA2E;YAC3E,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,KAAK,IAAI;oBACP,OAAO,MAAM,CAAC;gBAChB,KAAK,IAAI;oBACP,OAAO,QAAQ,CAAC;gBAClB,KAAK,IAAI;oBACP,OAAO,KAAK,CAAC;gBACf,KAAK,IAAI;oBACP,OAAO,OAAO,CAAC;gBACjB;oBACE,OAAO,SAAS,CAAC;YACrB,CAAC;QACH,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,0FAA0F;YAC1F,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,KAAK,MAAM;oBACT,OAAO,KAAK,CAAC;gBACf,KAAK,MAAM;oBACT,OAAO,OAAO,CAAC;gBACjB;oBACE,OAAO,SAAS,CAAC;YACrB,CAAC;QACH,KAAK,OAAO;YACV,qFAAqF;YACrF,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,KAAK,MAAM;oBACT,OAAO,MAAM,CAAC;gBAChB,KAAK,MAAM;oBACT,OAAO,KAAK,CAAC;gBACf,KAAK,MAAM;oBACT,OAAO,OAAO,CAAC;gBACjB;oBACE,OAAO,SAAS,CAAC;YACrB,CAAC;QACH;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,cAAsB,EACtB,QAAgB;IAEhB,IAAI,CAAC,IAAA,sBAAU,EAAC,cAAc,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACpD,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CACtC,eAAuB,EACvB,YAA+B;IAE/B,MAAM,UAAU,GAAsB,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAW,UAAU,CAAC,IAAI,CAAC;IACrC,IAAI,cAAc,GAAuB,SAAS,CAAC;IAEnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,cAAc,GAClB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,MAAM,gBAAgB,GACpB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;SACxE,MAAM,GAAG,CAAC,CAAC;IAChB,MAAM,cAAc,GAClB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;SACvE,MAAM,GAAG,CAAC,CAAC;IAEhB,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,UAAU,CAAC,QAAQ;gBACjB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM;oBACtE,CAAC;oBACC,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,QAAQ,CAAC;QACjB,CAAC;QACD,cAAc,GAAG,IAAI,CAAC,IAAI,CACxB,OAAO,EACP,OAAO,EACP,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;SAAM,IAAI,gBAAgB,EAAE,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAE9C,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC;QAChC,CAAC;QACD,cAAc,GAAG,IAAI,CAAC,IAAI,CACxB,OAAO,EACP,QAAQ,CAAC,MAAM,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,CACrE,CAAC,CAAC,CAAC,CAAC,IAAI,CACV,CAAC;QAEF,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACxC,mHAAmH;YACnH,UAAU,CAAC,UAAU,GAAG,IAAA,4BAAgB,EACtC,cAAc,EACd,gBAAgB,CACjB,CAAC;YACF,GAAG,CAAC,KAAK,CACP,0CACE,UAAU,CAAC,UACb,EAAE,CACH,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1C,kHAAkH;YAClH,UAAU,CAAC,YAAY,GAAG,IAAA,4BAAgB,EAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAE1E,IAAI,UAAU,CAAC,UAAU,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;gBACrD,UAAU,CAAC,YAAY,GAAG,SAAS,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CACP,4CACE,UAAU,CAAC,YACb,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1C,mHAAmH;YACnH,UAAU,CAAC,YAAY,GAAG,IAAA,4BAAgB,EACxC,cAAc,EACd,gBAAgB,CACjB,CAAC;YACF,GAAG,CAAC,KAAK,CACP,4CACE,UAAU,CAAC,YACb,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACtC,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC;QAChC,CAAC;QACD,cAAc,GAAG,IAAI,CAAC,IAAI,CACxB,OAAO,EACP,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAC7D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,KAAK,CACT,uDAAuD,OAAO,EAAE,CACjE,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;IAEhD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,iBAAiB,CACtC,cAAc,EACd,UAAU,CAAC,QAAQ,CACpB,CAAC;QACF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,sDAAsD,cAAc,EAAE,CACvE,CAAC;QACJ,CAAC;QAED,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;QACtC,GAAG,CAAC,KAAK,CAAC,mCAAmC,UAAU,CAAC,IAAc,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;QACtE,MAAM,KAAK,CAAC,iDAAiD,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -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"}
|