app-builder-lib 26.9.1 → 26.11.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/out/ProtonFramework.d.ts +1 -1
- package/out/ProtonFramework.js +2 -2
- package/out/ProtonFramework.js.map +1 -1
- package/out/binDownload.d.ts +2 -18
- package/out/binDownload.js +33 -185
- package/out/binDownload.js.map +1 -1
- package/out/codeSign/windowsSignToolManager.js +1 -1
- package/out/codeSign/windowsSignToolManager.js.map +1 -1
- package/out/configuration.d.ts +100 -68
- package/out/configuration.js.map +1 -1
- package/out/core.d.ts +2 -2
- package/out/core.js.map +1 -1
- package/out/electron/ElectronFramework.d.ts +2 -19
- package/out/electron/ElectronFramework.js +47 -40
- package/out/electron/ElectronFramework.js.map +1 -1
- package/out/electron/injectFFMPEG.d.ts +10 -1
- package/out/electron/injectFFMPEG.js +48 -34
- package/out/electron/injectFFMPEG.js.map +1 -1
- package/out/frameworks/LibUiFramework.d.ts +3 -2
- package/out/frameworks/LibUiFramework.js +5 -2
- package/out/frameworks/LibUiFramework.js.map +1 -1
- package/out/index.d.ts +3 -2
- package/out/index.js +1 -1
- package/out/index.js.map +1 -1
- package/out/macPackager.js +24 -3
- package/out/macPackager.js.map +1 -1
- package/out/node-module-collector/moduleManager.d.ts +7 -1
- package/out/node-module-collector/moduleManager.js +9 -2
- package/out/node-module-collector/moduleManager.js.map +1 -1
- package/out/node-module-collector/nodeModulesCollector.js +5 -3
- package/out/node-module-collector/nodeModulesCollector.js.map +1 -1
- package/out/node-module-collector/pnpmNodeModulesCollector.d.ts +26 -2
- package/out/node-module-collector/pnpmNodeModulesCollector.js +98 -18
- package/out/node-module-collector/pnpmNodeModulesCollector.js.map +1 -1
- package/out/options/AppXOptions.d.ts +1 -1
- package/out/options/AppXOptions.js.map +1 -1
- package/out/options/PlatformSpecificBuildOptions.d.ts +31 -11
- package/out/options/PlatformSpecificBuildOptions.js.map +1 -1
- package/out/options/SnapOptions.d.ts +1 -1
- package/out/options/SnapOptions.js.map +1 -1
- package/out/options/linuxOptions.d.ts +38 -12
- package/out/options/linuxOptions.js.map +1 -1
- package/out/options/macOptions.d.ts +10 -7
- package/out/options/macOptions.js.map +1 -1
- package/out/options/metadata.d.ts +1 -2
- package/out/options/metadata.js.map +1 -1
- package/out/options/pkgOptions.d.ts +1 -1
- package/out/options/pkgOptions.js.map +1 -1
- package/out/options/winOptions.d.ts +15 -5
- package/out/options/winOptions.js.map +1 -1
- package/out/packager.js +12 -12
- package/out/packager.js.map +1 -1
- package/out/platformPackager.js +2 -5
- package/out/platformPackager.js.map +1 -1
- package/out/targets/FpmTarget.js +3 -2
- package/out/targets/FpmTarget.js.map +1 -1
- package/out/targets/LinuxTargetHelper.d.ts +4 -4
- package/out/targets/LinuxTargetHelper.js.map +1 -1
- package/out/targets/MsiTarget.js +1 -1
- package/out/targets/MsiTarget.js.map +1 -1
- package/out/targets/appimage/AppImageTarget.d.ts +1 -0
- package/out/targets/appimage/AppImageTarget.js +30 -10
- package/out/targets/appimage/AppImageTarget.js.map +1 -1
- package/out/targets/appimage/appImageUtil.d.ts +30 -2
- package/out/targets/appimage/appImageUtil.js +26 -24
- package/out/targets/appimage/appImageUtil.js.map +1 -1
- package/out/targets/appimage/appLauncher.d.ts +1 -1
- package/out/targets/appimage/appLauncher.js +7 -3
- package/out/targets/appimage/appLauncher.js.map +1 -1
- package/out/targets/archive.js +20 -6
- package/out/targets/archive.js.map +1 -1
- package/out/targets/nsis/NsisTarget.js +11 -11
- package/out/targets/nsis/NsisTarget.js.map +1 -1
- package/out/targets/nsis/nsisOptions.d.ts +20 -16
- package/out/targets/nsis/nsisOptions.js.map +1 -1
- package/out/targets/nsis/nsisScriptGenerator.d.ts +1 -0
- package/out/targets/nsis/nsisScriptGenerator.js +14 -1
- package/out/targets/nsis/nsisScriptGenerator.js.map +1 -1
- package/out/targets/nsis/nsisUtil.js +4 -3
- package/out/targets/nsis/nsisUtil.js.map +1 -1
- package/out/toolsets/linux.js +8 -8
- package/out/toolsets/linux.js.map +1 -1
- package/out/toolsets/windows.d.ts +16 -16
- package/out/toolsets/windows.js +29 -21
- package/out/toolsets/windows.js.map +1 -1
- package/out/util/NodeModuleCopyHelper.js +1 -1
- package/out/util/NodeModuleCopyHelper.js.map +1 -1
- package/out/util/appBuilder.js +1 -1
- package/out/util/appBuilder.js.map +1 -1
- package/out/util/cacheState.d.ts +28 -0
- package/out/util/cacheState.js +143 -0
- package/out/util/cacheState.js.map +1 -0
- package/out/util/electronGet.d.ts +56 -0
- package/out/util/electronGet.js +388 -0
- package/out/util/electronGet.js.map +1 -0
- package/out/util/macroExpander.js +3 -0
- package/out/util/macroExpander.js.map +1 -1
- package/out/util/resEdit.d.ts +10 -0
- package/out/util/resEdit.js +48 -0
- package/out/util/resEdit.js.map +1 -0
- package/out/util/resolve.d.ts +1 -1
- package/out/util/resolve.js +16 -1
- package/out/util/resolve.js.map +1 -1
- package/out/version.d.ts +1 -1
- package/out/version.js +1 -1
- package/out/version.js.map +1 -1
- package/out/vm/ParallelsVm.d.ts +16 -0
- package/out/vm/ParallelsVm.js +0 -1
- package/out/vm/ParallelsVm.js.map +1 -1
- package/out/winPackager.js +44 -42
- package/out/winPackager.js.map +1 -1
- package/package.json +11 -9
- package/scheme.json +672 -135
|
@@ -9,6 +9,7 @@ const tiny_async_pool_1 = require("tiny-async-pool");
|
|
|
9
9
|
const index_1 = require("../index");
|
|
10
10
|
const pathManager_1 = require("../util/pathManager");
|
|
11
11
|
const resolve_1 = require("../util/resolve");
|
|
12
|
+
const electronGet_1 = require("../util/electronGet");
|
|
12
13
|
const electronMac_1 = require("./electronMac");
|
|
13
14
|
const electronVersion_1 = require("./electronVersion");
|
|
14
15
|
const electronWin_1 = require("./electronWin");
|
|
@@ -21,12 +22,18 @@ function createBrandingOpts(opts) {
|
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
function createDownloadOpts(opts, platform, arch, electronVersion) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
25
|
+
var _a;
|
|
26
|
+
const base = { platform, arch, version: electronVersion };
|
|
27
|
+
const dl = opts.electronDownload;
|
|
28
|
+
if (dl == null) {
|
|
29
|
+
return base;
|
|
30
|
+
}
|
|
31
|
+
if (Object.hasOwnProperty.call(dl, "mirrorOptions")) {
|
|
32
|
+
// ElectronGetOptions: flatten mirrorOptions.mirror for the app-builder binary
|
|
33
|
+
const { mirrorOptions } = dl;
|
|
34
|
+
return { ...base, mirror: (_a = mirrorOptions === null || mirrorOptions === void 0 ? void 0 : mirrorOptions.mirror) !== null && _a !== void 0 ? _a : undefined };
|
|
35
|
+
}
|
|
36
|
+
return { ...base, ...dl };
|
|
30
37
|
}
|
|
31
38
|
async function beforeCopyExtraFiles(options) {
|
|
32
39
|
const { appOutDir, packager } = options;
|
|
@@ -93,10 +100,10 @@ async function removeUnusedLanguagesIfNeeded(options) {
|
|
|
93
100
|
await (0, tiny_async_pool_1.default)(builder_util_1.MAX_FILE_REQUESTS, allDeletedFiles, it => it);
|
|
94
101
|
}
|
|
95
102
|
class ElectronFramework {
|
|
96
|
-
constructor(name, version,
|
|
103
|
+
constructor(name, version, macOsProductName) {
|
|
97
104
|
this.name = name;
|
|
98
105
|
this.version = version;
|
|
99
|
-
this.
|
|
106
|
+
this.macOsProductName = macOsProductName;
|
|
100
107
|
// noinspection JSUnusedGlobalSymbols
|
|
101
108
|
this.macOsDefaultTargets = ["zip", "dmg"];
|
|
102
109
|
// noinspection JSUnusedGlobalSymbols
|
|
@@ -106,6 +113,9 @@ class ElectronFramework {
|
|
|
106
113
|
// noinspection JSUnusedGlobalSymbols
|
|
107
114
|
this.isNpmRebuildRequired = true;
|
|
108
115
|
}
|
|
116
|
+
get distMacOsAppName() {
|
|
117
|
+
return `${this.macOsProductName}.app`;
|
|
118
|
+
}
|
|
109
119
|
getDefaultIcon(platform) {
|
|
110
120
|
if (platform === index_1.Platform.LINUX) {
|
|
111
121
|
return path.join((0, pathManager_1.getTemplatePath)("icons"), "electron-linux");
|
|
@@ -120,7 +130,8 @@ class ElectronFramework {
|
|
|
120
130
|
const shouldCleanup = await unpack(options, downloadOptions, this.distMacOsAppName);
|
|
121
131
|
await cleanupAfterUnpack(options, this.distMacOsAppName, shouldCleanup);
|
|
122
132
|
if (options.packager.config.downloadAlternateFFmpeg) {
|
|
123
|
-
|
|
133
|
+
const injector = new injectFFMPEG_1.FFMPEGInjector(options, this.version, createBrandingOpts(options.packager.config));
|
|
134
|
+
await injector.inject();
|
|
124
135
|
}
|
|
125
136
|
}
|
|
126
137
|
beforeCopyExtraFiles(options) {
|
|
@@ -143,27 +154,14 @@ async function createElectronFrameworkSupport(configuration, packager) {
|
|
|
143
154
|
configuration.electronVersion = version;
|
|
144
155
|
}
|
|
145
156
|
const branding = createBrandingOpts(configuration);
|
|
146
|
-
return new ElectronFramework(branding.projectName, version,
|
|
157
|
+
return new ElectronFramework(branding.projectName, version, branding.productName);
|
|
147
158
|
}
|
|
148
159
|
/**
|
|
149
160
|
* Unpacks a custom or default Electron distribution into the app output directory.
|
|
150
161
|
*/
|
|
151
162
|
async function unpack(prepareOptions, downloadOptions, distMacOsAppName) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
};
|
|
155
|
-
const copyUnpackedElectronDistribution = async (folderPath) => {
|
|
156
|
-
builder_util_1.log.info({ electronDist: builder_util_1.log.filePath(folderPath) }, "using custom unpacked Electron distribution");
|
|
157
|
-
const source = packager.getElectronSrcDir(folderPath);
|
|
158
|
-
const destination = packager.getElectronDestinationDir(appOutDir);
|
|
159
|
-
builder_util_1.log.info({ source, destination }, "copying unpacked Electron");
|
|
160
|
-
await (0, fs_extra_1.emptyDir)(appOutDir);
|
|
161
|
-
await (0, builder_util_1.copyDir)(source, destination, {
|
|
162
|
-
isUseHardLink: builder_util_1.DO_NOT_USE_HARD_LINKS,
|
|
163
|
-
});
|
|
164
|
-
return false;
|
|
165
|
-
};
|
|
166
|
-
const selectElectron = async (filepath) => {
|
|
163
|
+
var _a, _b, _c;
|
|
164
|
+
async function selectElectron(filepath) {
|
|
167
165
|
const resolvedDist = path.isAbsolute(filepath) ? filepath : path.resolve(packager.projectDir, filepath);
|
|
168
166
|
const electronDistStats = await (0, builder_util_1.statOrNull)(resolvedDist);
|
|
169
167
|
if (!electronDistStats) {
|
|
@@ -171,11 +169,8 @@ async function unpack(prepareOptions, downloadOptions, distMacOsAppName) {
|
|
|
171
169
|
}
|
|
172
170
|
if (resolvedDist.endsWith(".zip")) {
|
|
173
171
|
builder_util_1.log.info({ zipFile: resolvedDist }, "using custom electronDist zip file");
|
|
174
|
-
await
|
|
175
|
-
|
|
176
|
-
cache: path.dirname(resolvedDist), // set custom directory to the zip file's directory
|
|
177
|
-
customFilename: path.basename(resolvedDist), // set custom filename to the zip file's name
|
|
178
|
-
});
|
|
172
|
+
await (0, fs_extra_1.emptyDir)(appOutDir);
|
|
173
|
+
await (0, builder_util_1.exec)(await (0, builder_util_1.getPath7za)(), ["x", "-bd", resolvedDist, `-o${appOutDir}`, "-y"]);
|
|
179
174
|
return false; // do not clean up after unpacking, it's a custom bundle and we should respect its configuration/contents as required
|
|
180
175
|
}
|
|
181
176
|
if (electronDistStats.isDirectory()) {
|
|
@@ -183,19 +178,23 @@ async function unpack(prepareOptions, downloadOptions, distMacOsAppName) {
|
|
|
183
178
|
const files = await (0, fs_extra_1.readdir)(resolvedDist);
|
|
184
179
|
if (files.includes(defaultZipName)) {
|
|
185
180
|
builder_util_1.log.info({ electronDist: builder_util_1.log.filePath(resolvedDist) }, "using custom electronDist directory");
|
|
186
|
-
await
|
|
187
|
-
|
|
188
|
-
cache: resolvedDist,
|
|
189
|
-
customFilename: defaultZipName,
|
|
190
|
-
});
|
|
191
|
-
return false;
|
|
181
|
+
await (0, electronGet_1.extractArchive)(path.join(resolvedDist, defaultZipName), appOutDir);
|
|
182
|
+
return false; // do not clean up after unpacking, it's a custom bundle and we should respect its configuration/contents as required
|
|
192
183
|
}
|
|
193
184
|
// if we reach here, it means the provided electronDist is neither a zip file nor a directory with the default zip file
|
|
194
185
|
// e.g. we treat it as a custom already-unpacked Electron distribution
|
|
195
|
-
|
|
186
|
+
builder_util_1.log.info({ electronDist: builder_util_1.log.filePath(resolvedDist) }, "using custom unpacked Electron distribution");
|
|
187
|
+
const source = packager.getElectronSrcDir(resolvedDist);
|
|
188
|
+
const destination = packager.getElectronDestinationDir(prepareOptions.appOutDir);
|
|
189
|
+
builder_util_1.log.info({ source, destination }, "copying unpacked Electron");
|
|
190
|
+
await (0, fs_extra_1.emptyDir)(prepareOptions.appOutDir);
|
|
191
|
+
await (0, builder_util_1.copyDir)(source, destination, {
|
|
192
|
+
isUseHardLink: builder_util_1.DO_NOT_USE_HARD_LINKS,
|
|
193
|
+
});
|
|
194
|
+
return false;
|
|
196
195
|
}
|
|
197
196
|
throw new Error(`The specified electronDist is neither a zip file nor a directory: ${resolvedDist}. Please provide a valid path to the Electron zip file or cache directory.`);
|
|
198
|
-
}
|
|
197
|
+
}
|
|
199
198
|
const { packager, appOutDir, platformName } = prepareOptions;
|
|
200
199
|
const { version, arch } = downloadOptions;
|
|
201
200
|
const defaultZipName = `electron-v${version}-${platformName}-${arch}.zip`;
|
|
@@ -205,7 +204,7 @@ async function unpack(prepareOptions, downloadOptions, distMacOsAppName) {
|
|
|
205
204
|
}
|
|
206
205
|
let resolvedDist = null;
|
|
207
206
|
try {
|
|
208
|
-
const electronDistHook = await (0, resolve_1.resolveFunction)(packager.appInfo.type, electronDist, "electronDist");
|
|
207
|
+
const electronDistHook = await (0, resolve_1.resolveFunction)(packager.appInfo.type, electronDist, "electronDist", await packager.info.getWorkspaceRoot());
|
|
209
208
|
resolvedDist = typeof electronDistHook === "function" ? await Promise.resolve(electronDistHook(prepareOptions)) : electronDistHook;
|
|
210
209
|
}
|
|
211
210
|
catch (error) {
|
|
@@ -214,7 +213,15 @@ async function unpack(prepareOptions, downloadOptions, distMacOsAppName) {
|
|
|
214
213
|
if (resolvedDist == null) {
|
|
215
214
|
// if no custom electronDist is provided, use the default unpack logic
|
|
216
215
|
builder_util_1.log.debug(null, "no custom electronDist provided, unpacking default Electron distribution");
|
|
217
|
-
await
|
|
216
|
+
const zipPath = await (0, electronGet_1.downloadElectronArtifactZip)({
|
|
217
|
+
electronDownload: downloadOptions,
|
|
218
|
+
artifactName: "electron",
|
|
219
|
+
platformName: (_a = downloadOptions.platform) !== null && _a !== void 0 ? _a : prepareOptions.platformName,
|
|
220
|
+
arch: (_b = downloadOptions.arch) !== null && _b !== void 0 ? _b : prepareOptions.arch,
|
|
221
|
+
version: (_c = downloadOptions.version) !== null && _c !== void 0 ? _c : prepareOptions.version,
|
|
222
|
+
});
|
|
223
|
+
await (0, electronGet_1.extractArchive)(zipPath, appOutDir);
|
|
224
|
+
builder_util_1.log.info({ output: appOutDir }, "downloaded electron zip extracted successfully");
|
|
218
225
|
return true; // indicates that we should clean up after unpacking
|
|
219
226
|
}
|
|
220
227
|
return selectElectron(resolvedDist);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElectronFramework.js","sourceRoot":"","sources":["../../src/electron/ElectronFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, copyDir, DO_NOT_USE_HARD_LINKS, executeAppBuilder, isEmptyOrSpaces, log, MAX_FILE_REQUESTS, statOrNull, unlinkIfExists } from \"builder-util\"\nimport { emptyDir, readdir, rename, rm } from \"fs-extra\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { Configuration } from \"../configuration\"\nimport { BeforeCopyExtraFilesOptions, Framework, PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { Packager, Platform } from \"../index\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { MacPackager } from \"../macPackager\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { resolveFunction } from \"../util/resolve\"\nimport { createMacApp } from \"./electronMac\"\nimport { computeElectronVersion, getElectronVersionFromInstalled } from \"./electronVersion\"\nimport { addWinAsarIntegrity } from \"./electronWin\"\nimport injectFFMPEG from \"./injectFFMPEG\"\n\nexport type ElectronPlatformName = \"darwin\" | \"linux\" | \"win32\" | \"mas\"\n\n/**\n * Electron distributables branding options.\n * @see [Electron BRANDING.json](https://github.com/electron/electron/blob/master/shell/app/BRANDING.json).\n */\nexport interface ElectronBrandingOptions {\n projectName?: string\n productName?: string\n}\n\nexport function createBrandingOpts(opts: Configuration): Required<ElectronBrandingOptions> {\n return {\n projectName: opts.electronBranding?.projectName || \"electron\",\n productName: opts.electronBranding?.productName || \"Electron\",\n }\n}\n\nexport interface ElectronDownloadOptions {\n // https://github.com/electron-userland/electron-builder/issues/3077\n // must be optional\n version?: string\n\n /**\n * The [cache location](https://github.com/electron-userland/electron-download#cache-location).\n */\n cache?: string | null\n\n /**\n * The mirror.\n */\n mirror?: string | null\n\n /** @private */\n customDir?: string | null\n /** @private */\n customFilename?: string | null\n\n strictSSL?: boolean\n isVerifyChecksum?: boolean\n\n platform?: ElectronPlatformName\n arch?: string\n}\n\nfunction createDownloadOpts(opts: Configuration, platform: ElectronPlatformName, arch: string, electronVersion: string): ElectronDownloadOptions {\n return {\n platform,\n arch,\n version: electronVersion,\n ...opts.electronDownload,\n }\n}\n\nasync function beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n const { appOutDir, packager } = options\n const electronBranding = createBrandingOpts(packager.config)\n if (packager.platform === Platform.LINUX) {\n const linuxPackager = packager as LinuxPackager\n const executable = path.join(appOutDir, linuxPackager.executableName)\n await rename(path.join(appOutDir, electronBranding.projectName), executable)\n } else if (packager.platform === Platform.WINDOWS) {\n const executable = path.join(appOutDir, `${packager.appInfo.productFilename}.exe`)\n await rename(path.join(appOutDir, `${electronBranding.projectName}.exe`), executable)\n if (options.asarIntegrity) {\n await addWinAsarIntegrity(executable, options.asarIntegrity)\n }\n } else {\n await createMacApp(packager as MacPackager, appOutDir, options.asarIntegrity, (options.platformName as ElectronPlatformName) === \"mas\")\n }\n await removeUnusedLanguagesIfNeeded(options)\n}\n\nasync function removeUnusedLanguagesIfNeeded(options: BeforeCopyExtraFilesOptions) {\n const { packager, appOutDir } = options\n const { config, platformSpecificBuildOptions, platform } = packager\n\n const getLocalesConfig = () => {\n if (platform === Platform.MAC) {\n return { dirs: [packager.getResourcesDir(appOutDir), packager.getMacOsElectronFrameworkResourcesDir(appOutDir)], langFileExt: \".lproj\" }\n }\n return { dirs: [path.join(packager.getResourcesDir(appOutDir), \"..\", \"locales\")], langFileExt: \".pak\" }\n }\n\n const wantedLanguages = asArray(platformSpecificBuildOptions.electronLanguages || config.electronLanguages)\n .map(it => it.trim().toLowerCase())\n .filter(it => it.length > 0)\n if (!wantedLanguages.length) {\n return\n }\n\n const { dirs, langFileExt } = getLocalesConfig()\n // noinspection SpellCheckingInspection\n const deleteNonMatchedLanguages: (dir: string) => Promise<Promise<void>[] | undefined> = async (dir: string) => {\n const files = await readdir(dir)\n return files.map(async file => {\n if (path.extname(file) !== langFileExt) {\n return\n }\n\n const language = path.basename(file, langFileExt).toLowerCase()\n const isWantedLocale = wantedLanguages.some(\n wantedLanguage =>\n // exact file\n wantedLanguage === language ||\n // prefix (e.g. \"en\" matches \"en-US\")\n wantedLanguage.startsWith(`${language}-`) ||\n // prefix (e.g. \"en\" matches \"en_US\")\n wantedLanguage.startsWith(`${language}_`)\n )\n if (isWantedLocale) {\n return undefined\n }\n return rm(path.join(dir, file), { recursive: true, force: true })\n })\n }\n const allDeletedFiles = (await Promise.all(dirs.map(deleteNonMatchedLanguages))).flat().filter((it): it is Promise<void> => it != null)\n if (allDeletedFiles.length === 0) {\n log.warn({ electronLanguages: wantedLanguages }, \"no locales found matching wanted languages, skipping cleanup\")\n return\n }\n await asyncPool(MAX_FILE_REQUESTS, allDeletedFiles, it => it)\n}\n\nclass ElectronFramework implements Framework {\n // noinspection JSUnusedGlobalSymbols\n readonly macOsDefaultTargets = [\"zip\", \"dmg\"]\n // noinspection JSUnusedGlobalSymbols\n readonly defaultAppIdPrefix = \"com.electron.\"\n // noinspection JSUnusedGlobalSymbols\n readonly isCopyElevateHelper = true\n // noinspection JSUnusedGlobalSymbols\n readonly isNpmRebuildRequired = true\n\n constructor(\n readonly name: string,\n readonly version: string,\n readonly distMacOsAppName: string\n ) {}\n\n getDefaultIcon(platform: Platform) {\n if (platform === Platform.LINUX) {\n return path.join(getTemplatePath(\"icons\"), \"electron-linux\")\n } else {\n // default icon is embedded into app skeleton\n return null\n }\n }\n\n async prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {\n const downloadOptions = createDownloadOpts(options.packager.config, options.platformName, options.arch, this.version)\n const shouldCleanup = await unpack(options, downloadOptions, this.distMacOsAppName)\n await cleanupAfterUnpack(options, this.distMacOsAppName, shouldCleanup)\n if (options.packager.config.downloadAlternateFFmpeg) {\n await injectFFMPEG(options, this.version)\n }\n }\n\n beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n return beforeCopyExtraFiles(options)\n }\n}\n\nexport async function createElectronFrameworkSupport(configuration: Configuration, packager: Packager): Promise<Framework> {\n let version = configuration.electronVersion\n if (version == null) {\n // for prepacked app asar no dev deps in the app.asar\n if (packager.isPrepackedAppAsar) {\n version = await getElectronVersionFromInstalled(packager.projectDir)\n if (version == null) {\n throw new Error(`Cannot compute electron version for prepacked asar`)\n }\n } else {\n version = await computeElectronVersion(packager.projectDir)\n }\n configuration.electronVersion = version\n }\n\n const branding = createBrandingOpts(configuration)\n return new ElectronFramework(branding.projectName, version, `${branding.productName}.app`)\n}\n\n/**\n * Unpacks a custom or default Electron distribution into the app output directory.\n */\nasync function unpack(prepareOptions: PrepareApplicationStageDirectoryOptions, downloadOptions: ElectronDownloadOptions, distMacOsAppName: string): Promise<boolean> {\n const downloadUsingAdjustedConfig = (options: ElectronDownloadOptions) => {\n return executeAppBuilder([\"unpack-electron\", \"--configuration\", JSON.stringify([options]), \"--output\", appOutDir, \"--distMacOsAppName\", distMacOsAppName])\n }\n\n const copyUnpackedElectronDistribution = async (folderPath: string) => {\n log.info({ electronDist: log.filePath(folderPath) }, \"using custom unpacked Electron distribution\")\n const source = packager.getElectronSrcDir(folderPath)\n const destination = packager.getElectronDestinationDir(appOutDir)\n log.info({ source, destination }, \"copying unpacked Electron\")\n await emptyDir(appOutDir)\n await copyDir(source, destination, {\n isUseHardLink: DO_NOT_USE_HARD_LINKS,\n })\n return false\n }\n\n const selectElectron = async (filepath: string) => {\n const resolvedDist = path.isAbsolute(filepath) ? filepath : path.resolve(packager.projectDir, filepath)\n\n const electronDistStats = await statOrNull(resolvedDist)\n if (!electronDistStats) {\n throw new Error(\n `The specified electronDist does not exist: ${resolvedDist}. Please provide a valid path to the Electron zip file, cache directory, or electron build directory.`\n )\n }\n\n if (resolvedDist.endsWith(\".zip\")) {\n log.info({ zipFile: resolvedDist }, \"using custom electronDist zip file\")\n await downloadUsingAdjustedConfig({\n ...downloadOptions,\n cache: path.dirname(resolvedDist), // set custom directory to the zip file's directory\n customFilename: path.basename(resolvedDist), // set custom filename to the zip file's name\n })\n return false // do not clean up after unpacking, it's a custom bundle and we should respect its configuration/contents as required\n }\n\n if (electronDistStats.isDirectory()) {\n // backward compatibility: if electronDist is a directory, check for the default zip file inside it\n const files = await readdir(resolvedDist)\n if (files.includes(defaultZipName)) {\n log.info({ electronDist: log.filePath(resolvedDist) }, \"using custom electronDist directory\")\n await downloadUsingAdjustedConfig({\n ...downloadOptions,\n cache: resolvedDist,\n customFilename: defaultZipName,\n })\n return false\n }\n // if we reach here, it means the provided electronDist is neither a zip file nor a directory with the default zip file\n // e.g. we treat it as a custom already-unpacked Electron distribution\n return await copyUnpackedElectronDistribution(resolvedDist)\n }\n throw new Error(`The specified electronDist is neither a zip file nor a directory: ${resolvedDist}. Please provide a valid path to the Electron zip file or cache directory.`)\n }\n\n const { packager, appOutDir, platformName } = prepareOptions\n const { version, arch } = downloadOptions\n const defaultZipName = `electron-v${version}-${platformName}-${arch}.zip`\n\n const electronDist = packager.config.electronDist\n if (typeof electronDist === \"string\" && !isEmptyOrSpaces(electronDist)) {\n return selectElectron(electronDist)\n }\n\n let resolvedDist: string | null = null\n try {\n const electronDistHook: any = await resolveFunction(packager.appInfo.type, electronDist, \"electronDist\")\n resolvedDist = typeof electronDistHook === \"function\" ? await Promise.resolve(electronDistHook(prepareOptions)) : electronDistHook\n } catch (error: any) {\n log.warn({ error }, \"Failed to resolve electronDist, using default unpack logic\")\n }\n\n if (resolvedDist == null) {\n // if no custom electronDist is provided, use the default unpack logic\n log.debug(null, \"no custom electronDist provided, unpacking default Electron distribution\")\n await downloadUsingAdjustedConfig(downloadOptions)\n return true // indicates that we should clean up after unpacking\n }\n return selectElectron(resolvedDist)\n}\n\nfunction cleanupAfterUnpack(prepareOptions: PrepareApplicationStageDirectoryOptions, distMacOsAppName: string, isFullCleanup: boolean) {\n const out = prepareOptions.appOutDir\n const isMac = prepareOptions.packager.platform === Platform.MAC\n const resourcesPath = isMac ? path.join(out, distMacOsAppName, \"Contents\", \"Resources\") : path.join(out, \"resources\")\n\n return Promise.all([\n isFullCleanup ? unlinkIfExists(path.join(resourcesPath, \"default_app.asar\")) : Promise.resolve(),\n isFullCleanup ? unlinkIfExists(path.join(out, \"version\")) : Promise.resolve(),\n isMac\n ? Promise.resolve()\n : rename(path.join(out, \"LICENSE\"), path.join(out, \"LICENSE.electron.txt\")).catch(() => {\n /* ignore */\n }),\n ])\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ElectronFramework.js","sourceRoot":"","sources":["../../src/electron/ElectronFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, copyDir, DO_NOT_USE_HARD_LINKS, exec, getPath7za, isEmptyOrSpaces, log, MAX_FILE_REQUESTS, statOrNull, unlinkIfExists } from \"builder-util\"\nimport { emptyDir, readdir, rename, rm } from \"fs-extra\"\nimport * as path from \"path\"\nimport asyncPool from \"tiny-async-pool\"\nimport { Configuration } from \"../configuration\"\nimport { BeforeCopyExtraFilesOptions, Framework, PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { Packager, Platform } from \"../index\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { MacPackager } from \"../macPackager\"\nimport { getTemplatePath } from \"../util/pathManager\"\nimport { resolveFunction } from \"../util/resolve\"\nimport { downloadElectronArtifactZip, ElectronDownloadOptions, ElectronGetOptions, extractArchive } from \"../util/electronGet\"\nexport { ElectronDownloadOptions }\nimport { createMacApp } from \"./electronMac\"\nimport { computeElectronVersion, getElectronVersionFromInstalled } from \"./electronVersion\"\nimport { addWinAsarIntegrity } from \"./electronWin\"\nimport { FFMPEGInjector } from \"./injectFFMPEG\"\n\nexport type ElectronPlatformName = \"darwin\" | \"linux\" | \"win32\" | \"mas\"\n\n/**\n * Electron distributables branding options.\n * @see [Electron BRANDING.json](https://github.com/electron/electron/blob/master/shell/app/BRANDING.json).\n */\nexport interface ElectronBrandingOptions {\n projectName?: string\n productName?: string\n}\n\nexport function createBrandingOpts(opts: Configuration): Required<ElectronBrandingOptions> {\n return {\n projectName: opts.electronBranding?.projectName || \"electron\",\n productName: opts.electronBranding?.productName || \"Electron\",\n }\n}\n\nfunction createDownloadOpts(opts: Configuration, platform: ElectronPlatformName, arch: string, electronVersion: string): ElectronDownloadOptions {\n const base: ElectronDownloadOptions = { platform, arch, version: electronVersion }\n const dl = opts.electronDownload\n if (dl == null) {\n return base\n }\n if (Object.hasOwnProperty.call(dl, \"mirrorOptions\")) {\n // ElectronGetOptions: flatten mirrorOptions.mirror for the app-builder binary\n const { mirrorOptions } = dl as ElectronGetOptions\n return { ...base, mirror: mirrorOptions?.mirror ?? undefined }\n }\n return { ...base, ...dl }\n}\n\nasync function beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n const { appOutDir, packager } = options\n const electronBranding = createBrandingOpts(packager.config)\n if (packager.platform === Platform.LINUX) {\n const linuxPackager = packager as LinuxPackager\n const executable = path.join(appOutDir, linuxPackager.executableName)\n await rename(path.join(appOutDir, electronBranding.projectName), executable)\n } else if (packager.platform === Platform.WINDOWS) {\n const executable = path.join(appOutDir, `${packager.appInfo.productFilename}.exe`)\n await rename(path.join(appOutDir, `${electronBranding.projectName}.exe`), executable)\n if (options.asarIntegrity) {\n await addWinAsarIntegrity(executable, options.asarIntegrity)\n }\n } else {\n await createMacApp(packager as MacPackager, appOutDir, options.asarIntegrity, (options.platformName as ElectronPlatformName) === \"mas\")\n }\n await removeUnusedLanguagesIfNeeded(options)\n}\n\nasync function removeUnusedLanguagesIfNeeded(options: BeforeCopyExtraFilesOptions) {\n const { packager, appOutDir } = options\n const { config, platformSpecificBuildOptions, platform } = packager\n\n const getLocalesConfig = () => {\n if (platform === Platform.MAC) {\n return { dirs: [packager.getResourcesDir(appOutDir), packager.getMacOsElectronFrameworkResourcesDir(appOutDir)], langFileExt: \".lproj\" }\n }\n return { dirs: [path.join(packager.getResourcesDir(appOutDir), \"..\", \"locales\")], langFileExt: \".pak\" }\n }\n\n const wantedLanguages = asArray(platformSpecificBuildOptions.electronLanguages || config.electronLanguages)\n .map(it => it.trim().toLowerCase())\n .filter(it => it.length > 0)\n if (!wantedLanguages.length) {\n return\n }\n\n const { dirs, langFileExt } = getLocalesConfig()\n // noinspection SpellCheckingInspection\n const deleteNonMatchedLanguages: (dir: string) => Promise<Promise<void>[] | undefined> = async (dir: string) => {\n const files = await readdir(dir)\n return files.map(async file => {\n if (path.extname(file) !== langFileExt) {\n return\n }\n\n const language = path.basename(file, langFileExt).toLowerCase()\n const isWantedLocale = wantedLanguages.some(\n wantedLanguage =>\n // exact file\n wantedLanguage === language ||\n // prefix (e.g. \"en\" matches \"en-US\")\n wantedLanguage.startsWith(`${language}-`) ||\n // prefix (e.g. \"en\" matches \"en_US\")\n wantedLanguage.startsWith(`${language}_`)\n )\n if (isWantedLocale) {\n return undefined\n }\n return rm(path.join(dir, file), { recursive: true, force: true })\n })\n }\n const allDeletedFiles = (await Promise.all(dirs.map(deleteNonMatchedLanguages))).flat().filter((it): it is Promise<void> => it != null)\n if (allDeletedFiles.length === 0) {\n log.warn({ electronLanguages: wantedLanguages }, \"no locales found matching wanted languages, skipping cleanup\")\n return\n }\n await asyncPool(MAX_FILE_REQUESTS, allDeletedFiles, it => it)\n}\n\nclass ElectronFramework implements Framework {\n // noinspection JSUnusedGlobalSymbols\n readonly macOsDefaultTargets = [\"zip\", \"dmg\"]\n // noinspection JSUnusedGlobalSymbols\n readonly defaultAppIdPrefix = \"com.electron.\"\n // noinspection JSUnusedGlobalSymbols\n readonly isCopyElevateHelper = true\n // noinspection JSUnusedGlobalSymbols\n readonly isNpmRebuildRequired = true\n\n constructor(\n readonly name: string,\n readonly version: string,\n readonly macOsProductName: string\n ) {}\n\n get distMacOsAppName(): string {\n return `${this.macOsProductName}.app`\n }\n\n getDefaultIcon(platform: Platform) {\n if (platform === Platform.LINUX) {\n return path.join(getTemplatePath(\"icons\"), \"electron-linux\")\n } else {\n // default icon is embedded into app skeleton\n return null\n }\n }\n\n async prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {\n const downloadOptions = createDownloadOpts(options.packager.config, options.platformName, options.arch, this.version)\n const shouldCleanup = await unpack(options, downloadOptions, this.distMacOsAppName)\n await cleanupAfterUnpack(options, this.distMacOsAppName, shouldCleanup)\n if (options.packager.config.downloadAlternateFFmpeg) {\n const injector = new FFMPEGInjector(options, this.version, createBrandingOpts(options.packager.config))\n await injector.inject()\n }\n }\n\n beforeCopyExtraFiles(options: BeforeCopyExtraFilesOptions) {\n return beforeCopyExtraFiles(options)\n }\n}\n\nexport async function createElectronFrameworkSupport(configuration: Configuration, packager: Packager): Promise<Framework> {\n let version = configuration.electronVersion\n if (version == null) {\n // for prepacked app asar no dev deps in the app.asar\n if (packager.isPrepackedAppAsar) {\n version = await getElectronVersionFromInstalled(packager.projectDir)\n if (version == null) {\n throw new Error(`Cannot compute electron version for prepacked asar`)\n }\n } else {\n version = await computeElectronVersion(packager.projectDir)\n }\n configuration.electronVersion = version\n }\n\n const branding = createBrandingOpts(configuration)\n return new ElectronFramework(branding.projectName, version, branding.productName)\n}\n\n/**\n * Unpacks a custom or default Electron distribution into the app output directory.\n */\nasync function unpack(prepareOptions: PrepareApplicationStageDirectoryOptions, downloadOptions: ElectronDownloadOptions, distMacOsAppName: string): Promise<boolean> {\n async function selectElectron(filepath: string) {\n const resolvedDist = path.isAbsolute(filepath) ? filepath : path.resolve(packager.projectDir, filepath)\n\n const electronDistStats = await statOrNull(resolvedDist)\n if (!electronDistStats) {\n throw new Error(\n `The specified electronDist does not exist: ${resolvedDist}. Please provide a valid path to the Electron zip file, cache directory, or electron build directory.`\n )\n }\n\n if (resolvedDist.endsWith(\".zip\")) {\n log.info({ zipFile: resolvedDist }, \"using custom electronDist zip file\")\n await emptyDir(appOutDir)\n await exec(await getPath7za(), [\"x\", \"-bd\", resolvedDist, `-o${appOutDir}`, \"-y\"])\n return false // do not clean up after unpacking, it's a custom bundle and we should respect its configuration/contents as required\n }\n\n if (electronDistStats.isDirectory()) {\n // backward compatibility: if electronDist is a directory, check for the default zip file inside it\n const files = await readdir(resolvedDist)\n if (files.includes(defaultZipName)) {\n log.info({ electronDist: log.filePath(resolvedDist) }, \"using custom electronDist directory\")\n await extractArchive(path.join(resolvedDist, defaultZipName), appOutDir)\n return false // do not clean up after unpacking, it's a custom bundle and we should respect its configuration/contents as required\n }\n // if we reach here, it means the provided electronDist is neither a zip file nor a directory with the default zip file\n // e.g. we treat it as a custom already-unpacked Electron distribution\n log.info({ electronDist: log.filePath(resolvedDist) }, \"using custom unpacked Electron distribution\")\n const source = packager.getElectronSrcDir(resolvedDist)\n const destination = packager.getElectronDestinationDir(prepareOptions.appOutDir)\n log.info({ source, destination }, \"copying unpacked Electron\")\n await emptyDir(prepareOptions.appOutDir)\n await copyDir(source, destination, {\n isUseHardLink: DO_NOT_USE_HARD_LINKS,\n })\n return false\n }\n throw new Error(`The specified electronDist is neither a zip file nor a directory: ${resolvedDist}. Please provide a valid path to the Electron zip file or cache directory.`)\n }\n\n const { packager, appOutDir, platformName } = prepareOptions\n const { version, arch } = downloadOptions\n const defaultZipName = `electron-v${version}-${platformName}-${arch}.zip`\n\n const electronDist = packager.config.electronDist\n if (typeof electronDist === \"string\" && !isEmptyOrSpaces(electronDist)) {\n return selectElectron(electronDist)\n }\n\n let resolvedDist: string | null = null\n try {\n const electronDistHook: any = await resolveFunction(packager.appInfo.type, electronDist, \"electronDist\", await packager.info.getWorkspaceRoot())\n resolvedDist = typeof electronDistHook === \"function\" ? await Promise.resolve(electronDistHook(prepareOptions)) : electronDistHook\n } catch (error: any) {\n log.warn({ error }, \"Failed to resolve electronDist, using default unpack logic\")\n }\n\n if (resolvedDist == null) {\n // if no custom electronDist is provided, use the default unpack logic\n log.debug(null, \"no custom electronDist provided, unpacking default Electron distribution\")\n const zipPath = await downloadElectronArtifactZip({\n electronDownload: downloadOptions,\n artifactName: \"electron\",\n platformName: downloadOptions.platform ?? prepareOptions.platformName,\n arch: downloadOptions.arch ?? prepareOptions.arch,\n version: downloadOptions.version ?? prepareOptions.version,\n })\n await extractArchive(zipPath, appOutDir)\n log.info({ output: appOutDir }, \"downloaded electron zip extracted successfully\")\n return true // indicates that we should clean up after unpacking\n }\n return selectElectron(resolvedDist)\n}\n\nfunction cleanupAfterUnpack(prepareOptions: PrepareApplicationStageDirectoryOptions, distMacOsAppName: string, isFullCleanup: boolean) {\n const out = prepareOptions.appOutDir\n const isMac = prepareOptions.packager.platform === Platform.MAC\n const resourcesPath = isMac ? path.join(out, distMacOsAppName, \"Contents\", \"Resources\") : path.join(out, \"resources\")\n\n return Promise.all([\n isFullCleanup ? unlinkIfExists(path.join(resourcesPath, \"default_app.asar\")) : Promise.resolve(),\n isFullCleanup ? unlinkIfExists(path.join(out, \"version\")) : Promise.resolve(),\n isMac\n ? Promise.resolve()\n : rename(path.join(out, \"LICENSE\"), path.join(out, \"LICENSE.electron.txt\")).catch(() => {\n /* ignore */\n }),\n ])\n}\n"]}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
import { PrepareApplicationStageDirectoryOptions } from "../Framework";
|
|
2
|
-
|
|
2
|
+
import { ElectronBrandingOptions } from "./ElectronFramework";
|
|
3
|
+
export declare class FFMPEGInjector {
|
|
4
|
+
private readonly options;
|
|
5
|
+
private readonly electronVersion;
|
|
6
|
+
private readonly branding;
|
|
7
|
+
constructor(options: PrepareApplicationStageDirectoryOptions, electronVersion: string, branding: Required<ElectronBrandingOptions>);
|
|
8
|
+
inject(): Promise<string>;
|
|
9
|
+
private downloadFFMPEG;
|
|
10
|
+
private copyFFMPEG;
|
|
11
|
+
}
|
|
@@ -1,43 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const fs = require("fs");
|
|
5
|
-
const path = require("path");
|
|
3
|
+
exports.FFMPEGInjector = void 0;
|
|
6
4
|
const builder_util_1 = require("builder-util");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
let fileName = "ffmpeg.dll";
|
|
17
|
-
if (["darwin", "mas"].includes(platform)) {
|
|
18
|
-
fileName = "libffmpeg.dylib";
|
|
19
|
-
}
|
|
20
|
-
else if (platform === "linux") {
|
|
21
|
-
fileName = "libffmpeg.so";
|
|
5
|
+
const fs = require("fs-extra");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const core_1 = require("../core");
|
|
8
|
+
const electronGet_1 = require("../util/electronGet");
|
|
9
|
+
class FFMPEGInjector {
|
|
10
|
+
constructor(options, electronVersion, branding) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
this.electronVersion = electronVersion;
|
|
13
|
+
this.branding = branding;
|
|
22
14
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
async inject() {
|
|
16
|
+
const libPath = this.options.platformName === core_1.Platform.MAC.nodeName
|
|
17
|
+
? path.join(this.options.appOutDir, `${this.branding.productName}.app`, "Contents", "Frameworks", `${this.branding.productName} Framework.framework`, "Versions", "A", "Libraries")
|
|
18
|
+
: this.options.appOutDir;
|
|
19
|
+
const ffmpegDir = await this.downloadFFMPEG();
|
|
20
|
+
return this.copyFFMPEG(libPath, ffmpegDir);
|
|
29
21
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
async downloadFFMPEG() {
|
|
23
|
+
const ffmpegFileName = `ffmpeg-v${this.electronVersion}-${this.options.platformName}-${this.options.arch}`;
|
|
24
|
+
builder_util_1.log.info({ ffmpegFileName }, "downloading");
|
|
25
|
+
const { packager: { config: { electronDownload }, }, platformName, arch, } = this.options;
|
|
26
|
+
return (0, electronGet_1.downloadElectronArtifact)({
|
|
27
|
+
electronDownload,
|
|
28
|
+
artifactName: "ffmpeg",
|
|
29
|
+
platformName,
|
|
30
|
+
arch,
|
|
31
|
+
version: this.electronVersion,
|
|
32
|
+
});
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
async copyFFMPEG(targetPath, sourcePath) {
|
|
35
|
+
let fileName = "ffmpeg.dll";
|
|
36
|
+
if (["darwin", "mas"].includes(this.options.platformName)) {
|
|
37
|
+
fileName = "libffmpeg.dylib";
|
|
38
|
+
}
|
|
39
|
+
else if (this.options.platformName === "linux") {
|
|
40
|
+
fileName = "libffmpeg.so";
|
|
41
|
+
}
|
|
42
|
+
const libPath = path.resolve(sourcePath, fileName);
|
|
43
|
+
const libTargetPath = path.resolve(targetPath, fileName);
|
|
44
|
+
builder_util_1.log.info({ lib: builder_util_1.log.filePath(libPath), target: libTargetPath }, "copying non-proprietary FFMPEG");
|
|
45
|
+
// If the source doesn't exist we have a problem
|
|
46
|
+
if (!fs.existsSync(libPath)) {
|
|
47
|
+
throw new Error(`Failed to find FFMPEG library file at path: ${libPath}`);
|
|
48
|
+
}
|
|
49
|
+
// If we are copying to the source we can stop immediately
|
|
50
|
+
if (libPath !== libTargetPath) {
|
|
51
|
+
await fs.copyFile(libPath, libTargetPath);
|
|
52
|
+
}
|
|
53
|
+
return libTargetPath;
|
|
40
54
|
}
|
|
41
|
-
return downloadFFMPEG(electrionVersion, options.platformName, options.arch).then(copyFFMPEG(libPath, options.platformName));
|
|
42
55
|
}
|
|
56
|
+
exports.FFMPEGInjector = FFMPEGInjector;
|
|
43
57
|
//# sourceMappingURL=injectFFMPEG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injectFFMPEG.js","sourceRoot":"","sources":["../../src/electron/injectFFMPEG.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"injectFFMPEG.js","sourceRoot":"","sources":["../../src/electron/injectFFMPEG.ts"],"names":[],"mappings":";;;AAAA,+CAAkC;AAClC,+BAA8B;AAC9B,6BAA4B;AAC5B,kCAAkC;AAElC,qDAA8D;AAG9D,MAAa,cAAc;IACzB,YACmB,OAAgD,EAChD,eAAuB,EACvB,QAA2C;QAF3C,YAAO,GAAP,OAAO,CAAyC;QAChD,oBAAe,GAAf,eAAe,CAAQ;QACvB,aAAQ,GAAR,QAAQ,CAAmC;IAC3D,CAAC;IAEJ,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,eAAQ,CAAC,GAAG,CAAC,QAAQ;YACjD,CAAC,CAAC,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,MAAM,EAClC,UAAU,EACV,YAAY,EACZ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,sBAAsB,EAClD,UAAU,EACV,GAAG,EACH,WAAW,CACZ;YACH,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;QAE5B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC5C,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,MAAM,cAAc,GAAG,WAAW,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAE1G,kBAAG,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,CAAA;QAE3C,MAAM,EACJ,QAAQ,EAAE,EACR,MAAM,EAAE,EAAE,gBAAgB,EAAE,GAC7B,EACD,YAAY,EACZ,IAAI,GACL,GAAG,IAAI,CAAC,OAAO,CAAA;QAEhB,OAAO,IAAA,sCAAwB,EAAC;YAC9B,gBAAgB;YAChB,YAAY,EAAE,QAAQ;YACtB,YAAY;YACZ,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,eAAe;SAC9B,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,UAAkB,EAAE,UAAkB;QAC7D,IAAI,QAAQ,GAAG,YAAY,CAAA;QAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1D,QAAQ,GAAG,iBAAiB,CAAA;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;YACjD,QAAQ,GAAG,cAAc,CAAA;QAC3B,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACxD,kBAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,gCAAgC,CAAC,CAAA;QAEjG,gDAAgD;QAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAA;QAC3E,CAAC;QAED,0DAA0D;QAC1D,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AAvED,wCAuEC","sourcesContent":["import { log } from \"builder-util\"\nimport * as fs from \"fs-extra\"\nimport * as path from \"path\"\nimport { Platform } from \"../core\"\nimport { PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { downloadElectronArtifact } from \"../util/electronGet\"\nimport { ElectronBrandingOptions } from \"./ElectronFramework\"\n\nexport class FFMPEGInjector {\n constructor(\n private readonly options: PrepareApplicationStageDirectoryOptions,\n private readonly electronVersion: string,\n private readonly branding: Required<ElectronBrandingOptions>\n ) {}\n\n async inject() {\n const libPath =\n this.options.platformName === Platform.MAC.nodeName\n ? path.join(\n this.options.appOutDir,\n `${this.branding.productName}.app`,\n \"Contents\",\n \"Frameworks\",\n `${this.branding.productName} Framework.framework`,\n \"Versions\",\n \"A\",\n \"Libraries\"\n )\n : this.options.appOutDir\n\n const ffmpegDir = await this.downloadFFMPEG()\n return this.copyFFMPEG(libPath, ffmpegDir)\n }\n\n private async downloadFFMPEG(): Promise<string> {\n const ffmpegFileName = `ffmpeg-v${this.electronVersion}-${this.options.platformName}-${this.options.arch}`\n\n log.info({ ffmpegFileName }, \"downloading\")\n\n const {\n packager: {\n config: { electronDownload },\n },\n platformName,\n arch,\n } = this.options\n\n return downloadElectronArtifact({\n electronDownload,\n artifactName: \"ffmpeg\",\n platformName,\n arch,\n version: this.electronVersion,\n })\n }\n\n private async copyFFMPEG(targetPath: string, sourcePath: string) {\n let fileName = \"ffmpeg.dll\"\n if ([\"darwin\", \"mas\"].includes(this.options.platformName)) {\n fileName = \"libffmpeg.dylib\"\n } else if (this.options.platformName === \"linux\") {\n fileName = \"libffmpeg.so\"\n }\n\n const libPath = path.resolve(sourcePath, fileName)\n const libTargetPath = path.resolve(targetPath, fileName)\n log.info({ lib: log.filePath(libPath), target: libTargetPath }, \"copying non-proprietary FFMPEG\")\n\n // If the source doesn't exist we have a problem\n if (!fs.existsSync(libPath)) {\n throw new Error(`Failed to find FFMPEG library file at path: ${libPath}`)\n }\n\n // If we are copying to the source we can stop immediately\n if (libPath !== libTargetPath) {\n await fs.copyFile(libPath, libTargetPath)\n }\n return libTargetPath\n }\n}\n"]}
|
|
@@ -3,14 +3,15 @@ import { Platform } from "../core";
|
|
|
3
3
|
import { Framework, PrepareApplicationStageDirectoryOptions } from "../Framework";
|
|
4
4
|
export declare class LibUiFramework implements Framework {
|
|
5
5
|
readonly version: string;
|
|
6
|
-
readonly
|
|
6
|
+
readonly macOsProductName: string;
|
|
7
7
|
protected readonly isUseLaunchUi: boolean;
|
|
8
8
|
readonly name: string;
|
|
9
9
|
readonly macOsDefaultTargets: string[];
|
|
10
10
|
readonly defaultAppIdPrefix: string;
|
|
11
11
|
readonly isCopyElevateHelper = false;
|
|
12
12
|
readonly isNpmRebuildRequired = false;
|
|
13
|
-
constructor(version: string,
|
|
13
|
+
constructor(version: string, macOsProductName: string, isUseLaunchUi: boolean);
|
|
14
|
+
get distMacOsAppName(): string;
|
|
14
15
|
prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions): Promise<void>;
|
|
15
16
|
private prepareMacosApplicationStageDirectory;
|
|
16
17
|
private prepareLinuxApplicationStageDirectory;
|
|
@@ -8,9 +8,9 @@ const path = require("path");
|
|
|
8
8
|
const core_1 = require("../core");
|
|
9
9
|
const plist_1 = require("../util/plist");
|
|
10
10
|
class LibUiFramework {
|
|
11
|
-
constructor(version,
|
|
11
|
+
constructor(version, macOsProductName, isUseLaunchUi) {
|
|
12
12
|
this.version = version;
|
|
13
|
-
this.
|
|
13
|
+
this.macOsProductName = macOsProductName;
|
|
14
14
|
this.isUseLaunchUi = isUseLaunchUi;
|
|
15
15
|
this.name = "libui";
|
|
16
16
|
// noinspection JSUnusedGlobalSymbols
|
|
@@ -21,6 +21,9 @@ class LibUiFramework {
|
|
|
21
21
|
// noinspection JSUnusedGlobalSymbols
|
|
22
22
|
this.isNpmRebuildRequired = false;
|
|
23
23
|
}
|
|
24
|
+
get distMacOsAppName() {
|
|
25
|
+
return `${this.macOsProductName}.app`;
|
|
26
|
+
}
|
|
24
27
|
async prepareApplicationStageDirectory(options) {
|
|
25
28
|
await (0, fs_extra_1.emptyDir)(options.appOutDir);
|
|
26
29
|
const packager = options.packager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibUiFramework.js","sourceRoot":"","sources":["../../src/frameworks/LibUiFramework.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"LibUiFramework.js","sourceRoot":"","sources":["../../src/frameworks/LibUiFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import { executeAppBuilder } from \"builder-util\"\nimport { emptyDir } from \"fs-extra\"\nimport { chmod, mkdir, rename, writeFile } from \"fs/promises\"\nimport * as path from \"path\"\nimport { AfterPackContext } from \"../configuration\"\nimport { Platform } from \"../core\"\nimport { Framework, PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport { MacPackager } from \"../macPackager\"\nimport { savePlistFile } from \"../util/plist\"\n\nexport class LibUiFramework implements Framework {\n readonly name: string = \"libui\"\n // noinspection JSUnusedGlobalSymbols\n readonly macOsDefaultTargets = [\"dmg\"]\n\n readonly defaultAppIdPrefix: string = \"com.libui.\"\n\n // noinspection JSUnusedGlobalSymbols\n readonly isCopyElevateHelper = false\n\n // noinspection JSUnusedGlobalSymbols\n readonly isNpmRebuildRequired = false\n\n constructor(\n readonly version: string,\n readonly macOsProductName: string,\n protected readonly isUseLaunchUi: boolean\n ) {}\n\n get distMacOsAppName(): string {\n return `${this.macOsProductName}.app`\n }\n\n async prepareApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {\n await emptyDir(options.appOutDir)\n\n const packager = options.packager\n const platform = packager.platform\n\n if (this.isUseLaunchUiForPlatform(platform)) {\n const appOutDir = options.appOutDir\n await executeAppBuilder([\n \"proton-native\",\n \"--node-version\",\n this.version,\n \"--use-launch-ui\",\n \"--platform\",\n platform.nodeName,\n \"--arch\",\n options.arch,\n \"--stage\",\n appOutDir,\n \"--executable\",\n `${packager.appInfo.productFilename}${platform === Platform.WINDOWS ? \".exe\" : \"\"}`,\n ])\n return\n }\n\n if (platform === Platform.MAC) {\n await this.prepareMacosApplicationStageDirectory(packager as MacPackager, options)\n } else if (platform === Platform.LINUX) {\n await this.prepareLinuxApplicationStageDirectory(options)\n }\n }\n\n private async prepareMacosApplicationStageDirectory(packager: MacPackager, options: PrepareApplicationStageDirectoryOptions) {\n const appContentsDir = path.join(options.appOutDir, this.distMacOsAppName, \"Contents\")\n await mkdir(path.join(appContentsDir, \"Resources\"), { recursive: true })\n await mkdir(path.join(appContentsDir, \"MacOS\"), { recursive: true })\n await executeAppBuilder([\"proton-native\", \"--node-version\", this.version, \"--platform\", \"darwin\", \"--stage\", path.join(appContentsDir, \"MacOS\")])\n\n const appPlist: any = {\n // https://github.com/albe-rosado/create-proton-app/issues/13\n NSHighResolutionCapable: true,\n }\n await packager.applyCommonInfo(appPlist, appContentsDir)\n await savePlistFile(path.join(appContentsDir, \"Info.plist\"), appPlist)\n await writeExecutableMain(\n path.join(appContentsDir, \"MacOS\", appPlist.CFBundleExecutable),\n `#!/bin/sh\n DIR=$(dirname \"$0\")\n \"$DIR/node\" \"$DIR/../Resources/app/${options.packager.info.metadata.main || \"index.js\"}\"\n `\n )\n }\n\n private async prepareLinuxApplicationStageDirectory(options: PrepareApplicationStageDirectoryOptions) {\n const appOutDir = options.appOutDir\n await executeAppBuilder([\"proton-native\", \"--node-version\", this.version, \"--platform\", \"linux\", \"--arch\", options.arch, \"--stage\", appOutDir])\n const mainPath = path.join(appOutDir, (options.packager as LinuxPackager).executableName)\n await writeExecutableMain(\n mainPath,\n `#!/bin/sh\n DIR=$(dirname \"$0\")\n \"$DIR/node\" \"$DIR/app/${options.packager.info.metadata.main || \"index.js\"}\"\n `\n )\n }\n\n async afterPack(context: AfterPackContext) {\n const packager = context.packager\n if (!this.isUseLaunchUiForPlatform(packager.platform)) {\n return\n }\n\n // LaunchUI requires main.js, rename if need\n const userMain = packager.info.metadata.main || \"index.js\"\n if (userMain === \"main.js\") {\n return\n }\n\n await rename(path.join(context.appOutDir, \"app\", userMain), path.join(context.appOutDir, \"app\", \"main.js\"))\n }\n\n getMainFile(platform: Platform): string | null {\n return this.isUseLaunchUiForPlatform(platform) ? \"main.js\" : null\n }\n\n private isUseLaunchUiForPlatform(platform: Platform) {\n return platform === Platform.WINDOWS || (this.isUseLaunchUi && platform === Platform.LINUX)\n }\n\n getExcludedDependencies(platform: Platform): Array<string> | null {\n // part of launchui\n return this.isUseLaunchUiForPlatform(platform) ? [\"libui-node\"] : null\n }\n}\n\nasync function writeExecutableMain(file: string, content: string) {\n await writeFile(file, content, { mode: 0o755 })\n await chmod(file, 0o755)\n}\n"]}
|
package/out/index.d.ts
CHANGED
|
@@ -5,11 +5,12 @@ export { Arch, archFromString, getArchSuffix } from "builder-util";
|
|
|
5
5
|
export { AppInfo } from "./appInfo";
|
|
6
6
|
export { AfterExtractContext, AfterPackContext, BeforePackContext, CommonConfiguration, Configuration, FuseOptionsV1, Hook, Hooks, MetadataDirectories, PackContext, ToolsetConfig, } from "./configuration";
|
|
7
7
|
export { BeforeBuildContext, CompressionLevel, DEFAULT_TARGET, DIR_TARGET, Platform, SourceRepositoryInfo, Target, TargetConfigType, TargetConfiguration, TargetSpecificOptions, } from "./core";
|
|
8
|
-
export { ElectronBrandingOptions,
|
|
8
|
+
export { ElectronBrandingOptions, ElectronPlatformName } from "./electron/ElectronFramework";
|
|
9
|
+
export { ElectronDownloadOptions } from "./util/electronGet";
|
|
9
10
|
export { AppXOptions } from "./options/AppXOptions";
|
|
10
11
|
export { CommonWindowsInstallerConfiguration } from "./options/CommonWindowsInstallerConfiguration";
|
|
11
12
|
export { FileAssociation } from "./options/FileAssociation";
|
|
12
|
-
export { AppImageOptions, CommonLinuxOptions, DebOptions, FlatpakOptions, LinuxConfiguration, LinuxDesktopFile, LinuxTargetSpecificOptions } from "./options/linuxOptions";
|
|
13
|
+
export { AppImageOptions, CommonLinuxOptions, DebOptions, FlatpakOptions, LinuxConfiguration, LinuxDesktopFile, LinuxTargetSpecificOptions, PacmanOptions, RpmOptions, } from "./options/linuxOptions";
|
|
13
14
|
export { DmgContent, DmgOptions, DmgWindow, MacConfiguration, MacOsTargetName, MasConfiguration } from "./options/macOptions";
|
|
14
15
|
export { AuthorMetadata, Metadata, RepositoryInfo } from "./options/metadata";
|
|
15
16
|
export { MsiOptions } from "./options/MsiOptions";
|
package/out/index.js
CHANGED
|
@@ -53,7 +53,7 @@ function build(options, packager = new packager_1.Packager(options)) {
|
|
|
53
53
|
};
|
|
54
54
|
process.once("SIGINT", sigIntHandler);
|
|
55
55
|
const promise = packager.build().then(async (buildResult) => {
|
|
56
|
-
const afterAllArtifactBuild = await (0, resolve_1.resolveFunction)(packager.appInfo.type, buildResult.configuration.afterAllArtifactBuild, "afterAllArtifactBuild");
|
|
56
|
+
const afterAllArtifactBuild = await (0, resolve_1.resolveFunction)(packager.appInfo.type, buildResult.configuration.afterAllArtifactBuild, "afterAllArtifactBuild", await packager.getWorkspaceRoot());
|
|
57
57
|
if (afterAllArtifactBuild != null) {
|
|
58
58
|
const newArtifacts = (0, builder_util_runtime_1.asArray)(await Promise.resolve(afterAllArtifactBuild(buildResult)));
|
|
59
59
|
if (newArtifacts.length === 0 || !publishManager.isPublish) {
|
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { InvalidConfigurationError, executeFinally, log } from \"builder-util\"\nimport { asArray } from \"builder-util-runtime\"\nimport { PublishOptions } from \"electron-publish\"\nimport { Packager } from \"./packager\"\nimport { PackagerOptions } from \"./packagerApi\"\nimport { PublishManager } from \"./publish/PublishManager\"\nimport { resolveFunction } from \"./util/resolve\"\n\nexport { Arch, archFromString, getArchSuffix } from \"builder-util\"\nexport { AppInfo } from \"./appInfo\"\nexport {\n AfterExtractContext,\n AfterPackContext,\n BeforePackContext,\n CommonConfiguration,\n Configuration,\n FuseOptionsV1,\n Hook,\n Hooks,\n MetadataDirectories,\n PackContext,\n ToolsetConfig,\n} from \"./configuration\"\nexport {\n BeforeBuildContext,\n CompressionLevel,\n DEFAULT_TARGET,\n DIR_TARGET,\n Platform,\n SourceRepositoryInfo,\n Target,\n TargetConfigType,\n TargetConfiguration,\n TargetSpecificOptions,\n} from \"./core\"\nexport { ElectronBrandingOptions, ElectronPlatformName } from \"./electron/ElectronFramework\"\nexport { ElectronDownloadOptions } from \"./util/electronGet\"\nexport { AppXOptions } from \"./options/AppXOptions\"\nexport { CommonWindowsInstallerConfiguration } from \"./options/CommonWindowsInstallerConfiguration\"\nexport { FileAssociation } from \"./options/FileAssociation\"\nexport {\n AppImageOptions,\n CommonLinuxOptions,\n DebOptions,\n FlatpakOptions,\n LinuxConfiguration,\n LinuxDesktopFile,\n LinuxTargetSpecificOptions,\n PacmanOptions,\n RpmOptions,\n} from \"./options/linuxOptions\"\nexport { DmgContent, DmgOptions, DmgWindow, MacConfiguration, MacOsTargetName, MasConfiguration } from \"./options/macOptions\"\nexport { AuthorMetadata, Metadata, RepositoryInfo } from \"./options/metadata\"\nexport { MsiOptions } from \"./options/MsiOptions\"\nexport { MsiWrappedOptions } from \"./options/MsiWrappedOptions\"\nexport { BackgroundAlignment, BackgroundScaling, PkgBackgroundOptions, PkgOptions } from \"./options/pkgOptions\"\nexport { AsarOptions, FileSet, FilesBuildOptions, PlatformSpecificBuildOptions, Protocol, ReleaseInfo } from \"./options/PlatformSpecificBuildOptions\"\nexport { PlugDescriptor, SlotDescriptor, SnapOptions } from \"./options/SnapOptions\"\nexport { SquirrelWindowsOptions } from \"./options/SquirrelWindowsOptions\"\nexport { WindowsAzureSigningConfiguration, WindowsConfiguration, WindowsSigntoolConfiguration } from \"./options/winOptions\"\nexport { BuildResult, Packager } from \"./packager\"\nexport { ArtifactBuildStarted, ArtifactCreated, PackagerOptions } from \"./packagerApi\"\nexport { CommonNsisOptions, CustomNsisBinary, NsisOptions, NsisWebOptions, PortableOptions } from \"./targets/nsis/nsisOptions\"\n\nexport { CancellationToken, ProgressInfo } from \"builder-util-runtime\"\nexport { PublishOptions, UploadTask } from \"electron-publish\"\nexport { WindowsSignOptions } from \"./codeSign/windowsCodeSign\"\nexport {\n CertificateFromStoreInfo,\n CustomWindowsSign,\n CustomWindowsSignTaskConfiguration,\n FileCodeSigningInfo,\n WindowsSignTaskConfiguration,\n} from \"./codeSign/windowsSignToolManager\"\nexport { ForgeOptions, buildForge } from \"./forge-maker\"\nexport { Framework, PrepareApplicationStageDirectoryOptions } from \"./Framework\"\nexport { LinuxPackager } from \"./linuxPackager\"\nexport { CustomMacSign, CustomMacSignOptions, MacPackager } from \"./macPackager\"\nexport { PlatformPackager } from \"./platformPackager\"\nexport { PublishManager } from \"./publish/PublishManager\"\nexport { WinPackager } from \"./winPackager\"\n\nconst expectedOptions = new Set([\"publish\", \"targets\", \"mac\", \"win\", \"linux\", \"projectDir\", \"platformPackagerFactory\", \"config\", \"effectiveOptionComputed\", \"prepackaged\"])\n\nexport function checkBuildRequestOptions(options: PackagerOptions & PublishOptions) {\n for (const optionName of Object.keys(options)) {\n if (!expectedOptions.has(optionName) && (options as any)[optionName] !== undefined) {\n throw new InvalidConfigurationError(`Unknown option \"${optionName}\"`)\n }\n }\n}\n\nexport function build(options: PackagerOptions & PublishOptions, packager: Packager = new Packager(options)): Promise<Array<string>> {\n checkBuildRequestOptions(options)\n\n const publishManager = new PublishManager(packager, options)\n const sigIntHandler = () => {\n log.warn(\"cancelled by SIGINT\")\n packager.cancellationToken.cancel()\n publishManager.cancelTasks()\n }\n process.once(\"SIGINT\", sigIntHandler)\n\n const promise = packager.build().then(async buildResult => {\n const afterAllArtifactBuild = await resolveFunction(\n packager.appInfo.type,\n buildResult.configuration.afterAllArtifactBuild,\n \"afterAllArtifactBuild\",\n await packager.getWorkspaceRoot()\n )\n if (afterAllArtifactBuild != null) {\n const newArtifacts = asArray(await Promise.resolve(afterAllArtifactBuild(buildResult)))\n if (newArtifacts.length === 0 || !publishManager.isPublish) {\n return buildResult.artifactPaths\n }\n\n const publishConfigurations = await publishManager.getGlobalPublishConfigurations()\n if (publishConfigurations == null || publishConfigurations.length === 0) {\n return buildResult.artifactPaths\n }\n\n for (const newArtifact of newArtifacts) {\n if (buildResult.artifactPaths.includes(newArtifact)) {\n log.warn({ newArtifact }, \"skipping publish of artifact, already published\")\n continue\n }\n buildResult.artifactPaths.push(newArtifact)\n for (const publishConfiguration of publishConfigurations) {\n await publishManager.scheduleUpload(\n publishConfiguration,\n {\n file: newArtifact,\n arch: null,\n },\n packager.appInfo\n )\n }\n }\n }\n return buildResult.artifactPaths\n })\n\n return executeFinally(promise, isErrorOccurred => {\n let promise: Promise<any>\n if (isErrorOccurred) {\n publishManager.cancelTasks()\n promise = Promise.resolve(null)\n } else {\n promise = publishManager.awaitTasks()\n }\n\n return promise.then(() => {\n packager.clearPackagerEventListeners()\n process.removeListener(\"SIGINT\", sigIntHandler)\n })\n })\n}\n"]}
|