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,305 @@
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.getOptions = getOptions;
40
+ exports.normalizePlatform = normalizePlatform;
41
+ const fs = __importStar(require("fs"));
42
+ const axios_1 = __importDefault(require("axios"));
43
+ const debug = __importStar(require("debug"));
44
+ const log = __importStar(require("loglevel"));
45
+ // package.json is `require`d to let tsc strip the `src` folder by determining
46
+ // baseUrl=src. A static import would prevent that and cause an ugly extra `src` folder in `lib`
47
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
48
+ const packageJson = require('../../package.json');
49
+ const constants_1 = require("../constants");
50
+ const inferOs_1 = require("../infer/inferOs");
51
+ const asyncConfig_1 = require("./asyncConfig");
52
+ const normalizeUrl_1 = require("./normalizeUrl");
53
+ const parseUtils_1 = require("../utils/parseUtils");
54
+ const autologin_1 = require("../autologin");
55
+ const helpers_1 = require("../helpers/helpers");
56
+ const inferDefaults_1 = require("../infer/inferDefaults");
57
+ const path = __importStar(require("path"));
58
+ /**
59
+ * 如果是网络 URL,下载图标到本地
60
+ */
61
+ async function resolveIcon(icon) {
62
+ if (!icon || (!icon.startsWith('http://') && !icon.startsWith('https://'))) {
63
+ return icon;
64
+ }
65
+ log.info(`📥 Downloading icon from ${icon}...`);
66
+ try {
67
+ const result = await (0, helpers_1.downloadFile)(icon);
68
+ if (!(result === null || result === void 0 ? void 0 : result.data))
69
+ return undefined;
70
+ const tmpDir = (0, helpers_1.getTempDir)('icon');
71
+ const ext = result.ext || path.extname(new URL(icon).pathname) || '.png';
72
+ const iconPath = path.join(tmpDir, `icon${ext}`);
73
+ await fs.promises.writeFile(iconPath, result.data);
74
+ log.info(`✅ Icon downloaded to ${iconPath}`);
75
+ return iconPath;
76
+ }
77
+ catch (err) {
78
+ log.warn('Failed to download icon:', err.message);
79
+ return undefined;
80
+ }
81
+ }
82
+ const SEMVER_VERSION_NUMBER_REGEX = /\d+\.\d+\.\d+[-_\w\d.]*/;
83
+ /**
84
+ * Process and validate raw user arguments
85
+ */
86
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
87
+ async function getOptions(rawOptions) {
88
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13;
89
+ // PWA 自动检测
90
+ if (rawOptions.pwa && rawOptions.targetUrl) {
91
+ log.info('📱 Detecting PWA manifest...');
92
+ const pwaDefaults = await (0, inferDefaults_1.inferFromPWA)(rawOptions.targetUrl);
93
+ if (pwaDefaults.hasPWA) {
94
+ log.info('✅ PWA manifest found!');
95
+ if (pwaDefaults.name && !rawOptions.name) {
96
+ log.info(` Using name: ${pwaDefaults.name}`);
97
+ rawOptions.name = pwaDefaults.name;
98
+ }
99
+ if (pwaDefaults.icon && !rawOptions.icon) {
100
+ log.info(` Using icon from manifest`);
101
+ rawOptions.icon = pwaDefaults.icon;
102
+ }
103
+ if (pwaDefaults.backgroundColor && !rawOptions.backgroundColor) {
104
+ rawOptions.backgroundColor = pwaDefaults.backgroundColor;
105
+ }
106
+ }
107
+ else {
108
+ log.info('⚠️ No PWA manifest found, using defaults');
109
+ }
110
+ }
111
+ // 提前处理网络图标
112
+ const resolvedIcon = await resolveIcon(rawOptions.icon);
113
+ const options = {
114
+ packager: {
115
+ appCopyright: rawOptions.appCopyright,
116
+ appVersion: rawOptions.appVersion,
117
+ arch: (_a = rawOptions.arch) !== null && _a !== void 0 ? _a : (0, inferOs_1.inferArch)(),
118
+ asar: (_c = (_b = rawOptions.asar) !== null && _b !== void 0 ? _b : rawOptions.conceal) !== null && _c !== void 0 ? _c : false,
119
+ buildVersion: rawOptions.buildVersion,
120
+ darwinDarkModeSupport: (_d = rawOptions.darwinDarkModeSupport) !== null && _d !== void 0 ? _d : false,
121
+ dir: constants_1.PLACEHOLDER_APP_DIR,
122
+ electronVersion: (_e = rawOptions.electronVersion) !== null && _e !== void 0 ? _e : constants_1.DEFAULT_ELECTRON_VERSION,
123
+ icon: resolvedIcon,
124
+ name: typeof rawOptions.name === 'string' ? rawOptions.name : '',
125
+ out: (_f = rawOptions.out) !== null && _f !== void 0 ? _f : process.cwd(),
126
+ overwrite: rawOptions.overwrite,
127
+ quiet: (_g = rawOptions.quiet) !== null && _g !== void 0 ? _g : false,
128
+ platform: rawOptions.platform,
129
+ portable: (_h = rawOptions.portable) !== null && _h !== void 0 ? _h : false,
130
+ targetUrl: rawOptions.targetUrl === undefined
131
+ ? '' // We'll plug this in later via upgrade
132
+ : (0, normalizeUrl_1.normalizeUrl)(rawOptions.targetUrl),
133
+ tmpdir: false, // workaround for electron-packager#375
134
+ upgrade: rawOptions.upgrade !== undefined ? true : false,
135
+ upgradeFrom: (_j = rawOptions.upgradeFrom) !== null && _j !== void 0 ? _j : (rawOptions.upgrade || undefined),
136
+ win32metadata: (_k = rawOptions.win32metadata) !== null && _k !== void 0 ? _k : {
137
+ ProductName: rawOptions.name,
138
+ InternalName: rawOptions.name,
139
+ FileDescription: rawOptions.name,
140
+ },
141
+ },
142
+ nativefier: {
143
+ accessibilityPrompt: true,
144
+ alwaysOnTop: (_l = rawOptions.alwaysOnTop) !== null && _l !== void 0 ? _l : false,
145
+ backgroundColor: rawOptions.backgroundColor,
146
+ basicAuthPassword: rawOptions.basicAuthPassword,
147
+ basicAuthUsername: rawOptions.basicAuthUsername,
148
+ blockExternalUrls: (_m = rawOptions.blockExternalUrls) !== null && _m !== void 0 ? _m : false,
149
+ bookmarksMenu: rawOptions.bookmarksMenu,
150
+ bounce: (_o = rawOptions.bounce) !== null && _o !== void 0 ? _o : false,
151
+ browserwindowOptions: rawOptions.browserwindowOptions,
152
+ clearCache: (_p = rawOptions.clearCache) !== null && _p !== void 0 ? _p : false,
153
+ counter: (_q = rawOptions.counter) !== null && _q !== void 0 ? _q : false,
154
+ crashReporter: rawOptions.crashReporter,
155
+ disableContextMenu: (_r = rawOptions.disableContextMenu) !== null && _r !== void 0 ? _r : false,
156
+ disableDevTools: (_s = rawOptions.disableDevTools) !== null && _s !== void 0 ? _s : false,
157
+ disableGpu: (_t = rawOptions.disableGpu) !== null && _t !== void 0 ? _t : false,
158
+ diskCacheSize: rawOptions.diskCacheSize,
159
+ enableEs3Apis: (_u = rawOptions.enableEs3Apis) !== null && _u !== void 0 ? _u : false,
160
+ fastQuit: (_v = rawOptions.fastQuit) !== null && _v !== void 0 ? _v : false,
161
+ fileDownloadOptions: rawOptions.fileDownloadOptions,
162
+ flashPluginDir: rawOptions.flashPath,
163
+ fullScreen: (_w = rawOptions.fullScreen) !== null && _w !== void 0 ? _w : false,
164
+ globalShortcuts: undefined,
165
+ hideWindowFrame: (_x = rawOptions.hideWindowFrame) !== null && _x !== void 0 ? _x : false,
166
+ ignoreCertificate: (_y = rawOptions.ignoreCertificate) !== null && _y !== void 0 ? _y : false,
167
+ ignoreGpuBlacklist: (_z = rawOptions.ignoreGpuBlacklist) !== null && _z !== void 0 ? _z : false,
168
+ inject: (_0 = rawOptions.inject) !== null && _0 !== void 0 ? _0 : [],
169
+ insecure: (_1 = rawOptions.insecure) !== null && _1 !== void 0 ? _1 : false,
170
+ internalUrls: rawOptions.internalUrls,
171
+ lang: rawOptions.lang,
172
+ maximize: (_2 = rawOptions.maximize) !== null && _2 !== void 0 ? _2 : false,
173
+ nativefierVersion: packageJson.version,
174
+ quiet: (_3 = rawOptions.quiet) !== null && _3 !== void 0 ? _3 : false,
175
+ processEnvs: rawOptions.processEnvs,
176
+ proxyRules: rawOptions.proxyRules,
177
+ showMenuBar: (_4 = rawOptions.showMenuBar) !== null && _4 !== void 0 ? _4 : false,
178
+ singleInstance: (_5 = rawOptions.singleInstance) !== null && _5 !== void 0 ? _5 : false,
179
+ strictInternalUrls: (_6 = rawOptions.strictInternalUrls) !== null && _6 !== void 0 ? _6 : false,
180
+ titleBarStyle: rawOptions.titleBarStyle,
181
+ tray: (_7 = rawOptions.tray) !== null && _7 !== void 0 ? _7 : 'false',
182
+ userAgent: rawOptions.userAgent,
183
+ userAgentHonest: (_8 = rawOptions.userAgentHonest) !== null && _8 !== void 0 ? _8 : false,
184
+ verbose: (_9 = rawOptions.verbose) !== null && _9 !== void 0 ? _9 : false,
185
+ versionString: rawOptions.versionString,
186
+ width: (_10 = rawOptions.width) !== null && _10 !== void 0 ? _10 : 1280,
187
+ height: (_11 = rawOptions.height) !== null && _11 !== void 0 ? _11 : 800,
188
+ minWidth: rawOptions.minWidth,
189
+ minHeight: rawOptions.minHeight,
190
+ maxWidth: rawOptions.maxWidth,
191
+ maxHeight: rawOptions.maxHeight,
192
+ widevine: (_12 = rawOptions.widevine) !== null && _12 !== void 0 ? _12 : false,
193
+ x: rawOptions.x,
194
+ y: rawOptions.y,
195
+ zoom: (_13 = rawOptions.zoom) !== null && _13 !== void 0 ? _13 : 1.0,
196
+ },
197
+ };
198
+ if (options.nativefier.verbose) {
199
+ log.setLevel('trace');
200
+ try {
201
+ debug.enable('electron-packager');
202
+ }
203
+ catch (err) {
204
+ log.error('Failed to enable electron-packager debug output. This should not happen,', 'and suggests their internals changed. Please report an issue.', err);
205
+ }
206
+ log.debug('Running in verbose mode! This will produce a mountain of logs and', 'is recommended only for troubleshooting or if you like Shakespeare.');
207
+ }
208
+ else if (options.nativefier.quiet) {
209
+ log.setLevel('silent');
210
+ }
211
+ else {
212
+ log.setLevel('info');
213
+ }
214
+ let requestedElectronBefore16 = false;
215
+ if (options.packager.electronVersion) {
216
+ const requestedVersion = options.packager.electronVersion;
217
+ if (!SEMVER_VERSION_NUMBER_REGEX.exec(requestedVersion)) {
218
+ throw `Invalid Electron version number "${requestedVersion}". Aborting.`;
219
+ }
220
+ const requestedMajorVersion = parseInt(requestedVersion.split('.')[0], 10);
221
+ if (requestedMajorVersion < constants_1.ELECTRON_MAJOR_VERSION) {
222
+ log.warn(`\nATTENTION: Using **old** Electron version ${requestedVersion} as requested.`, "\nIt's untested, bugs and horror will happen, you're on your own.", `\nSimply abort & re-run without passing the version flag to default to ${constants_1.DEFAULT_ELECTRON_VERSION}`);
223
+ }
224
+ if (requestedMajorVersion < 16) {
225
+ requestedElectronBefore16 = true;
226
+ }
227
+ }
228
+ if (options.nativefier.widevine) {
229
+ const widevineSuffix = requestedElectronBefore16 ? '-wvvmp' : '+wvcus';
230
+ log.debug(`Using widevine release suffix "${widevineSuffix}"`);
231
+ const widevineElectronVersion = `${options.packager.electronVersion}${widevineSuffix}`;
232
+ try {
233
+ await axios_1.default.get(`https://github.com/castlabs/electron-releases/releases/tag/v${widevineElectronVersion}`);
234
+ }
235
+ catch {
236
+ throw new Error(`\nERROR: castLabs Electron version "${widevineElectronVersion}" does not exist. \nVerify versions at https://github.com/castlabs/electron-releases/releases. \nAborting.`);
237
+ }
238
+ options.packager.electronVersion = widevineElectronVersion;
239
+ process.env.ELECTRON_MIRROR =
240
+ 'https://github.com/castlabs/electron-releases/releases/download/';
241
+ log.warn(`\nATTENTION: Using the **unofficial** Electron from castLabs`, "\nIt implements Google's Widevine Content Decryption Module (CDM) for DRM-enabled playback.", `\nSimply abort & re-run without passing the widevine flag to default to ${options.packager.electronVersion !== undefined
242
+ ? options.packager.electronVersion
243
+ : constants_1.DEFAULT_ELECTRON_VERSION}`);
244
+ }
245
+ if (options.nativefier.flashPluginDir) {
246
+ options.nativefier.insecure = true;
247
+ }
248
+ if (options.nativefier.userAgentHonest && options.nativefier.userAgent) {
249
+ options.nativefier.userAgent = undefined;
250
+ log.warn(`\nATTENTION: user-agent AND user-agent-honest/honest were provided. In this case, honesty wins. user-agent will be ignored`);
251
+ }
252
+ options.packager.platform = normalizePlatform(options.packager.platform);
253
+ if (options.nativefier.maxWidth &&
254
+ options.nativefier.width &&
255
+ options.nativefier.width > options.nativefier.maxWidth) {
256
+ options.nativefier.width = options.nativefier.maxWidth;
257
+ }
258
+ if (options.nativefier.maxHeight &&
259
+ options.nativefier.height &&
260
+ options.nativefier.height > options.nativefier.maxHeight) {
261
+ options.nativefier.height = options.nativefier.maxHeight;
262
+ }
263
+ if (options.packager.portable) {
264
+ log.info('Building app as portable.', 'SECURITY WARNING: all data accumulated in the app folder after running it', '(including login information, cache, cookies) will be saved', 'in the app folder. If this app is then shared with others,', 'THEY WILL HAVE THAT ACCUMULATED DATA, POTENTIALLY INCLUDING ACCESS', 'TO ANY ACCOUNTS YOU LOGGED INTO.');
265
+ }
266
+ if (rawOptions.globalShortcuts) {
267
+ if (typeof rawOptions.globalShortcuts === 'string') {
268
+ // This is a file we got over the command line
269
+ log.debug('Using global shortcuts file at', rawOptions.globalShortcuts);
270
+ const globalShortcuts = (0, parseUtils_1.parseJson)(fs.readFileSync(rawOptions.globalShortcuts).toString());
271
+ options.nativefier.globalShortcuts = globalShortcuts;
272
+ }
273
+ else {
274
+ // This is an object we got from an existing config in an upgrade
275
+ log.debug('Using global shortcuts object', rawOptions.globalShortcuts);
276
+ options.nativefier.globalShortcuts = rawOptions.globalShortcuts;
277
+ }
278
+ }
279
+ // 处理自动登录
280
+ if (rawOptions.autoLogin) {
281
+ const autoLoginScript = (0, autologin_1.createAutoLoginInjectFile)(rawOptions.autoLogin);
282
+ if (autoLoginScript) {
283
+ if (!options.nativefier.inject) {
284
+ options.nativefier.inject = [];
285
+ }
286
+ options.nativefier.inject.push(autoLoginScript);
287
+ log.info('🔐 Auto-login script will be injected');
288
+ }
289
+ }
290
+ await (0, asyncConfig_1.asyncConfig)(options);
291
+ return options;
292
+ }
293
+ function normalizePlatform(platform) {
294
+ if (!platform) {
295
+ return (0, inferOs_1.inferPlatform)();
296
+ }
297
+ if (platform.toLowerCase() === 'windows') {
298
+ return 'win32';
299
+ }
300
+ if (['osx', 'mac', 'macos'].includes(platform.toLowerCase())) {
301
+ return 'darwin';
302
+ }
303
+ return platform.toLowerCase();
304
+ }
305
+ //# sourceMappingURL=optionsMain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optionsMain.js","sourceRoot":"","sources":["../../src/options/optionsMain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 配置预设系统
3
+ * 为常见使用场景提供优化的默认配置
4
+ */
5
+ import { RawOptions } from '../../shared/src/options/model';
6
+ export interface Preset {
7
+ name: string;
8
+ description: string;
9
+ options: Partial<RawOptions>;
10
+ }
11
+ export declare const presets: Record<string, Preset>;
12
+ /**
13
+ * 获取预设配置
14
+ */
15
+ export declare function getPreset(name: string): Preset | undefined;
16
+ /**
17
+ * 列出所有可用预设
18
+ */
19
+ export declare function listPresets(): Preset[];
20
+ /**
21
+ * 应用预设到选项
22
+ */
23
+ export declare function applyPreset(options: RawOptions, presetName: string): RawOptions;
24
+ /**
25
+ * 根据 URL 智能推荐预设
26
+ */
27
+ export declare function suggestPreset(url: string): string | undefined;
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ /**
3
+ * 配置预设系统
4
+ * 为常见使用场景提供优化的默认配置
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.presets = void 0;
8
+ exports.getPreset = getPreset;
9
+ exports.listPresets = listPresets;
10
+ exports.applyPreset = applyPreset;
11
+ exports.suggestPreset = suggestPreset;
12
+ exports.presets = {
13
+ // 社交媒体应用预设
14
+ social: {
15
+ name: 'Social Media',
16
+ description: 'Optimized for social media apps (WhatsApp, Telegram, Discord)',
17
+ options: {
18
+ singleInstance: true,
19
+ tray: 'true',
20
+ counter: true,
21
+ bounce: true,
22
+ clearCache: false,
23
+ fullScreen: false,
24
+ },
25
+ },
26
+ // 生产力工具预设
27
+ productivity: {
28
+ name: 'Productivity',
29
+ description: 'Optimized for productivity apps (Notion, Trello, Slack)',
30
+ options: {
31
+ singleInstance: true,
32
+ tray: 'true',
33
+ maximize: false,
34
+ width: 1400,
35
+ height: 900,
36
+ clearCache: false,
37
+ },
38
+ },
39
+ // 媒体播放预设
40
+ media: {
41
+ name: 'Media',
42
+ description: 'Optimized for media streaming (YouTube, Netflix, Spotify)',
43
+ options: {
44
+ singleInstance: true,
45
+ widevine: false, // 用户需要手动启用 DRM
46
+ fullScreen: false,
47
+ width: 1280,
48
+ height: 720,
49
+ userAgentHonest: true,
50
+ },
51
+ },
52
+ // 邮件客户端预设
53
+ email: {
54
+ name: 'Email',
55
+ description: 'Optimized for email clients (Gmail, Outlook)',
56
+ options: {
57
+ singleInstance: true,
58
+ tray: 'true',
59
+ counter: true,
60
+ bounce: true,
61
+ width: 1200,
62
+ height: 800,
63
+ },
64
+ },
65
+ // 开发工具预设
66
+ developer: {
67
+ name: 'Developer Tools',
68
+ description: 'Optimized for developer tools (GitHub, GitLab, Jira)',
69
+ options: {
70
+ singleInstance: false,
71
+ disableDevTools: false,
72
+ width: 1400,
73
+ height: 900,
74
+ },
75
+ },
76
+ // 最小化预设
77
+ minimal: {
78
+ name: 'Minimal',
79
+ description: 'Minimal configuration with basic defaults',
80
+ options: {
81
+ singleInstance: false,
82
+ tray: 'false',
83
+ showMenuBar: false,
84
+ disableContextMenu: false,
85
+ },
86
+ },
87
+ // 安全优先预设
88
+ secure: {
89
+ name: 'Secure',
90
+ description: 'Security-focused configuration',
91
+ options: {
92
+ singleInstance: true,
93
+ clearCache: true,
94
+ disableDevTools: true,
95
+ disableContextMenu: true,
96
+ blockExternalUrls: true,
97
+ },
98
+ },
99
+ // Kiosk 模式预设
100
+ kiosk: {
101
+ name: 'Kiosk',
102
+ description: 'Full-screen kiosk mode for public displays',
103
+ options: {
104
+ fullScreen: true,
105
+ singleInstance: true,
106
+ disableDevTools: true,
107
+ disableContextMenu: true,
108
+ hideWindowFrame: true,
109
+ alwaysOnTop: true,
110
+ },
111
+ },
112
+ };
113
+ /**
114
+ * 获取预设配置
115
+ */
116
+ function getPreset(name) {
117
+ return exports.presets[name.toLowerCase()];
118
+ }
119
+ /**
120
+ * 列出所有可用预设
121
+ */
122
+ function listPresets() {
123
+ return Object.values(exports.presets);
124
+ }
125
+ /**
126
+ * 应用预设到选项
127
+ */
128
+ function applyPreset(options, presetName) {
129
+ const preset = getPreset(presetName);
130
+ if (!preset) {
131
+ throw new Error(`Unknown preset: ${presetName}. Available: ${Object.keys(exports.presets).join(', ')}`);
132
+ }
133
+ return { ...preset.options, ...options };
134
+ }
135
+ /**
136
+ * 根据 URL 智能推荐预设
137
+ */
138
+ function suggestPreset(url) {
139
+ const urlLower = url.toLowerCase();
140
+ // 社交媒体
141
+ if (/whatsapp|telegram|discord|messenger|slack|teams/.test(urlLower)) {
142
+ return 'social';
143
+ }
144
+ // 邮件
145
+ if (/gmail|outlook|mail|proton/.test(urlLower)) {
146
+ return 'email';
147
+ }
148
+ // 媒体
149
+ if (/youtube|netflix|spotify|twitch|bilibili/.test(urlLower)) {
150
+ return 'media';
151
+ }
152
+ // 生产力
153
+ if (/notion|trello|asana|monday|clickup|todoist/.test(urlLower)) {
154
+ return 'productivity';
155
+ }
156
+ // 开发工具
157
+ if (/github|gitlab|bitbucket|jira|confluence/.test(urlLower)) {
158
+ return 'developer';
159
+ }
160
+ return undefined;
161
+ }
162
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/presets/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * PWA (Progressive Web App) 支持
3
+ * 解析 Web App Manifest,提取应用信息
4
+ */
5
+ export interface WebAppManifest {
6
+ name?: string;
7
+ short_name?: string;
8
+ description?: string;
9
+ start_url?: string;
10
+ display?: 'fullscreen' | 'standalone' | 'minimal-ui' | 'browser';
11
+ orientation?: string;
12
+ theme_color?: string;
13
+ background_color?: string;
14
+ icons?: Array<{
15
+ src: string;
16
+ sizes?: string;
17
+ type?: string;
18
+ purpose?: string;
19
+ }>;
20
+ scope?: string;
21
+ lang?: string;
22
+ categories?: string[];
23
+ }
24
+ export interface PWAInfo {
25
+ manifest?: WebAppManifest;
26
+ manifestUrl?: string;
27
+ themeColor?: string;
28
+ appleTouchIcon?: string;
29
+ favicon?: string;
30
+ title?: string;
31
+ description?: string;
32
+ }
33
+ /**
34
+ * 获取网站的 PWA 信息
35
+ */
36
+ export declare function fetchPWAInfo(url: string): Promise<PWAInfo>;
37
+ /**
38
+ * 从 PWA 信息中获取最佳图标 URL
39
+ */
40
+ export declare function getBestIconFromManifest(manifest: WebAppManifest, baseUrl: string): string | undefined;
41
+ /**
42
+ * 将 PWA manifest 的 display 模式转换为 Nativefier 选项
43
+ */
44
+ export declare function pwaDisplayToOptions(display?: string): Partial<{
45
+ fullScreen: boolean;
46
+ hideWindowFrame: boolean;
47
+ }>;
48
+ /**
49
+ * 从 PWA 信息生成 Nativefier 选项建议
50
+ */
51
+ export declare function pwaInfoToOptions(info: PWAInfo, baseUrl: string): Partial<{
52
+ name: string;
53
+ icon: string;
54
+ backgroundColor: string;
55
+ fullScreen: boolean;
56
+ hideWindowFrame: boolean;
57
+ }>;