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,234 @@
|
|
|
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.buildNativefierApp = buildNativefierApp;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const electronGet = __importStar(require("@electron/get"));
|
|
42
|
+
const electron_packager_1 = __importDefault(require("electron-packager"));
|
|
43
|
+
const fs = __importStar(require("fs-extra"));
|
|
44
|
+
const log = __importStar(require("loglevel"));
|
|
45
|
+
const buildIcon_1 = require("./buildIcon");
|
|
46
|
+
const helpers_1 = require("../helpers/helpers");
|
|
47
|
+
const upgrade_1 = require("../helpers/upgrade/upgrade");
|
|
48
|
+
const optionsMain_1 = require("../options/optionsMain");
|
|
49
|
+
const prepareElectronApp_1 = require("./prepareElectronApp");
|
|
50
|
+
const security_1 = require("../security");
|
|
51
|
+
const inferDefaults_1 = require("../infer/inferDefaults");
|
|
52
|
+
const OPTIONS_REQUIRING_WINDOWS_FOR_WINDOWS_BUILD = [
|
|
53
|
+
'icon',
|
|
54
|
+
'appCopyright',
|
|
55
|
+
'appVersion',
|
|
56
|
+
'buildVersion',
|
|
57
|
+
'versionString',
|
|
58
|
+
'win32metadata',
|
|
59
|
+
];
|
|
60
|
+
/**
|
|
61
|
+
* For Windows & Linux, we have to copy over the icon to the resources/app
|
|
62
|
+
* folder, which the BrowserWindow is hard-coded to read the icon from
|
|
63
|
+
*/
|
|
64
|
+
async function copyIconsIfNecessary(options, appPath) {
|
|
65
|
+
log.debug('Copying icons if necessary');
|
|
66
|
+
if (!options.packager.icon) {
|
|
67
|
+
log.debug('No icon specified in options; aborting');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (options.packager.platform === 'darwin' ||
|
|
71
|
+
options.packager.platform === 'mas') {
|
|
72
|
+
if (options.nativefier.tray !== 'false') {
|
|
73
|
+
//tray icon needs to be .png
|
|
74
|
+
log.debug('Copying icon for tray application');
|
|
75
|
+
const trayIconFileName = `tray-icon.png`;
|
|
76
|
+
const destIconPath = path.join(appPath, 'icon.png');
|
|
77
|
+
await fs.copy(`${path.dirname(options.packager.icon)}/${trayIconFileName}`, destIconPath);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
log.debug('No copying necessary on macOS; aborting');
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// windows & linux: put the icon file into the app
|
|
85
|
+
const destFileName = `icon${path.extname(options.packager.icon)}`;
|
|
86
|
+
const destIconPath = path.join(appPath, destFileName);
|
|
87
|
+
log.debug(`Copying icon ${options.packager.icon} to`, destIconPath);
|
|
88
|
+
await fs.copy(options.packager.icon, destIconPath);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Checks the app path array to determine if packaging completed successfully
|
|
92
|
+
*/
|
|
93
|
+
function getAppPath(appPath) {
|
|
94
|
+
if (!Array.isArray(appPath)) {
|
|
95
|
+
return appPath;
|
|
96
|
+
}
|
|
97
|
+
if (appPath.length === 0) {
|
|
98
|
+
return undefined; // directory already exists and `--overwrite` not set
|
|
99
|
+
}
|
|
100
|
+
if (appPath.length > 1) {
|
|
101
|
+
log.warn('Warning: This should not be happening, packaged app path contains more than one element:', appPath);
|
|
102
|
+
}
|
|
103
|
+
return appPath[0];
|
|
104
|
+
}
|
|
105
|
+
function isUpgrade(rawOptions) {
|
|
106
|
+
if (rawOptions.upgrade !== undefined &&
|
|
107
|
+
typeof rawOptions.upgrade === 'string' &&
|
|
108
|
+
rawOptions.upgrade !== '') {
|
|
109
|
+
rawOptions.upgradeFrom = rawOptions.upgrade;
|
|
110
|
+
rawOptions.upgrade = true;
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
function trimUnprocessableOptions(options) {
|
|
116
|
+
if (options.packager.platform === 'win32' && !(0, helpers_1.isWindows)() && !(0, helpers_1.hasWine)()) {
|
|
117
|
+
const optionsPresent = Object.entries(options)
|
|
118
|
+
.filter(([key, value]) => OPTIONS_REQUIRING_WINDOWS_FOR_WINDOWS_BUILD.includes(key) && !!value)
|
|
119
|
+
.map(([key]) => key);
|
|
120
|
+
if (optionsPresent.length === 0) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
log.warn(`*Not* setting [${optionsPresent.join(', ')}], as couldn't find Wine.`, 'Wine is required when packaging a Windows app under on non-Windows platforms.', 'Also, note that Windows apps built under non-Windows platforms without Wine *will lack* certain', 'features, like a correct icon and process name. Do yourself a favor and install Wine, please.');
|
|
124
|
+
for (const keyToUnset of optionsPresent) {
|
|
125
|
+
options[keyToUnset] = undefined;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function getOSRunHelp(platform) {
|
|
130
|
+
if (platform === 'win32') {
|
|
131
|
+
return `the contained .exe file.`;
|
|
132
|
+
}
|
|
133
|
+
else if (platform === 'linux') {
|
|
134
|
+
return `the contained executable file (prefixing with ./ if necessary)\nMenu/desktop shortcuts are up to you, because Nativefier cannot know where you're going to move the app. Search for "linux .desktop file" for help, or see https://wiki.archlinux.org/index.php/Desktop_entries`;
|
|
135
|
+
}
|
|
136
|
+
else if (platform === 'darwin') {
|
|
137
|
+
return `the app bundle.`;
|
|
138
|
+
}
|
|
139
|
+
return '';
|
|
140
|
+
}
|
|
141
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
142
|
+
async function buildNativefierApp(rawOptions) {
|
|
143
|
+
var _a, _b, _c, _d;
|
|
144
|
+
// early-suppress potential logging before full options handling
|
|
145
|
+
if (rawOptions.quiet) {
|
|
146
|
+
log.setLevel('silent');
|
|
147
|
+
}
|
|
148
|
+
log.info('\n🚀 Electrify Web - Transform any website into a desktop app\n');
|
|
149
|
+
log.info('Processing options...');
|
|
150
|
+
let finalOutDirectory = (_a = rawOptions.out) !== null && _a !== void 0 ? _a : process.cwd();
|
|
151
|
+
if (isUpgrade(rawOptions)) {
|
|
152
|
+
log.debug('Attempting to upgrade from', rawOptions.upgradeFrom);
|
|
153
|
+
const oldApp = (0, upgrade_1.findUpgradeApp)(rawOptions.upgradeFrom);
|
|
154
|
+
if (!oldApp) {
|
|
155
|
+
throw new Error(`Could not find an old Nativfier app in "${rawOptions.upgradeFrom}"`);
|
|
156
|
+
}
|
|
157
|
+
rawOptions = (0, upgrade_1.useOldAppOptions)(rawOptions, oldApp);
|
|
158
|
+
if (rawOptions.out === undefined && rawOptions.overwrite) {
|
|
159
|
+
finalOutDirectory = oldApp.appRoot;
|
|
160
|
+
rawOptions.out = (0, helpers_1.getTempDir)('appUpgrade', 0o755);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
log.debug('rawOptions', rawOptions);
|
|
164
|
+
const options = await (0, optionsMain_1.getOptions)(rawOptions);
|
|
165
|
+
log.debug('options', options);
|
|
166
|
+
// 智能推荐
|
|
167
|
+
if (options.packager.targetUrl) {
|
|
168
|
+
(0, inferDefaults_1.logSmartDefaults)(options.packager.targetUrl, rawOptions.preset);
|
|
169
|
+
}
|
|
170
|
+
// 安全检测
|
|
171
|
+
if (options.packager.electronVersion) {
|
|
172
|
+
await (0, security_1.performSecurityCheck)(options.packager.electronVersion);
|
|
173
|
+
}
|
|
174
|
+
if (options.packager.platform === 'darwin' && (0, helpers_1.isWindows)()) {
|
|
175
|
+
// electron-packager has to extract the desired electron package for the target platform.
|
|
176
|
+
// For a target platform of Mac, this zip file contains symlinks. And on Windows, extracting
|
|
177
|
+
// files that are symlinks need Admin permissions. So we'll check if the user is an admin, and
|
|
178
|
+
// fail early if not.
|
|
179
|
+
// For reference
|
|
180
|
+
// https://github.com/electron/electron-packager/issues/933
|
|
181
|
+
// https://github.com/electron/electron-packager/issues/1194
|
|
182
|
+
// https://github.com/electron/electron/issues/11094
|
|
183
|
+
if (!(0, helpers_1.isWindowsAdmin)()) {
|
|
184
|
+
throw new Error('Building an app with a target platform of Mac on a Windows machine requires admin priveleges to perform. Please rerun this command in an admin command prompt.');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
log.info('\nPreparing Electron app...');
|
|
188
|
+
const tmpPath = (0, helpers_1.getTempDir)('app', 0o755);
|
|
189
|
+
await (0, prepareElectronApp_1.prepareElectronApp)(options.packager.dir, tmpPath, options, { autoUpdate: rawOptions.autoUpdate });
|
|
190
|
+
log.info('\nConverting icons...');
|
|
191
|
+
options.packager.dir = tmpPath;
|
|
192
|
+
(0, buildIcon_1.convertIconIfNecessary)(options);
|
|
193
|
+
await copyIconsIfNecessary(options, tmpPath);
|
|
194
|
+
options.packager.quiet = !rawOptions.verbose;
|
|
195
|
+
log.info("\nPackaging... This will take a few seconds, maybe minutes if the requested Electron isn't cached yet...");
|
|
196
|
+
trimUnprocessableOptions(options);
|
|
197
|
+
electronGet.initializeProxy(); // https://github.com/electron/get#proxies
|
|
198
|
+
const appPathArray = await (0, electron_packager_1.default)(options.packager);
|
|
199
|
+
log.info('\nFinalizing build...');
|
|
200
|
+
let appPath = getAppPath(appPathArray);
|
|
201
|
+
if (!appPath) {
|
|
202
|
+
throw new Error('App Path could not be determined.');
|
|
203
|
+
}
|
|
204
|
+
if (options.packager.upgrade &&
|
|
205
|
+
options.packager.upgradeFrom &&
|
|
206
|
+
options.packager.overwrite) {
|
|
207
|
+
if (options.packager.platform === 'darwin') {
|
|
208
|
+
try {
|
|
209
|
+
// This is needed due to a funky thing that happens when copying Squirrel.framework
|
|
210
|
+
// over where it gets into a circular file reference somehow.
|
|
211
|
+
await fs.remove(path.join(finalOutDirectory, `${(_b = options.packager.name) !== null && _b !== void 0 ? _b : ''}.app`, 'Contents', 'Frameworks'));
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
log.warn('Encountered an error when attempting to pre-delete old frameworks:', err);
|
|
215
|
+
}
|
|
216
|
+
await fs.copy(path.join(appPath, `${(_c = options.packager.name) !== null && _c !== void 0 ? _c : ''}.app`), path.join(finalOutDirectory, `${(_d = options.packager.name) !== null && _d !== void 0 ? _d : ''}.app`), {
|
|
217
|
+
overwrite: options.packager.overwrite,
|
|
218
|
+
preserveTimestamps: true,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
await fs.copy(appPath, finalOutDirectory, {
|
|
223
|
+
overwrite: options.packager.overwrite,
|
|
224
|
+
preserveTimestamps: true,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
await fs.remove(appPath);
|
|
228
|
+
appPath = finalOutDirectory;
|
|
229
|
+
}
|
|
230
|
+
const osRunHelp = getOSRunHelp(options.packager.platform);
|
|
231
|
+
log.info(`App built to ${appPath}, move to wherever it makes sense for you and run ${osRunHelp}`);
|
|
232
|
+
return appPath;
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=buildNativefierApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildNativefierApp.js","sourceRoot":"","sources":["../../src/build/buildNativefierApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AppOptions } from '../../shared/src/options/model';
|
|
2
|
+
/**
|
|
3
|
+
* Use a basic 6-character hash to prevent collisions. The hash is deterministic url & name,
|
|
4
|
+
* so that an upgrade (same URL) of an app keeps using the same appData folder.
|
|
5
|
+
* Warning! Changing this normalizing & hashing will change the way appNames are generated,
|
|
6
|
+
* changing appData folder, and users will get logged out of their apps after an upgrade.
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeAppName(appName: string, url: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Creates a temporary directory, copies the './app folder' inside,
|
|
11
|
+
* and adds a text file with the app configuration.
|
|
12
|
+
*/
|
|
13
|
+
export declare function prepareElectronApp(src: string, dest: string, options: AppOptions, rawOptions?: {
|
|
14
|
+
autoUpdate?: string;
|
|
15
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,220 @@
|
|
|
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.normalizeAppName = normalizeAppName;
|
|
37
|
+
exports.prepareElectronApp = prepareElectronApp;
|
|
38
|
+
const crypto = __importStar(require("crypto"));
|
|
39
|
+
const fs = __importStar(require("fs-extra"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const log = __importStar(require("loglevel"));
|
|
42
|
+
const helpers_1 = require("../helpers/helpers");
|
|
43
|
+
const parseUtils_1 = require("../utils/parseUtils");
|
|
44
|
+
const constants_1 = require("../constants");
|
|
45
|
+
const updater_1 = require("../updater");
|
|
46
|
+
/**
|
|
47
|
+
* Only picks certain app args to pass to nativefier.json
|
|
48
|
+
*/
|
|
49
|
+
function pickElectronAppArgs(options) {
|
|
50
|
+
var _a;
|
|
51
|
+
return {
|
|
52
|
+
accessibilityPrompt: options.nativefier.accessibilityPrompt,
|
|
53
|
+
alwaysOnTop: options.nativefier.alwaysOnTop,
|
|
54
|
+
appBundleId: options.packager.appBundleId,
|
|
55
|
+
appCategoryType: options.packager.appCategoryType,
|
|
56
|
+
appCopyright: options.packager.appCopyright,
|
|
57
|
+
appVersion: options.packager.appVersion,
|
|
58
|
+
arch: options.packager.arch,
|
|
59
|
+
asar: options.packager.asar,
|
|
60
|
+
backgroundColor: options.nativefier.backgroundColor,
|
|
61
|
+
basicAuthPassword: options.nativefier.basicAuthPassword,
|
|
62
|
+
basicAuthUsername: options.nativefier.basicAuthUsername,
|
|
63
|
+
blockExternalUrls: options.nativefier.blockExternalUrls,
|
|
64
|
+
bounce: options.nativefier.bounce,
|
|
65
|
+
browserwindowOptions: options.nativefier.browserwindowOptions,
|
|
66
|
+
buildDate: new Date().getTime(),
|
|
67
|
+
buildVersion: options.packager.buildVersion,
|
|
68
|
+
clearCache: options.nativefier.clearCache,
|
|
69
|
+
counter: options.nativefier.counter,
|
|
70
|
+
crashReporter: options.nativefier.crashReporter,
|
|
71
|
+
darwinDarkModeSupport: options.packager.darwinDarkModeSupport,
|
|
72
|
+
derefSymlinks: options.packager.derefSymlinks,
|
|
73
|
+
disableContextMenu: options.nativefier.disableContextMenu,
|
|
74
|
+
disableDevTools: options.nativefier.disableDevTools,
|
|
75
|
+
disableGpu: options.nativefier.disableGpu,
|
|
76
|
+
diskCacheSize: options.nativefier.diskCacheSize,
|
|
77
|
+
download: options.packager.download,
|
|
78
|
+
electronVersionUsed: options.packager.electronVersion,
|
|
79
|
+
enableEs3Apis: options.nativefier.enableEs3Apis,
|
|
80
|
+
executableName: options.packager.executableName,
|
|
81
|
+
fastQuit: options.nativefier.fastQuit,
|
|
82
|
+
fileDownloadOptions: options.nativefier.fileDownloadOptions,
|
|
83
|
+
flashPluginDir: options.nativefier.flashPluginDir,
|
|
84
|
+
fullScreen: options.nativefier.fullScreen,
|
|
85
|
+
globalShortcuts: options.nativefier.globalShortcuts,
|
|
86
|
+
height: options.nativefier.height,
|
|
87
|
+
helperBundleId: options.packager.helperBundleId,
|
|
88
|
+
hideWindowFrame: options.nativefier.hideWindowFrame,
|
|
89
|
+
ignoreCertificate: options.nativefier.ignoreCertificate,
|
|
90
|
+
ignoreGpuBlacklist: options.nativefier.ignoreGpuBlacklist,
|
|
91
|
+
insecure: options.nativefier.insecure,
|
|
92
|
+
internalUrls: options.nativefier.internalUrls,
|
|
93
|
+
isUpgrade: options.packager.upgrade,
|
|
94
|
+
junk: options.packager.junk,
|
|
95
|
+
lang: options.nativefier.lang,
|
|
96
|
+
maximize: options.nativefier.maximize,
|
|
97
|
+
maxHeight: options.nativefier.maxHeight,
|
|
98
|
+
maxWidth: options.nativefier.maxWidth,
|
|
99
|
+
minHeight: options.nativefier.minHeight,
|
|
100
|
+
minWidth: options.nativefier.minWidth,
|
|
101
|
+
name: (_a = options.packager.name) !== null && _a !== void 0 ? _a : constants_1.DEFAULT_APP_NAME,
|
|
102
|
+
nativefierVersion: options.nativefier.nativefierVersion,
|
|
103
|
+
osxNotarize: options.packager.osxNotarize,
|
|
104
|
+
osxSign: options.packager.osxSign,
|
|
105
|
+
portable: options.packager.portable,
|
|
106
|
+
processEnvs: options.nativefier.processEnvs,
|
|
107
|
+
protocols: options.packager.protocols,
|
|
108
|
+
proxyRules: options.nativefier.proxyRules,
|
|
109
|
+
prune: options.packager.prune,
|
|
110
|
+
quiet: options.packager.quiet,
|
|
111
|
+
showMenuBar: options.nativefier.showMenuBar,
|
|
112
|
+
singleInstance: options.nativefier.singleInstance,
|
|
113
|
+
strictInternalUrls: options.nativefier.strictInternalUrls,
|
|
114
|
+
targetUrl: options.packager.targetUrl,
|
|
115
|
+
titleBarStyle: options.nativefier.titleBarStyle,
|
|
116
|
+
tray: options.nativefier.tray,
|
|
117
|
+
usageDescription: options.packager.usageDescription,
|
|
118
|
+
userAgent: options.nativefier.userAgent,
|
|
119
|
+
userAgentHonest: options.nativefier.userAgentHonest,
|
|
120
|
+
versionString: options.nativefier.versionString,
|
|
121
|
+
width: options.nativefier.width,
|
|
122
|
+
widevine: options.nativefier.widevine,
|
|
123
|
+
win32metadata: options.packager.win32metadata,
|
|
124
|
+
x: options.nativefier.x,
|
|
125
|
+
y: options.nativefier.y,
|
|
126
|
+
zoom: options.nativefier.zoom,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async function maybeCopyScripts(srcs, dest) {
|
|
130
|
+
if (!srcs || srcs.length === 0) {
|
|
131
|
+
log.debug('No files to inject, skipping copy.');
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const supportedInjectionExtensions = ['.css', '.js'];
|
|
135
|
+
log.debug(`Copying ${srcs.length} files to inject in app.`);
|
|
136
|
+
for (const src of srcs) {
|
|
137
|
+
if (!fs.existsSync(src)) {
|
|
138
|
+
throw new Error(`File ${src} not found. Note that Nativefier expects *local* files, not URLs.`);
|
|
139
|
+
}
|
|
140
|
+
if (supportedInjectionExtensions.indexOf(path.extname(src)) < 0) {
|
|
141
|
+
log.warn('Skipping unsupported injection file', src);
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const postFixHash = (0, helpers_1.generateRandomSuffix)();
|
|
145
|
+
const destFileName = `inject-${postFixHash}${path.extname(src)}`;
|
|
146
|
+
const destPath = path.join(dest, 'inject', destFileName);
|
|
147
|
+
log.debug(`Copying injection file "${src}" to "${destPath}"`);
|
|
148
|
+
await fs.copy(src, destPath);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Use a basic 6-character hash to prevent collisions. The hash is deterministic url & name,
|
|
153
|
+
* so that an upgrade (same URL) of an app keeps using the same appData folder.
|
|
154
|
+
* Warning! Changing this normalizing & hashing will change the way appNames are generated,
|
|
155
|
+
* changing appData folder, and users will get logged out of their apps after an upgrade.
|
|
156
|
+
*/
|
|
157
|
+
function normalizeAppName(appName, url) {
|
|
158
|
+
const hash = crypto.createHash('md5');
|
|
159
|
+
hash.update(url);
|
|
160
|
+
const postFixHash = hash.digest('hex').substring(0, 6);
|
|
161
|
+
const normalized = appName
|
|
162
|
+
.toLowerCase()
|
|
163
|
+
.replace(/[,:.]/g, '')
|
|
164
|
+
.replace(/[\s_]/g, '-');
|
|
165
|
+
return `${normalized}-nativefier-${postFixHash}`;
|
|
166
|
+
}
|
|
167
|
+
function changeAppPackageJsonName(appPath, name, url) {
|
|
168
|
+
const packageJsonPath = path.join(appPath, '/package.json');
|
|
169
|
+
const packageJson = (0, parseUtils_1.parseJson)(fs.readFileSync(packageJsonPath).toString());
|
|
170
|
+
if (!packageJson) {
|
|
171
|
+
throw new Error(`Could not load package.json from ${packageJsonPath}`);
|
|
172
|
+
}
|
|
173
|
+
const normalizedAppName = normalizeAppName(name, url);
|
|
174
|
+
packageJson.name = normalizedAppName;
|
|
175
|
+
log.debug(`Updating ${packageJsonPath} 'name' field to ${normalizedAppName}`);
|
|
176
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
177
|
+
return normalizedAppName;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Creates a temporary directory, copies the './app folder' inside,
|
|
181
|
+
* and adds a text file with the app configuration.
|
|
182
|
+
*/
|
|
183
|
+
async function prepareElectronApp(src, dest, options, rawOptions) {
|
|
184
|
+
log.debug(`Copying electron app from ${src} to ${dest}`);
|
|
185
|
+
try {
|
|
186
|
+
await fs.copy(src, dest);
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
throw `Error copying electron app from ${src} to temp dir ${dest}. Error: ${err.message}`;
|
|
190
|
+
}
|
|
191
|
+
const appJsonPath = path.join(dest, '/nativefier.json');
|
|
192
|
+
const pickedOptions = pickElectronAppArgs(options);
|
|
193
|
+
log.debug(`Writing app config to ${appJsonPath}`, pickedOptions);
|
|
194
|
+
await fs.writeFile(appJsonPath, JSON.stringify(pickedOptions));
|
|
195
|
+
if (options.nativefier.bookmarksMenu) {
|
|
196
|
+
const bookmarksJsonPath = path.join(dest, '/bookmarks.json');
|
|
197
|
+
try {
|
|
198
|
+
await fs.copy(options.nativefier.bookmarksMenu, bookmarksJsonPath);
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
log.error('Error copying bookmarks menu config file.', err);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
await maybeCopyScripts(options.nativefier.inject, dest);
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
log.error('Error copying injection files.', err);
|
|
209
|
+
}
|
|
210
|
+
// 注入自动更新功能
|
|
211
|
+
if (rawOptions === null || rawOptions === void 0 ? void 0 : rawOptions.autoUpdate) {
|
|
212
|
+
log.info('🔄 Enabling auto-update...');
|
|
213
|
+
const updateConfig = (0, updater_1.parseUpdateConfig)(rawOptions.autoUpdate);
|
|
214
|
+
(0, updater_1.injectAutoUpdate)(dest, updateConfig);
|
|
215
|
+
log.info('✅ Auto-update enabled');
|
|
216
|
+
}
|
|
217
|
+
const normalizedAppName = changeAppPackageJsonName(dest, options.packager.name, options.packager.targetUrl);
|
|
218
|
+
options.packager.appBundleId = `com.electron.nativefier.${normalizedAppName}`;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=prepareElectronApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareElectronApp.js","sourceRoot":"","sources":["../../src/build/prepareElectronApp.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import 'source-map-support/register';
|
|
3
|
+
import yargs from 'yargs';
|
|
4
|
+
import { RawOptions } from '../shared/src/options/model';
|
|
5
|
+
export declare function initArgs(argv: string[]): yargs.Argv<RawOptions>;
|
|
6
|
+
export declare function parseArgs(args: yargs.Argv<RawOptions>): RawOptions;
|