UNPKG

13.5 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/electron/ElectronFramework.ts"],"names":[],"mappings":"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","sourcesContent":["import { path7za } from \"7zip-bin\"\nimport BluebirdPromise from \"bluebird-lst\"\nimport { debug7zArgs, exec, isEnvTrue, log, spawn, asArray, executeAppBuilder } from \"builder-util\"\nimport { copyDir, DO_NOT_USE_HARD_LINKS, statOrNull, CONCURRENCY, unlinkIfExists } from \"builder-util/out/fs\"\nimport { chmod, emptyDir, readdir, remove, rename } from \"fs-extra-p\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport * as semver from \"semver\"\nimport { AsarIntegrity } from \"../asar/integrity\"\nimport { Configuration } from \"../configuration\"\nimport { Framework, PrepareApplicationStageDirectoryOptions } from \"../Framework\"\nimport { LinuxPackager } from \"../linuxPackager\"\nimport MacPackager from \"../macPackager\"\nimport { ElectronPlatformName, Platform, PlatformPackager, Packager } from \"../index\"\nimport { downloadElectron, ElectronDownloadOptions } from \"./electron-download\"\nimport { createMacApp } from \"./electronMac\"\nimport { computeElectronVersion, getElectronVersionFromInstalled } from \"./electronVersion\"\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(packager: PlatformPackager<any>, appOutDir: string, asarIntegrity: AsarIntegrity | null, isClearExecStack: boolean) {\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, packager.electronDistExecutableName), executable)\n\n if (isClearExecStack) {\n try {\n await executeAppBuilder([\"clear-exec-stack\", \"--input\", executable])\n }\n catch (e) {\n log.debug({error: e}, \"cannot clear exec stack\")\n }\n }\n }\n else if (packager.platform === Platform.WINDOWS) {\n const executable = path.join(appOutDir, `${packager.appInfo.productFilename}.exe`)\n await rename(path.join(appOutDir, `${packager.electronDistExecutableName}.exe`), executable)\n }\n else {\n await createMacApp(packager as MacPackager, appOutDir, asarIntegrity)\n\n const wantedLanguages = asArray(packager.platformSpecificBuildOptions.electronLanguages)\n if (wantedLanguages.length === 0) {\n return\n }\n\n // noinspection SpellCheckingInspection\n const langFileExt = \".lproj\"\n const resourcesDir = packager.getResourcesDir(appOutDir)\n await BluebirdPromise.map(readdir(resourcesDir), file => {\n if (!file.endsWith(langFileExt)) {\n return\n }\n\n const language = file.substring(0, file.length - langFileExt.length)\n if (!wantedLanguages.includes(language)) {\n return remove(path.join(resourcesDir, file))\n }\n return\n }, CONCURRENCY)\n }\n}\n\nexport async function createElectronFrameworkSupport(configuration: Configuration, packager: Packager): Promise<Framework> {\n if (configuration.muonVersion != null) {\n const distMacOsAppName = \"Brave.app\"\n return {\n name: \"muon\",\n isDefaultAppIconProvided: true,\n macOsDefaultTargets: [\"zip\", \"dmg\"],\n defaultAppIdPrefix: \"com.electron.\",\n version: configuration.muonVersion!!,\n distMacOsAppName,\n prepareApplicationStageDirectory: options => {\n return unpack(options, {\n mirror: \"https://github.com/brave/muon/releases/download/v\",\n customFilename: `brave-v${options.version}-${options.platformName}-${options.arch}.zip`,\n isVerifyChecksum: false,\n ...createDownloadOpts(options.packager.config, options.platformName, options.arch, options.version),\n }, distMacOsAppName)\n },\n isNpmRebuildRequired: true,\n beforeCopyExtraFiles: (packager: PlatformPackager<any>, appOutDir: string, asarIntegrity: AsarIntegrity | null) => {\n return beforeCopyExtraFiles(packager, appOutDir, asarIntegrity, false)\n },\n }\n }\n\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 }\n else {\n version = await computeElectronVersion(packager.projectDir, new Lazy(() => Promise.resolve(packager.metadata)))\n }\n configuration.electronVersion = version\n }\n\n const distMacOsAppName = \"Electron.app\"\n return {\n isDefaultAppIconProvided: true,\n macOsDefaultTargets: [\"zip\", \"dmg\"],\n defaultAppIdPrefix: \"com.electron.\",\n name: \"electron\",\n version,\n distMacOsAppName,\n isNpmRebuildRequired: true,\n prepareApplicationStageDirectory: options => unpack(options, createDownloadOpts(options.packager.config, options.platformName, options.arch, version!!), distMacOsAppName),\n beforeCopyExtraFiles: (packager: PlatformPackager<any>, appOutDir: string, asarIntegrity: AsarIntegrity | null) => {\n return beforeCopyExtraFiles(packager, appOutDir, asarIntegrity, semver.lte(version || \"1.8.3\", \"1.8.3\"))\n },\n }\n}\n\nasync function unpack(prepareOptions: PrepareApplicationStageDirectoryOptions, options: ElectronDownloadOptions, distMacOsAppName: string) {\n const packager = prepareOptions.packager\n const out = prepareOptions.appOutDir\n\n let dist: string | null | undefined = packager.config.electronDist\n if (dist != null) {\n const zipFile = `electron-v${options.version}-${prepareOptions.platformName}-${options.arch}.zip`\n const resolvedDist = path.resolve(packager.projectDir, dist)\n if ((await statOrNull(path.join(resolvedDist, zipFile))) != null) {\n options.cache = resolvedDist\n dist = null\n }\n }\n\n if (dist == null) {\n const zipPath = (await Promise.all<any>([\n downloadElectron(options),\n emptyDir(out)\n ]))[0]\n\n if (process.platform === \"darwin\" || isEnvTrue(process.env.USE_UNZIP)) {\n // on mac unzip faster than 7za (1.1 sec vs 1.6 see)\n await exec(\"unzip\", [\"-oqq\", \"-d\", out, zipPath])\n }\n else {\n await spawn(path7za, debug7zArgs(\"x\").concat(zipPath, \"-aoa\", `-o${out}`))\n if (prepareOptions.platformName === \"linux\") {\n // https://github.com/electron-userland/electron-builder/issues/786\n // fix dir permissions — opposite to extract-zip, 7za creates dir with no-access for other users, but dir must be readable for non-root users\n await Promise.all([\n chmod(path.join(out, \"locales\"), \"0755\"),\n chmod(path.join(out, \"resources\"), \"0755\")\n ])\n }\n }\n }\n else {\n const source = packager.getElectronSrcDir(dist)\n const destination = packager.getElectronDestinationDir(out)\n log.info({source, destination}, \"copying Electron\")\n await emptyDir(out)\n await copyDir(source, destination, {\n isUseHardLink: DO_NOT_USE_HARD_LINKS,\n })\n }\n\n await cleanupAfterUnpack(prepareOptions, distMacOsAppName)\n}\n\nfunction cleanupAfterUnpack(prepareOptions: PrepareApplicationStageDirectoryOptions, distMacOsAppName: string) {\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 return Promise.all([\n unlinkIfExists(path.join(resourcesPath, \"default_app.asar\")),\n unlinkIfExists(path.join(out, \"version\")),\n isMac ? Promise.resolve() : rename(path.join(out, \"LICENSE\"), path.join(out, \"LICENSE.electron.txt\")).catch(() => {/* ignore */}),\n ])\n}"],"sourceRoot":""}