app-builder-lib 27.0.0-alpha.7 → 27.0.0-alpha.8
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/dist/codeSign/mac/macCodeSign.d.ts.map +1 -1
- package/dist/codeSign/mac/macCodeSign.js +6 -4
- package/dist/codeSign/mac/macCodeSign.js.map +1 -1
- package/dist/codeSign/signResult.d.ts +26 -0
- package/dist/codeSign/signResult.d.ts.map +1 -0
- package/dist/codeSign/signResult.js +12 -0
- package/dist/codeSign/signResult.js.map +1 -0
- package/dist/codeSign/win/signManager.d.ts +2 -1
- package/dist/codeSign/win/signManager.d.ts.map +1 -1
- package/dist/codeSign/win/signManager.js.map +1 -1
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts +2 -1
- package/dist/codeSign/win/signtoolBaseSignManager.d.ts.map +1 -1
- package/dist/codeSign/win/signtoolBaseSignManager.js +3 -3
- package/dist/codeSign/win/signtoolBaseSignManager.js.map +1 -1
- package/dist/codeSign/win/windowsCodeSign.d.ts +2 -1
- package/dist/codeSign/win/windowsCodeSign.d.ts.map +1 -1
- package/dist/codeSign/win/windowsCodeSign.js +16 -7
- package/dist/codeSign/win/windowsCodeSign.js.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.d.ts +2 -1
- package/dist/codeSign/win/windowsSignAzureManager.d.ts.map +1 -1
- package/dist/codeSign/win/windowsSignAzureManager.js +2 -2
- package/dist/codeSign/win/windowsSignAzureManager.js.map +1 -1
- package/dist/configuration.d.ts +14 -3
- package/dist/configuration.d.ts.map +1 -1
- package/dist/configuration.js.map +1 -1
- package/dist/core.d.ts +5 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js.map +1 -1
- package/dist/fileMatcher.d.ts.map +1 -1
- package/dist/fileMatcher.js +1 -0
- package/dist/fileMatcher.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/macPackager.d.ts +16 -8
- package/dist/macPackager.d.ts.map +1 -1
- package/dist/macPackager.js +59 -31
- package/dist/macPackager.js.map +1 -1
- package/dist/options/PlatformSpecificBuildOptions.d.ts +2 -2
- package/dist/options/PlatformSpecificBuildOptions.js.map +1 -1
- package/dist/options/linuxOptions.d.ts +8 -2
- package/dist/options/linuxOptions.d.ts.map +1 -1
- package/dist/options/linuxOptions.js.map +1 -1
- package/dist/options/macOptions.d.ts +1 -1
- package/dist/options/macOptions.js.map +1 -1
- package/dist/options/pkgOptions.d.ts +1 -1
- package/dist/options/pkgOptions.js.map +1 -1
- package/dist/options/winOptions.d.ts +3 -3
- package/dist/options/winOptions.js.map +1 -1
- package/dist/packager.d.ts.map +1 -1
- package/dist/packager.js +5 -2
- package/dist/packager.js.map +1 -1
- package/dist/platformPackager.d.ts +2 -1
- package/dist/platformPackager.d.ts.map +1 -1
- package/dist/platformPackager.js +5 -3
- package/dist/platformPackager.js.map +1 -1
- package/dist/publish/PublishManager.js +37 -0
- package/dist/publish/PublishManager.js.map +1 -1
- package/dist/publish/updateInfoBuilder.d.ts.map +1 -1
- package/dist/publish/updateInfoBuilder.js +6 -4
- package/dist/publish/updateInfoBuilder.js.map +1 -1
- package/dist/targets/linux/FpmTarget.d.ts +7 -0
- package/dist/targets/linux/FpmTarget.d.ts.map +1 -1
- package/dist/targets/linux/FpmTarget.js +20 -2
- package/dist/targets/linux/FpmTarget.js.map +1 -1
- package/dist/targets/mac/MacTargetHelper.d.ts +5 -3
- package/dist/targets/mac/MacTargetHelper.d.ts.map +1 -1
- package/dist/targets/mac/MacTargetHelper.js +3 -3
- package/dist/targets/mac/MacTargetHelper.js.map +1 -1
- package/dist/targets/mac/pkg.js +1 -1
- package/dist/targets/mac/pkg.js.map +1 -1
- package/dist/toolsets/7zip.d.ts +32 -0
- package/dist/toolsets/7zip.d.ts.map +1 -1
- package/dist/toolsets/7zip.js +39 -13
- package/dist/toolsets/7zip.js.map +1 -1
- package/dist/toolsets/linuxToolsMac.d.ts.map +1 -1
- package/dist/toolsets/linuxToolsMac.js +15 -5
- package/dist/toolsets/linuxToolsMac.js.map +1 -1
- package/dist/util/electronGet.d.ts +11 -0
- package/dist/util/electronGet.d.ts.map +1 -1
- package/dist/util/electronGet.js +46 -3
- package/dist/util/electronGet.js.map +1 -1
- package/dist/util/installOrRebuild.d.ts +6 -0
- package/dist/util/installOrRebuild.d.ts.map +1 -1
- package/dist/util/installOrRebuild.js +47 -0
- package/dist/util/installOrRebuild.js.map +1 -1
- package/dist/util/repositoryInfo.js +6 -3
- package/dist/util/repositoryInfo.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/winPackager.d.ts +4 -3
- package/dist/winPackager.d.ts.map +1 -1
- package/dist/winPackager.js +22 -16
- package/dist/winPackager.js.map +1 -1
- package/package.json +10 -10
- package/scheme.json +28 -26
- package/templates/nsis/common.nsh +2 -2
- package/templates/nsis/include/allowOnlyOneInstallerInstance.nsh +68 -4
- package/templates/nsis/include/extractAppPackage.nsh +1 -1
- package/templates/nsis/include/installUtil.nsh +2 -2
- package/templates/nsis/include/installer.nsh +1 -1
- package/templates/nsis/installer.nsi +1 -1
|
@@ -3,13 +3,15 @@ import type { PerFileSignOptions, SigningDistributionType, SignOptions } from "@
|
|
|
3
3
|
import { Arch } from "builder-util";
|
|
4
4
|
import { Nullish } from "builder-util-runtime";
|
|
5
5
|
import { CertType, Identity } from "../../codeSign/mac/macCodeSign.js";
|
|
6
|
+
import { SigningResult } from "../../codeSign/signResult.js";
|
|
6
7
|
import type { MacPackager } from "../../macPackager.js";
|
|
7
8
|
import { ElectronSignOptions, MasConfiguration } from "../../options/macOptions.js";
|
|
8
|
-
export type
|
|
9
|
+
export type MasPlatformType = "mas" | "mas-dev";
|
|
10
|
+
export type PlatformType = MasPlatformType | "mac";
|
|
9
11
|
export declare class MacTargetHelper {
|
|
10
12
|
private packager;
|
|
11
13
|
constructor(packager: MacPackager);
|
|
12
|
-
handleNullIdentity():
|
|
14
|
+
handleNullIdentity(): SigningResult;
|
|
13
15
|
findSigningIdentity(targetPlatform: PlatformType, qualifier: string | undefined, keychainFile: string | Nullish, hasCustomSign: boolean, signOpts: ElectronSignOptions | null | undefined): Promise<Identity | null>;
|
|
14
16
|
/**
|
|
15
17
|
* Resolves the effective app entitlements file — same precedence as `getOptionsForFile()` — and
|
|
@@ -30,7 +32,7 @@ export declare class MacTargetHelper {
|
|
|
30
32
|
* The MAS `.pkg` installer is only built for distribution signing — a development-signed build
|
|
31
33
|
* (`mas-dev`, or an explicit `sign.type: "development"` on a `mas` build) is installed directly.
|
|
32
34
|
*/
|
|
33
|
-
static shouldCreateMasInstaller(targetPlatform: PlatformType, configType: SigningDistributionType | Nullish):
|
|
35
|
+
static shouldCreateMasInstaller(targetPlatform: PlatformType, configType: SigningDistributionType | Nullish): targetPlatform is MasPlatformType;
|
|
34
36
|
static isMasTarget(targetName: string): boolean;
|
|
35
37
|
static isMasDevelopment(targetName: string): boolean;
|
|
36
38
|
static getPlatformTypeFromTarget(targetName: string): PlatformType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MacTargetHelper.d.ts","sourceRoot":"","sources":["../../../src/targets/mac/MacTargetHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,eAAe,EAAsC,MAAM,oBAAoB,CAAA;AACvG,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,IAAI,EAA8C,MAAM,cAAc,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EAAE,QAAQ,EAAgB,QAAQ,EAAe,MAAM,mCAAmC,CAAA;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAInF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"MacTargetHelper.d.ts","sourceRoot":"","sources":["../../../src/targets/mac/MacTargetHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export class MacTargetHelper {
|
|
|
13
13
|
throw new InvalidConfigurationError("identity explicitly is set to null, but forceCodeSigning is set to true");
|
|
14
14
|
}
|
|
15
15
|
log.info({ reason: "identity explicitly is set to null" }, "skipped macOS code signing");
|
|
16
|
-
return
|
|
16
|
+
return "skipped:disabled";
|
|
17
17
|
}
|
|
18
18
|
async findSigningIdentity(targetPlatform, qualifier, keychainFile, hasCustomSign, signOpts) {
|
|
19
19
|
const isMas = MacTargetHelper.isMasTarget(targetPlatform);
|
|
@@ -30,7 +30,7 @@ export class MacTargetHelper {
|
|
|
30
30
|
if (qualifier === "-") {
|
|
31
31
|
if (MacTargetHelper.isHardenedRuntimeEnabledForSigning(targetPlatform, signOpts?.hardenedRuntime) && !(await this.isLibraryValidationDisabled(targetPlatform, signOpts))) {
|
|
32
32
|
log.warn(null, "ad-hoc signing with hardenedRuntime enabled requires the com.apple.security.cs.disable-library-validation entitlement " +
|
|
33
|
-
"to prevent app launch failures due to library validation. See https://electron.build/code-signing for details.");
|
|
33
|
+
"to prevent app launch failures due to library validation. See https://electron.build/docs/features/code-signing for details.");
|
|
34
34
|
}
|
|
35
35
|
identity = new Identity("-", undefined);
|
|
36
36
|
}
|
|
@@ -140,7 +140,7 @@ export class MacTargetHelper {
|
|
|
140
140
|
const certType = MacTargetHelper.isMasDevelopment(targetPlatform) ? "Mac Developer" : "3rd Party Mac Developer Installer";
|
|
141
141
|
const masInstallerIdentity = await findIdentity(certType, identityQualifier, keychainFile);
|
|
142
142
|
if (masInstallerIdentity == null) {
|
|
143
|
-
throw new InvalidConfigurationError(`Cannot find valid "${certType}" identity to sign MAS installer, please see https://electron.build/code-signing`);
|
|
143
|
+
throw new InvalidConfigurationError(`Cannot find valid "${certType}" identity to sign MAS installer, please see https://electron.build/docs/features/code-signing`);
|
|
144
144
|
}
|
|
145
145
|
MacTargetHelper.assertSafePathForCommandUsage(outDir, "output directory");
|
|
146
146
|
// mas uploaded to AppStore, so, use "-" instead of space for name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MacTargetHelper.js","sourceRoot":"","sources":["../../../src/targets/mac/MacTargetHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { notarize, type NotarizeOptions, type NotaryToolKeychainCredentials } from \"@electron/notarize\"\nimport type { PerFileSignOptions, SigningDistributionType, SignOptions } from \"@electron/osx-sign\"\nimport { Arch, InvalidConfigurationError, log, statOrNull } from \"builder-util\"\nimport { Nullish } from \"builder-util-runtime\"\nimport * as path from \"path\"\nimport { CertType, findIdentity, Identity, reportError } from \"../../codeSign/mac/macCodeSign.js\"\nimport type { MacPackager } from \"../../macPackager.js\"\nimport { ElectronSignOptions, MasConfiguration } from \"../../options/macOptions.js\"\nimport { parsePlistFile, PlistObject } from \"../../util/mac/plist.js\"\nimport { getTemplatePath } from \"../../util/pathManager.js\"\n\nexport type PlatformType = \"mas\" | \"mas-dev\" | \"mac\"\n\nexport class MacTargetHelper {\n constructor(private packager: MacPackager) {}\n\n handleNullIdentity(): boolean {\n if (this.packager.forceCodeSigning) {\n throw new InvalidConfigurationError(\"identity explicitly is set to null, but forceCodeSigning is set to true\")\n }\n log.info({ reason: \"identity explicitly is set to null\" }, \"skipped macOS code signing\")\n return false\n }\n\n async findSigningIdentity(\n targetPlatform: PlatformType,\n qualifier: string | undefined,\n keychainFile: string | Nullish,\n hasCustomSign: boolean,\n signOpts: ElectronSignOptions | null | undefined\n ): Promise<Identity | null> {\n const isMas = MacTargetHelper.isMasTarget(targetPlatform)\n const certificateTypes = MacTargetHelper.getCertificateTypes(targetPlatform, MacTargetHelper.resolveSigningType(targetPlatform, signOpts?.type))\n\n let identity: Identity | null = null\n for (const certificateType of certificateTypes) {\n identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity != null) {\n break\n }\n }\n\n if (identity == null) {\n const noIdentity = !hasCustomSign\n if (qualifier === \"-\") {\n if (MacTargetHelper.isHardenedRuntimeEnabledForSigning(targetPlatform, signOpts?.hardenedRuntime) && !(await this.isLibraryValidationDisabled(targetPlatform, signOpts))) {\n log.warn(\n null,\n \"ad-hoc signing with hardenedRuntime enabled requires the com.apple.security.cs.disable-library-validation entitlement \" +\n \"to prevent app launch failures due to library validation. See https://electron.build/code-signing for details.\"\n )\n }\n identity = new Identity(\"-\", undefined)\n } else if (noIdentity) {\n await reportError(isMas, certificateTypes, qualifier, keychainFile, this.packager.forceCodeSigning)\n return null\n }\n }\n\n return identity\n }\n\n /**\n * Resolves the effective app entitlements file — same precedence as `getOptionsForFile()` — and\n * returns whether it grants `com.apple.security.cs.disable-library-validation`.\n * Fails open: returns false (so callers still warn) when the file cannot be read or parsed.\n */\n async isLibraryValidationDisabled(targetPlatform: PlatformType, signOpts: ElectronSignOptions | Nullish): Promise<boolean> {\n let file = signOpts?.entitlements\n if (!file) {\n const p = `entitlements.${MacTargetHelper.isMasTarget(targetPlatform) ? \"mas\" : \"mac\"}.plist`\n file = (await this.packager.resourceList).includes(p) ? path.join(this.packager.buildResourcesDir, p) : getTemplatePath(\"entitlements.mac.plist\")\n }\n try {\n const entitlements = await parsePlistFile<PlistObject>(file)\n return entitlements[\"com.apple.security.cs.disable-library-validation\"] === true\n } catch (e: any) {\n log.debug({ file, error: e.message }, \"cannot read entitlements to verify library validation\")\n return false\n }\n }\n\n async buildSignOptions(\n appPath: string,\n identity: Identity,\n config: ElectronSignOptions | null | undefined,\n keychainFile: string | Nullish,\n arch: Arch,\n targetPlatform: PlatformType\n ): Promise<SignOptions> {\n const isMas = MacTargetHelper.isMasTarget(targetPlatform)\n const type = MacTargetHelper.resolveSigningType(targetPlatform, config?.type)\n\n let binaries = config?.binaries || undefined\n if (binaries) {\n // Accept absolute paths for external binaries, else resolve relative paths from the artifact's app Contents path.\n binaries = (\n await Promise.all(\n binaries.flatMap(async destination => {\n const expandedDestination = this.packager.expandArch(destination, arch)\n return await Promise.all(\n expandedDestination.map(async d => {\n if (await statOrNull(d)) {\n return d\n }\n return path.resolve(appPath, d)\n })\n )\n })\n )\n ).flat()\n log.info({ binaries, arch: arch == null ? null : Arch[arch] }, \"signing additional user-defined binaries for arch\")\n }\n\n let filter = config?.ignore\n if (Array.isArray(filter)) {\n if (filter.length == 0) {\n filter = undefined\n }\n } else if (typeof filter === \"string\") {\n filter = filter.length === 0 ? undefined : [filter]\n }\n\n const filterRe =\n typeof filter === \"function\"\n ? null\n : filter?.map(it => {\n try {\n return new RegExp(it)\n } catch (e: any) {\n throw new InvalidConfigurationError(`Invalid regex filter pattern: ${it}. ${e.message}`)\n }\n })\n\n return {\n identityValidation: false,\n // https://github.com/electron-userland/electron-builder/issues/1699\n // kext are signed by the chipset manufacturers. You need a special certificate (only available on request) from Apple to be able to sign kext.\n ignore: (file: string) => {\n if (filterRe != null) {\n for (const regExp of filterRe) {\n if (regExp.test(file)) {\n return true\n }\n }\n }\n if (typeof filter === \"function\" && filter(file)) {\n return true\n }\n return (\n file.endsWith(\".kext\") ||\n file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n file.includes(\"/node_modules/puppeteer/.local-chromium\") ||\n file.includes(\"/node_modules/playwright-firefox/.local-browsers\") ||\n file.includes(\"/node_modules/playwright/.local-browsers\")\n )\n\n /* Those are browser automating modules, browser (chromium, nightly) cannot be signed\n https://github.com/electron-userland/electron-builder/issues/2010\n https://github.com/electron-userland/electron-builder/issues/5383\n */\n },\n identity: identity ? identity.hash || identity.name : undefined,\n type,\n platform: isMas ? \"mas\" : \"darwin\",\n version: this.packager.config.electronVersion || undefined,\n app: appPath,\n keychain: keychainFile || undefined,\n binaries,\n // https://github.com/electron-userland/electron-builder/issues/1480\n strictVerify: config?.strictVerify,\n preAutoEntitlements: config?.preAutoEntitlements,\n optionsForFile: await this.getOptionsForFile(appPath, targetPlatform, config),\n provisioningProfile: config?.provisioningProfile || undefined,\n }\n }\n\n async createMasInstaller(\n appPath: string,\n outDir: string,\n masOptions: MasConfiguration,\n keychainFile: string | Nullish,\n targetPlatform: PlatformType,\n arch: Arch,\n identityQualifier?: string | null\n ): Promise<void> {\n const certType = MacTargetHelper.isMasDevelopment(targetPlatform) ? \"Mac Developer\" : \"3rd Party Mac Developer Installer\"\n const masInstallerIdentity = await findIdentity(certType, identityQualifier, keychainFile)\n\n if (masInstallerIdentity == null) {\n throw new InvalidConfigurationError(`Cannot find valid \"${certType}\" identity to sign MAS installer, please see https://electron.build/code-signing`)\n }\n\n MacTargetHelper.assertSafePathForCommandUsage(outDir, \"output directory\")\n\n // mas uploaded to AppStore, so, use \"-\" instead of space for name\n // path.basename prevents path traversal if a crafted artifactName contains \"../../\"\n const artifactName = path.basename(this.packager.expandArtifactNamePattern(masOptions, \"pkg\", arch))\n MacTargetHelper.assertSafePathForCommandUsage(artifactName, \"artifact name\")\n const artifactPath = path.resolve(outDir, artifactName)\n await this.packager.doFlat(appPath, artifactPath, masInstallerIdentity, keychainFile)\n await this.packager.emitArtifactBuildCompleted({\n file: artifactPath,\n target: null,\n arch: Arch.x64,\n safeArtifactName: this.packager.computeSafeArtifactName(artifactName, \"pkg\", arch, true, this.packager.platformOptions.defaultArch),\n packager: this.packager,\n })\n }\n\n async getOptionsForFile(appPath: string, targetPlatform: PlatformType, customSignOptions: ElectronSignOptions | Nullish): Promise<(filePath: string) => PerFileSignOptions> {\n const isMas = MacTargetHelper.isMasTarget(targetPlatform)\n const resourceList = await this.packager.resourceList\n const entitlementsSuffix = isMas ? \"mas\" : \"mac\"\n\n const getEntitlements = (filePath: string) => {\n if (filePath === appPath) {\n if (customSignOptions?.entitlements) {\n return customSignOptions.entitlements\n }\n const p = `entitlements.${entitlementsSuffix}.plist`\n if (resourceList.includes(p)) {\n return path.join(this.packager.buildResourcesDir, p)\n } else {\n return getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n\n if (filePath.includes(\"Library/LoginItems\")) {\n return customSignOptions?.entitlementsLoginHelper\n }\n\n if (customSignOptions?.entitlementsInherit) {\n return customSignOptions.entitlementsInherit\n }\n const p = `entitlements.${entitlementsSuffix}.inherit.plist`\n if (resourceList.includes(p)) {\n return path.join(this.packager.buildResourcesDir, p)\n } else {\n return getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n\n const requirements = isMas || customSignOptions?.requirements == null ? undefined : await this.packager.getResource(customSignOptions.requirements)\n\n return (filePath: string): PerFileSignOptions => {\n const entitlements = getEntitlements(filePath)\n return {\n entitlements: entitlements || undefined,\n hardenedRuntime: MacTargetHelper.isHardenedRuntimeEnabledForSigning(targetPlatform, customSignOptions?.hardenedRuntime) ?? undefined,\n timestamp: customSignOptions?.timestamp || undefined,\n requirements: requirements || undefined,\n additionalArguments: customSignOptions?.additionalArguments || undefined,\n }\n }\n }\n\n /**\n * The effective signing type: an explicit `sign.type` wins, otherwise derived from the build flavor\n * (`mas-dev` → `development`, otherwise `distribution`).\n */\n static resolveSigningType(targetPlatform: PlatformType, configType: SigningDistributionType | Nullish): SigningDistributionType {\n return configType ?? (MacTargetHelper.isMasDevelopment(targetPlatform) ? \"development\" : \"distribution\")\n }\n\n static getCertificateTypes(targetPlatform: PlatformType, type: SigningDistributionType): CertType[] {\n if (type === \"development\") {\n return [\"Mac Developer\", \"Apple Development\"]\n }\n return MacTargetHelper.isMasTarget(targetPlatform) ? [\"Apple Distribution\", \"3rd Party Mac Developer Application\"] : [\"Developer ID Application\"]\n }\n\n /**\n * The MAS `.pkg` installer is only built for distribution signing — a development-signed build\n * (`mas-dev`, or an explicit `sign.type: \"development\"` on a `mas` build) is installed directly.\n */\n static shouldCreateMasInstaller(targetPlatform: PlatformType, configType: SigningDistributionType | Nullish): boolean {\n return MacTargetHelper.isMasTarget(targetPlatform) && MacTargetHelper.resolveSigningType(targetPlatform, configType) !== \"development\"\n }\n\n static isMasTarget(targetName: string): boolean {\n return targetName === \"mas\" || targetName === \"mas-dev\"\n }\n\n static isMasDevelopment(targetName: string): boolean {\n return targetName === \"mas-dev\"\n }\n\n static getPlatformTypeFromTarget(targetName: string): PlatformType {\n // must check for mas-dev first\n if (MacTargetHelper.isMasDevelopment(targetName)) {\n return \"mas-dev\"\n }\n if (MacTargetHelper.isMasTarget(targetName)) {\n return \"mas\"\n }\n return \"mac\"\n }\n\n /**\n * Returns true when hardened runtime will be active for signing.\n * For non-MAS builds it defaults to on; for MAS it defaults to off.\n */\n static isHardenedRuntimeEnabledForSigning(targetPlatform: PlatformType, hardenedRuntime: boolean | null | undefined): boolean {\n return MacTargetHelper.isMasTarget(targetPlatform) ? hardenedRuntime === true : hardenedRuntime !== false\n }\n\n static assertSafePathForCommandUsage(pathValue: string, description: string): void {\n if (/[\\0\\r\\n\"'`$;&|<>]/.test(pathValue)) {\n throw new InvalidConfigurationError(`Invalid ${description}: contains unsupported shell-special characters`)\n }\n }\n\n static getNotarizeOptions(appPath: string): NotarizeOptions | undefined {\n const teamId = process.env.APPLE_TEAM_ID\n const appleId = process.env.APPLE_ID\n const appleIdPassword = process.env.APPLE_APP_SPECIFIC_PASSWORD\n\n if (appleId || appleIdPassword) {\n if (!appleId) {\n throw new InvalidConfigurationError(`APPLE_ID env var needs to be set`)\n }\n if (!appleIdPassword) {\n throw new InvalidConfigurationError(`APPLE_APP_SPECIFIC_PASSWORD env var needs to be set`)\n }\n if (!teamId) {\n throw new InvalidConfigurationError(`APPLE_TEAM_ID env var needs to be set`)\n }\n return { appPath, appleId, appleIdPassword, teamId }\n }\n\n const appleApiKey = process.env.APPLE_API_KEY\n const appleApiKeyId = process.env.APPLE_API_KEY_ID\n const appleApiIssuer = process.env.APPLE_API_ISSUER\n if (appleApiKey || appleApiKeyId || appleApiIssuer) {\n if (!appleApiKey || !appleApiKeyId || !appleApiIssuer) {\n throw new InvalidConfigurationError(`Env vars APPLE_API_KEY, APPLE_API_KEY_ID and APPLE_API_ISSUER need to be set`)\n }\n return { appPath, appleApiKey, appleApiKeyId, appleApiIssuer }\n }\n\n const keychain = process.env.APPLE_KEYCHAIN\n const keychainProfile = process.env.APPLE_KEYCHAIN_PROFILE\n if (keychainProfile) {\n let args: NotaryToolKeychainCredentials = { keychainProfile }\n if (keychain) {\n args = { ...args, keychain }\n }\n return { appPath, ...args }\n }\n\n return undefined\n }\n\n async notarizeIfProvided(appPath: string): Promise<void> {\n const notarizeOptions = this.packager.platformOptions.notarize\n if (notarizeOptions === false) {\n log.info({ reason: \"`notarize` options were set explicitly `false`\" }, \"skipped macOS notarization\")\n return\n }\n const options = MacTargetHelper.getNotarizeOptions(appPath)\n if (!options) {\n log.warn({ reason: \"`notarize` options were unable to be generated\" }, \"skipped macOS notarization\")\n return\n }\n await notarize(options)\n log.info(null, \"notarization successful\")\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MacTargetHelper.js","sourceRoot":"","sources":["../../../src/targets/mac/MacTargetHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { notarize, type NotarizeOptions, type NotaryToolKeychainCredentials } from \"@electron/notarize\"\nimport type { PerFileSignOptions, SigningDistributionType, SignOptions } from \"@electron/osx-sign\"\nimport { Arch, InvalidConfigurationError, log, statOrNull } from \"builder-util\"\nimport { Nullish } from \"builder-util-runtime\"\nimport * as path from \"path\"\nimport { CertType, findIdentity, Identity, reportError } from \"../../codeSign/mac/macCodeSign.js\"\nimport { SigningResult } from \"../../codeSign/signResult.js\"\nimport type { MacPackager } from \"../../macPackager.js\"\nimport { ElectronSignOptions, MasConfiguration } from \"../../options/macOptions.js\"\nimport { parsePlistFile, PlistObject } from \"../../util/mac/plist.js\"\nimport { getTemplatePath } from \"../../util/pathManager.js\"\n\nexport type MasPlatformType = \"mas\" | \"mas-dev\"\nexport type PlatformType = MasPlatformType | \"mac\"\n\nexport class MacTargetHelper {\n constructor(private packager: MacPackager) {}\n\n handleNullIdentity(): SigningResult {\n if (this.packager.forceCodeSigning) {\n throw new InvalidConfigurationError(\"identity explicitly is set to null, but forceCodeSigning is set to true\")\n }\n log.info({ reason: \"identity explicitly is set to null\" }, \"skipped macOS code signing\")\n return \"skipped:disabled\"\n }\n\n async findSigningIdentity(\n targetPlatform: PlatformType,\n qualifier: string | undefined,\n keychainFile: string | Nullish,\n hasCustomSign: boolean,\n signOpts: ElectronSignOptions | null | undefined\n ): Promise<Identity | null> {\n const isMas = MacTargetHelper.isMasTarget(targetPlatform)\n const certificateTypes = MacTargetHelper.getCertificateTypes(targetPlatform, MacTargetHelper.resolveSigningType(targetPlatform, signOpts?.type))\n\n let identity: Identity | null = null\n for (const certificateType of certificateTypes) {\n identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity != null) {\n break\n }\n }\n\n if (identity == null) {\n const noIdentity = !hasCustomSign\n if (qualifier === \"-\") {\n if (MacTargetHelper.isHardenedRuntimeEnabledForSigning(targetPlatform, signOpts?.hardenedRuntime) && !(await this.isLibraryValidationDisabled(targetPlatform, signOpts))) {\n log.warn(\n null,\n \"ad-hoc signing with hardenedRuntime enabled requires the com.apple.security.cs.disable-library-validation entitlement \" +\n \"to prevent app launch failures due to library validation. See https://electron.build/docs/features/code-signing for details.\"\n )\n }\n identity = new Identity(\"-\", undefined)\n } else if (noIdentity) {\n await reportError(isMas, certificateTypes, qualifier, keychainFile, this.packager.forceCodeSigning)\n return null\n }\n }\n\n return identity\n }\n\n /**\n * Resolves the effective app entitlements file — same precedence as `getOptionsForFile()` — and\n * returns whether it grants `com.apple.security.cs.disable-library-validation`.\n * Fails open: returns false (so callers still warn) when the file cannot be read or parsed.\n */\n async isLibraryValidationDisabled(targetPlatform: PlatformType, signOpts: ElectronSignOptions | Nullish): Promise<boolean> {\n let file = signOpts?.entitlements\n if (!file) {\n const p = `entitlements.${MacTargetHelper.isMasTarget(targetPlatform) ? \"mas\" : \"mac\"}.plist`\n file = (await this.packager.resourceList).includes(p) ? path.join(this.packager.buildResourcesDir, p) : getTemplatePath(\"entitlements.mac.plist\")\n }\n try {\n const entitlements = await parsePlistFile<PlistObject>(file)\n return entitlements[\"com.apple.security.cs.disable-library-validation\"] === true\n } catch (e: any) {\n log.debug({ file, error: e.message }, \"cannot read entitlements to verify library validation\")\n return false\n }\n }\n\n async buildSignOptions(\n appPath: string,\n identity: Identity,\n config: ElectronSignOptions | null | undefined,\n keychainFile: string | Nullish,\n arch: Arch,\n targetPlatform: PlatformType\n ): Promise<SignOptions> {\n const isMas = MacTargetHelper.isMasTarget(targetPlatform)\n const type = MacTargetHelper.resolveSigningType(targetPlatform, config?.type)\n\n let binaries = config?.binaries || undefined\n if (binaries) {\n // Accept absolute paths for external binaries, else resolve relative paths from the artifact's app Contents path.\n binaries = (\n await Promise.all(\n binaries.flatMap(async destination => {\n const expandedDestination = this.packager.expandArch(destination, arch)\n return await Promise.all(\n expandedDestination.map(async d => {\n if (await statOrNull(d)) {\n return d\n }\n return path.resolve(appPath, d)\n })\n )\n })\n )\n ).flat()\n log.info({ binaries, arch: arch == null ? null : Arch[arch] }, \"signing additional user-defined binaries for arch\")\n }\n\n let filter = config?.ignore\n if (Array.isArray(filter)) {\n if (filter.length == 0) {\n filter = undefined\n }\n } else if (typeof filter === \"string\") {\n filter = filter.length === 0 ? undefined : [filter]\n }\n\n const filterRe =\n typeof filter === \"function\"\n ? null\n : filter?.map(it => {\n try {\n return new RegExp(it)\n } catch (e: any) {\n throw new InvalidConfigurationError(`Invalid regex filter pattern: ${it}. ${e.message}`)\n }\n })\n\n return {\n identityValidation: false,\n // https://github.com/electron-userland/electron-builder/issues/1699\n // kext are signed by the chipset manufacturers. You need a special certificate (only available on request) from Apple to be able to sign kext.\n ignore: (file: string) => {\n if (filterRe != null) {\n for (const regExp of filterRe) {\n if (regExp.test(file)) {\n return true\n }\n }\n }\n if (typeof filter === \"function\" && filter(file)) {\n return true\n }\n return (\n file.endsWith(\".kext\") ||\n file.startsWith(\"/Contents/PlugIns\", appPath.length) ||\n file.includes(\"/node_modules/puppeteer/.local-chromium\") ||\n file.includes(\"/node_modules/playwright-firefox/.local-browsers\") ||\n file.includes(\"/node_modules/playwright/.local-browsers\")\n )\n\n /* Those are browser automating modules, browser (chromium, nightly) cannot be signed\n https://github.com/electron-userland/electron-builder/issues/2010\n https://github.com/electron-userland/electron-builder/issues/5383\n */\n },\n identity: identity ? identity.hash || identity.name : undefined,\n type,\n platform: isMas ? \"mas\" : \"darwin\",\n version: this.packager.config.electronVersion || undefined,\n app: appPath,\n keychain: keychainFile || undefined,\n binaries,\n // https://github.com/electron-userland/electron-builder/issues/1480\n strictVerify: config?.strictVerify,\n preAutoEntitlements: config?.preAutoEntitlements,\n optionsForFile: await this.getOptionsForFile(appPath, targetPlatform, config),\n provisioningProfile: config?.provisioningProfile || undefined,\n }\n }\n\n async createMasInstaller(\n appPath: string,\n outDir: string,\n masOptions: MasConfiguration,\n keychainFile: string | Nullish,\n targetPlatform: PlatformType,\n arch: Arch,\n identityQualifier?: string | null\n ): Promise<void> {\n const certType = MacTargetHelper.isMasDevelopment(targetPlatform) ? \"Mac Developer\" : \"3rd Party Mac Developer Installer\"\n const masInstallerIdentity = await findIdentity(certType, identityQualifier, keychainFile)\n\n if (masInstallerIdentity == null) {\n throw new InvalidConfigurationError(`Cannot find valid \"${certType}\" identity to sign MAS installer, please see https://electron.build/docs/features/code-signing`)\n }\n\n MacTargetHelper.assertSafePathForCommandUsage(outDir, \"output directory\")\n\n // mas uploaded to AppStore, so, use \"-\" instead of space for name\n // path.basename prevents path traversal if a crafted artifactName contains \"../../\"\n const artifactName = path.basename(this.packager.expandArtifactNamePattern(masOptions, \"pkg\", arch))\n MacTargetHelper.assertSafePathForCommandUsage(artifactName, \"artifact name\")\n const artifactPath = path.resolve(outDir, artifactName)\n await this.packager.doFlat(appPath, artifactPath, masInstallerIdentity, keychainFile)\n await this.packager.emitArtifactBuildCompleted({\n file: artifactPath,\n target: null,\n arch: Arch.x64,\n safeArtifactName: this.packager.computeSafeArtifactName(artifactName, \"pkg\", arch, true, this.packager.platformOptions.defaultArch),\n packager: this.packager,\n })\n }\n\n async getOptionsForFile(appPath: string, targetPlatform: PlatformType, customSignOptions: ElectronSignOptions | Nullish): Promise<(filePath: string) => PerFileSignOptions> {\n const isMas = MacTargetHelper.isMasTarget(targetPlatform)\n const resourceList = await this.packager.resourceList\n const entitlementsSuffix = isMas ? \"mas\" : \"mac\"\n\n const getEntitlements = (filePath: string) => {\n if (filePath === appPath) {\n if (customSignOptions?.entitlements) {\n return customSignOptions.entitlements\n }\n const p = `entitlements.${entitlementsSuffix}.plist`\n if (resourceList.includes(p)) {\n return path.join(this.packager.buildResourcesDir, p)\n } else {\n return getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n\n if (filePath.includes(\"Library/LoginItems\")) {\n return customSignOptions?.entitlementsLoginHelper\n }\n\n if (customSignOptions?.entitlementsInherit) {\n return customSignOptions.entitlementsInherit\n }\n const p = `entitlements.${entitlementsSuffix}.inherit.plist`\n if (resourceList.includes(p)) {\n return path.join(this.packager.buildResourcesDir, p)\n } else {\n return getTemplatePath(\"entitlements.mac.plist\")\n }\n }\n\n const requirements = isMas || customSignOptions?.requirements == null ? undefined : await this.packager.getResource(customSignOptions.requirements)\n\n return (filePath: string): PerFileSignOptions => {\n const entitlements = getEntitlements(filePath)\n return {\n entitlements: entitlements || undefined,\n hardenedRuntime: MacTargetHelper.isHardenedRuntimeEnabledForSigning(targetPlatform, customSignOptions?.hardenedRuntime) ?? undefined,\n timestamp: customSignOptions?.timestamp || undefined,\n requirements: requirements || undefined,\n additionalArguments: customSignOptions?.additionalArguments || undefined,\n }\n }\n }\n\n /**\n * The effective signing type: an explicit `sign.type` wins, otherwise derived from the build flavor\n * (`mas-dev` → `development`, otherwise `distribution`).\n */\n static resolveSigningType(targetPlatform: PlatformType, configType: SigningDistributionType | Nullish): SigningDistributionType {\n return configType ?? (MacTargetHelper.isMasDevelopment(targetPlatform) ? \"development\" : \"distribution\")\n }\n\n static getCertificateTypes(targetPlatform: PlatformType, type: SigningDistributionType): CertType[] {\n if (type === \"development\") {\n return [\"Mac Developer\", \"Apple Development\"]\n }\n return MacTargetHelper.isMasTarget(targetPlatform) ? [\"Apple Distribution\", \"3rd Party Mac Developer Application\"] : [\"Developer ID Application\"]\n }\n\n /**\n * The MAS `.pkg` installer is only built for distribution signing — a development-signed build\n * (`mas-dev`, or an explicit `sign.type: \"development\"` on a `mas` build) is installed directly.\n */\n static shouldCreateMasInstaller(targetPlatform: PlatformType, configType: SigningDistributionType | Nullish): targetPlatform is MasPlatformType {\n return MacTargetHelper.isMasTarget(targetPlatform) && MacTargetHelper.resolveSigningType(targetPlatform, configType) !== \"development\"\n }\n\n static isMasTarget(targetName: string): boolean {\n return targetName === \"mas\" || targetName === \"mas-dev\"\n }\n\n static isMasDevelopment(targetName: string): boolean {\n return targetName === \"mas-dev\"\n }\n\n static getPlatformTypeFromTarget(targetName: string): PlatformType {\n // must check for mas-dev first\n if (MacTargetHelper.isMasDevelopment(targetName)) {\n return \"mas-dev\"\n }\n if (MacTargetHelper.isMasTarget(targetName)) {\n return \"mas\"\n }\n return \"mac\"\n }\n\n /**\n * Returns true when hardened runtime will be active for signing.\n * For non-MAS builds it defaults to on; for MAS it defaults to off.\n */\n static isHardenedRuntimeEnabledForSigning(targetPlatform: PlatformType, hardenedRuntime: boolean | null | undefined): boolean {\n return MacTargetHelper.isMasTarget(targetPlatform) ? hardenedRuntime === true : hardenedRuntime !== false\n }\n\n static assertSafePathForCommandUsage(pathValue: string, description: string): void {\n if (/[\\0\\r\\n\"'`$;&|<>]/.test(pathValue)) {\n throw new InvalidConfigurationError(`Invalid ${description}: contains unsupported shell-special characters`)\n }\n }\n\n static getNotarizeOptions(appPath: string): NotarizeOptions | undefined {\n const teamId = process.env.APPLE_TEAM_ID\n const appleId = process.env.APPLE_ID\n const appleIdPassword = process.env.APPLE_APP_SPECIFIC_PASSWORD\n\n if (appleId || appleIdPassword) {\n if (!appleId) {\n throw new InvalidConfigurationError(`APPLE_ID env var needs to be set`)\n }\n if (!appleIdPassword) {\n throw new InvalidConfigurationError(`APPLE_APP_SPECIFIC_PASSWORD env var needs to be set`)\n }\n if (!teamId) {\n throw new InvalidConfigurationError(`APPLE_TEAM_ID env var needs to be set`)\n }\n return { appPath, appleId, appleIdPassword, teamId }\n }\n\n const appleApiKey = process.env.APPLE_API_KEY\n const appleApiKeyId = process.env.APPLE_API_KEY_ID\n const appleApiIssuer = process.env.APPLE_API_ISSUER\n if (appleApiKey || appleApiKeyId || appleApiIssuer) {\n if (!appleApiKey || !appleApiKeyId || !appleApiIssuer) {\n throw new InvalidConfigurationError(`Env vars APPLE_API_KEY, APPLE_API_KEY_ID and APPLE_API_ISSUER need to be set`)\n }\n return { appPath, appleApiKey, appleApiKeyId, appleApiIssuer }\n }\n\n const keychain = process.env.APPLE_KEYCHAIN\n const keychainProfile = process.env.APPLE_KEYCHAIN_PROFILE\n if (keychainProfile) {\n let args: NotaryToolKeychainCredentials = { keychainProfile }\n if (keychain) {\n args = { ...args, keychain }\n }\n return { appPath, ...args }\n }\n\n return undefined\n }\n\n async notarizeIfProvided(appPath: string): Promise<void> {\n const notarizeOptions = this.packager.platformOptions.notarize\n if (notarizeOptions === false) {\n log.info({ reason: \"`notarize` options were set explicitly `false`\" }, \"skipped macOS notarization\")\n return\n }\n const options = MacTargetHelper.getNotarizeOptions(appPath)\n if (!options) {\n log.warn({ reason: \"`notarize` options were unable to be generated\" }, \"skipped macOS notarization\")\n return\n }\n await notarize(options)\n log.info(null, \"notarization successful\")\n }\n}\n"]}
|
package/dist/targets/mac/pkg.js
CHANGED
|
@@ -64,7 +64,7 @@ export class PkgTarget extends Target {
|
|
|
64
64
|
this.buildComponentPackage(appPath, componentPropertyListFile, innerPackageFile),
|
|
65
65
|
]))[0];
|
|
66
66
|
if (identity == null && packager.forceCodeSigning) {
|
|
67
|
-
throw new Error(`Cannot find valid "${certType}" to sign standalone installer, please see https://electron.build/code-signing`);
|
|
67
|
+
throw new Error(`Cannot find valid "${certType}" to sign standalone installer, please see https://electron.build/docs/features/code-signing`);
|
|
68
68
|
}
|
|
69
69
|
const args = prepareProductBuildArgs(identity, keychainFile);
|
|
70
70
|
args.push("--distribution", distInfoFile);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/targets/mac/pkg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,UAAU,EAAW,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAGtC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAe,MAAM,yBAAyB,CAAA;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AAElE,MAAM,QAAQ,GAAG,wBAAwB,CAAA;AAEzC,+FAA+F;AAC/F,SAAS,wBAAwB,CAAC,IAAU;IAC1C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,KAAK;YACb,OAAO,CAAC,OAAO,CAAC,CAAA;QAClB,KAAK,IAAI,CAAC,GAAG;YACX,OAAO,CAAC,QAAQ,CAAC,CAAA;QACnB,KAAK,IAAI,CAAC,SAAS;YACjB,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC5B,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB;YACE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAOD,kEAAkE;AAClE,wEAAwE;AACxE,8FAA8F;AAC9F,2FAA2F;AAC3F,MAAM,OAAO,SAAU,SAAQ,MAAM;IAGnC,YACmB,QAAqB,EAC7B,MAAc;QAEvB,KAAK,CAAC,KAAK,CAAC,CAAA;QAHK,aAAQ,GAAR,QAAQ,CAAa;QAC7B,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB;YACE,aAAa,EAAE,IAAI;YACnB,oBAAoB,EAAE,IAAI;YAC1B,kBAAkB,EAAE,IAAI;SACzB,EACD,QAAQ,CAAC,mBAAmB,CAAa,KAAK,CAAC,CAChD,CAAA;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,IAAU;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;QAEhC,8IAA8I;QAC9I,MAAM,YAAY,GAAG,QAAQ,CAAC,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAEzD,MAAM,QAAQ,CAAC,wBAAwB,CAAC;YACtC,qBAAqB,EAAE,KAAK;YAC5B,IAAI,EAAE,YAAY;YAClB,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,YAAY,CAAA;QAExE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAA;QAC7B,kJAAkJ;QAClJ,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QAE7D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QAC5F,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QACvG,MAAM,QAAQ,GAAG,CACf,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC;YACtD,IAAI,CAAC,kCAAkC,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC;YACnF,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,CAAC;SACjF,CAAC,CACH,CAAC,CAAC,CAAC,CAAA;QAEJ,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,gFAAgF,CAAC,CAAA;QACjI,CAAC;QAED,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC5D,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;QACzC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACvB,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,EAAU,CAAC,CAAC,CAAA;QAC1D,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE;YAC/B,GAAG,EAAE,SAAS;SACf,CAAC,CAAA;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACnE,MAAM,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;QACtD,MAAM,QAAQ,CAAC,0BAA0B,CAAC;YACxC,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,IAAI;YACZ,IAAI;YACJ,gBAAgB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC;YAC7E,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEO,gBAAgB;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAA;QAC9C,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAA;QAC5E,IAAI,KAAoB,CAAA;QACxB,IAAI,CAAC;YACH,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;QAClC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAA;YACT,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;IAClC,CAAC;IAEO,KAAK,CAAC,kCAAkC,CAAC,YAAoB,EAAE,OAAe,EAAE,aAAmC,EAAE,IAAU;QACrI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,0GAA0G;QAC1G,gFAAgF;QAChF,0EAA0E;QAC1E,MAAM,YAAY,GAAwB,EAAE,CAAA;QAE5C,oHAAoH;QACpH,gGAAgG;QAChG,YAAY,CAAC,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;QAElD,8FAA8F;QAC9F,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,CAAA;QAC/E,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;YACjC,YAAY,CAAC,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAA;QACvI,MAAM,aAAa,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;QAExD,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QACzF,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAA;YACnE,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACvB,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE;YAC/B,GAAG,EAAE,IAAI,CAAC,MAAM;SACjB,CAAC,CAAA;QAEF,IAAI,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAEpD,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,oBAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,4BAA4B,CAAA;YAC7F,MAAM,UAAU,GAAG,gEAAgE,CAAA;YACnF,IAAI,gBAAgB,GAAG,EAAE,CAAA;YACzB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAChC,gBAAgB,IAAI,wBAAwB,KAAK,OAAO,CAAA;YAC1D,CAAC,CAAC,CAAA;YACF,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,YAAY,GAAG,gBAAgB,GAAG,UAAU,EAAE,CAAC,CAAA;QAC3G,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAA;QACnE,QAAQ;YACN,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC;gBAClC,iCAAiC,OAAO,CAAC,aAAa,6BAA6B,OAAO,CAAC,oBAAoB,yBAAyB,OAAO,CAAC,kBAAkB,QAAQ;gBAC1K,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAEjC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAC3E,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,QAAQ,CAAA;gBAC1D,uCAAuC;gBACvC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,OAAO,CAAA;gBACrD,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,yBAAyB,UAAU,gBAAgB,SAAS,cAAc,OAAO,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;gBAC1K,QAAQ;oBACN,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,kCAAkC,UAAU,gBAAgB,SAAS,cAAc,OAAO,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YAC5K,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAChE,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,sBAAsB,OAAO,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACxH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,sBAAsB,OAAO,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACxH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACtE,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,yBAAyB,UAAU,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC9H,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,CAAA;QACf,MAAM,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IACzC,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,OAAe,EAAE,sBAA8B,EAAE,iBAAyB;QAC5G,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEtC,2CAA2C;QAC3C,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAA;QAEjF,6BAA6B;QAC7B,MAAM,SAAS,GAAG,CAAC,MAAM,cAAc,CAAgB,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAe,EAAE,EAAE,CAAC,EAAE,CAAC,sBAAsB,KAAK,eAAe,CAAC,CAAA;QAC1J,IAAI,WAAW,GAAQ,EAAE,CAAA;QACzB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;YAE1B,+DAA+D;YAC/D,4FAA4F;YAC5F,sEAAsE;YACtE,OAAO,WAAW,CAAC,YAAY,CAAA;YAE/B,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;gBAClC,WAAW,CAAC,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAA;YACzD,CAAC;YAED,IAAI,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;gBACrC,WAAW,CAAC,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAA;YAC/D,CAAC;YAED,IAAI,OAAO,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;gBACxC,WAAW,CAAC,yBAAyB,GAAG,OAAO,CAAC,mBAAmB,CAAA;YACrE,CAAC;YAED,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;gBACpC,WAAW,CAAC,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAA;YAC7D,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAA;QAExH,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAA;QAE/F,uFAAuF;QACvF,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACvF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAElC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QACtF,IAAI,UAAU,IAAI,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;YAChE,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;YAC3C,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChC,WAAW,CAAC,0BAA0B,GAAG,IAAI,CAAA;gBAC/C,CAAC;qBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACxC,WAAW,CAAC,2BAA2B,GAAG,IAAI,CAAA;gBAChD,CAAC;YACH,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACpC,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,aAAa,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAE5B,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAyB,EAAE,QAA0B;IAC3F,MAAM,IAAI,GAAkB,EAAE,CAAA;IAC9B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAK,CAAC,CAAA;QACnC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAe,EAAE,QAAgB;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAc,aAAa,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,0BAA0B,CAAA;QAChD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAA;IACjB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,iBAAyB,EAAE,OAAkC;IAC7F,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAA;AACjH,CAAC","sourcesContent":["import { Arch, debug, exec, statOrNull, use } from \"builder-util\"\nimport { deepAssign, Nullish } from \"builder-util-runtime\"\nimport { readdirSync } from \"fs\"\nimport { readFile, unlink, writeFile } from \"fs/promises\"\nimport * as path from \"path\"\nimport { filterCFBundleIdentifier } from \"../../appInfo.js\"\nimport { findIdentity } from \"../../codeSign/mac/macCodeSign.js\"\nimport type { Identity } from \"../../codeSign/mac/macCodeSign.js\"\nimport { Target } from \"../../core.js\"\nimport { MacPackager } from \"../../macPackager.js\"\nimport { PkgOptions } from \"../../options/pkgOptions.js\"\nimport { savePlistFile, parsePlistFile, PlistObject } from \"../../util/mac/plist.js\"\nimport { getNotLocalizedLicenseFile } from \"../../util/license.js\"\n\nconst certType = \"Developer ID Installer\"\n\n// Maps electron-builder Arch to Apple's architecture names for productbuild requirements plist\nfunction archToAppleArchitectures(arch: Arch): string[] {\n switch (arch) {\n case Arch.arm64:\n return [\"arm64\"]\n case Arch.x64:\n return [\"x86_64\"]\n case Arch.universal:\n return [\"arm64\", \"x86_64\"]\n case Arch.ia32:\n return [\"i386\"]\n default:\n return [\"arm64\", \"x86_64\"]\n }\n}\n\ntype ExtraPackages = {\n packagePath: string\n packages: string[]\n}\n\n// http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/\n// to use --scripts, we must build .app bundle separately using pkgbuild\n// productbuild --scripts doesn't work (because scripts in this case not added to our package)\n// https://github.com/electron-userland/@electron/osx-sign/issues/96#issuecomment-274986942\nexport class PkgTarget extends Target {\n readonly options: PkgOptions\n\n constructor(\n private readonly packager: MacPackager,\n readonly outDir: string\n ) {\n super(\"pkg\")\n this.options = deepAssign(\n {\n allowAnywhere: true,\n allowCurrentUserHome: true,\n allowRootDirectory: true,\n },\n packager.getOptionsForTarget<PkgOptions>(\"pkg\")\n )\n }\n\n async build(appPath: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n const appInfo = packager.appInfo\n\n // pkg doesn't like not ASCII symbols (Could not open package to list files: /Volumes/test/t-gIjdGK/test-project-0/dist/Test App ßW-1.1.0.pkg)\n const artifactName = packager.expandArtifactNamePattern(options, \"pkg\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.emitArtifactBuildStarted({\n targetPresentableName: \"pkg\",\n file: artifactPath,\n arch,\n })\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n\n const appOutDir = this.outDir\n // https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html\n const distInfoFile = path.join(appOutDir, \"distribution.xml\")\n\n const extraPackages = this.getExtraPackages()\n\n const innerPackageFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.pkg`)\n const componentPropertyListFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.plist`)\n const identity = (\n await Promise.all([\n findIdentity(certType, options.identity, keychainFile),\n this.customizeDistributionConfiguration(distInfoFile, appPath, extraPackages, arch),\n this.buildComponentPackage(appPath, componentPropertyListFile, innerPackageFile),\n ])\n )[0]\n\n if (identity == null && packager.forceCodeSigning) {\n throw new Error(`Cannot find valid \"${certType}\" to sign standalone installer, please see https://electron.build/code-signing`)\n }\n\n const args = prepareProductBuildArgs(identity, keychainFile)\n args.push(\"--distribution\", distInfoFile)\n if (extraPackages) {\n args.push(\"--package-path\", extraPackages.packagePath)\n }\n args.push(artifactPath)\n use(options.productbuild, it => args.push(...(it as any)))\n await exec(\"productbuild\", args, {\n cwd: appOutDir,\n })\n await Promise.all([unlink(innerPackageFile), unlink(distInfoFile)])\n await packager.helper.notarizeIfProvided(artifactPath)\n await packager.emitArtifactBuildCompleted({\n file: artifactPath,\n target: this,\n arch,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"pkg\", arch),\n packager,\n })\n }\n\n private getExtraPackages(): ExtraPackages | null {\n const extraPkgsDir = this.options.extraPkgsDir\n if (extraPkgsDir == null) {\n return null\n }\n const packagePath = path.join(this.packager.buildResourcesDir, extraPkgsDir)\n let files: Array<string>\n try {\n files = readdirSync(packagePath)\n } catch (e: any) {\n if (e.code === \"ENOENT\") {\n return null\n } else {\n throw e\n }\n }\n const packages = files.filter(file => file.endsWith(\".pkg\"))\n if (packages.length === 0) {\n return null\n }\n return { packagePath, packages }\n }\n\n private async customizeDistributionConfiguration(distInfoFile: string, appPath: string, extraPackages: ExtraPackages | null, arch: Arch) {\n const options = this.options\n\n // Build requirements plist for productbuild to generate correct hostArchitectures and allowed-os-versions\n // This is the Apple-recommended way to specify architecture and OS requirements\n // See: man productbuild, section \"PRE-INSTALL REQUIREMENTS PROPERTY LIST\"\n const requirements: Record<string, any> = {}\n\n // Set architecture based on build target - productbuild will generate correct hostArchitectures in distribution XML\n // On macOS Big Sur+, productbuild defaults to both arm64 and x86_64 unless we specify otherwise\n requirements.arch = archToAppleArchitectures(arch)\n\n // Set minimum OS version - productbuild will generate allowed-os-versions in distribution XML\n const minimumSystemVersion = this.packager.platformOptions.minimumSystemVersion\n if (minimumSystemVersion != null) {\n requirements.os = [minimumSystemVersion]\n }\n\n const requirementsPlistFile = await this.packager.tempDirManager.getTempFile({ suffix: \".plist\", prefix: \"productbuild-requirements\" })\n await savePlistFile(requirementsPlistFile, requirements)\n\n const args = [\"--synthesize\", \"--product\", requirementsPlistFile, \"--component\", appPath]\n if (extraPackages) {\n extraPackages.packages.forEach(pkg => {\n args.push(\"--package\", path.join(extraPackages.packagePath, pkg))\n })\n }\n args.push(distInfoFile)\n await exec(\"productbuild\", args, {\n cwd: this.outDir,\n })\n\n let distInfo = await readFile(distInfoFile, \"utf-8\")\n\n if (options.mustClose != null && options.mustClose.length !== 0) {\n const startContent = ` <pkg-ref id=\"${this.packager.appInfo.id}\">\\n <must-close>\\n`\n const endContent = \" </must-close>\\n </pkg-ref>\\n</installer-gui-script>\"\n let mustCloseContent = \"\"\n options.mustClose.forEach(appId => {\n mustCloseContent += ` <app id=\"${appId}\"/>\\n`\n })\n distInfo = distInfo.replace(\"</installer-gui-script>\", `${startContent}${mustCloseContent}${endContent}`)\n }\n\n const insertIndex = distInfo.lastIndexOf(\"</installer-gui-script>\")\n distInfo =\n distInfo.substring(0, insertIndex) +\n ` <domains enable_anywhere=\"${options.allowAnywhere}\" enable_currentUserHome=\"${options.allowCurrentUserHome}\" enable_localSystem=\"${options.allowRootDirectory}\" />\\n` +\n distInfo.substring(insertIndex)\n\n if (options.background != null) {\n const background = await this.packager.getResource(options.background.file)\n if (background != null) {\n const alignment = options.background.alignment || \"center\"\n // noinspection SpellCheckingInspection\n const scaling = options.background.scaling || \"tofit\"\n distInfo = distInfo.substring(0, insertIndex) + ` <background file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n distInfo =\n distInfo.substring(0, insertIndex) + ` <background-darkAqua file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n }\n }\n\n const welcome = await this.packager.getResource(options.welcome)\n if (welcome != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <welcome file=\"${welcome}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const license = await getNotLocalizedLicenseFile(options.license, this.packager)\n if (license != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <license file=\"${license}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const conclusion = await this.packager.getResource(options.conclusion)\n if (conclusion != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <conclusion file=\"${conclusion}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n debug(distInfo)\n await writeFile(distInfoFile, distInfo)\n }\n\n private async buildComponentPackage(appPath: string, propertyListOutputFile: string, packageOutputFile: string) {\n const options = this.options\n const rootPath = path.dirname(appPath)\n\n // first produce a component plist template\n await exec(\"pkgbuild\", [\"--analyze\", \"--root\", rootPath, propertyListOutputFile])\n\n // process the template plist\n const plistInfo = (await parsePlistFile<PlistObject[]>(propertyListOutputFile)).filter((it: PlistObject) => it.RootRelativeBundlePath !== \"Electron.dSYM\")\n let packageInfo: any = {}\n if (plistInfo.length > 0) {\n packageInfo = plistInfo[0]\n\n // ChildBundles lists all of electron binaries within the .app.\n // There is no particular reason for removing that key, except to be as close as possible to\n // the PackageInfo generated by previous versions of electron-builder.\n delete packageInfo.ChildBundles\n\n if (options.isRelocatable != null) {\n packageInfo.BundleIsRelocatable = options.isRelocatable\n }\n\n if (options.isVersionChecked != null) {\n packageInfo.BundleIsVersionChecked = options.isVersionChecked\n }\n\n if (options.hasStrictIdentifier != null) {\n packageInfo.BundleHasStrictIdentifier = options.hasStrictIdentifier\n }\n\n if (options.overwriteAction != null) {\n packageInfo.BundleOverwriteAction = options.overwriteAction\n }\n }\n\n // now build the package\n const args = [\"--root\", rootPath, \"--identifier\", this.packager.appInfo.id, \"--component-plist\", propertyListOutputFile]\n\n use(this.options.installLocation || \"/Applications\", it => args.push(\"--install-location\", it))\n\n // Pass the version explicitly — macOS 15+ pkgbuild no longer infers it from the bundle\n const pkgVersion = await resolvePkgBuildVersion(appPath, this.packager.appInfo.version)\n args.push(\"--version\", pkgVersion)\n\n const scriptsDir = resolveScriptsDir(this.packager.buildResourcesDir, options.scripts)\n if (scriptsDir && (await statOrNull(scriptsDir))?.isDirectory()) {\n const dirContents = readdirSync(scriptsDir)\n dirContents.forEach(name => {\n if (name.includes(\"preinstall\")) {\n packageInfo.BundlePreInstallScriptPath = name\n } else if (name.includes(\"postinstall\")) {\n packageInfo.BundlePostInstallScriptPath = name\n }\n })\n args.push(\"--scripts\", scriptsDir)\n }\n if (plistInfo.length > 0) {\n await savePlistFile(propertyListOutputFile, plistInfo)\n }\n\n args.push(packageOutputFile)\n\n await exec(\"pkgbuild\", args)\n }\n}\n\nexport function prepareProductBuildArgs(identity: Identity | null, keychain: string | Nullish): Array<string> {\n const args: Array<string> = []\n if (identity != null) {\n args.push(\"--sign\", identity.hash!)\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n }\n return args\n}\n\n/**\n * Resolves the version string to pass as `--version` to pkgbuild.\n * Reads CFBundleShortVersionString from the app bundle's Info.plist (what pkgbuild\n * previously inferred automatically), falling back to the appInfo version.\n */\nexport async function resolvePkgBuildVersion(appPath: string, fallback: string): Promise<string> {\n const infoPlistPath = path.join(appPath, \"Contents\", \"Info.plist\")\n try {\n const plist = await parsePlistFile<PlistObject>(infoPlistPath)\n const version = plist.CFBundleShortVersionString\n return typeof version === \"string\" && version.length > 0 ? version : fallback\n } catch {\n return fallback\n }\n}\n\n/**\n * Resolves the scripts directory path for pkgbuild.\n * Returns null when scripts is explicitly set to null (disabled).\n * Returns a custom path when scripts is a non-empty string.\n * Falls back to the default \"pkg-scripts\" directory otherwise.\n */\nexport function resolveScriptsDir(buildResourcesDir: string, scripts: string | null | undefined): string | null {\n if (scripts === null) {\n return null\n }\n return scripts != null ? path.resolve(buildResourcesDir, scripts) : path.join(buildResourcesDir, \"pkg-scripts\")\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/targets/mac/pkg.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arch, debug, exec, statOrNull, use } from \"builder-util\"\nimport { deepAssign, Nullish } from \"builder-util-runtime\"\nimport { readdirSync } from \"fs\"\nimport { readFile, unlink, writeFile } from \"fs/promises\"\nimport * as path from \"path\"\nimport { filterCFBundleIdentifier } from \"../../appInfo.js\"\nimport { findIdentity } from \"../../codeSign/mac/macCodeSign.js\"\nimport type { Identity } from \"../../codeSign/mac/macCodeSign.js\"\nimport { Target } from \"../../core.js\"\nimport { MacPackager } from \"../../macPackager.js\"\nimport { PkgOptions } from \"../../options/pkgOptions.js\"\nimport { savePlistFile, parsePlistFile, PlistObject } from \"../../util/mac/plist.js\"\nimport { getNotLocalizedLicenseFile } from \"../../util/license.js\"\n\nconst certType = \"Developer ID Installer\"\n\n// Maps electron-builder Arch to Apple's architecture names for productbuild requirements plist\nfunction archToAppleArchitectures(arch: Arch): string[] {\n switch (arch) {\n case Arch.arm64:\n return [\"arm64\"]\n case Arch.x64:\n return [\"x86_64\"]\n case Arch.universal:\n return [\"arm64\", \"x86_64\"]\n case Arch.ia32:\n return [\"i386\"]\n default:\n return [\"arm64\", \"x86_64\"]\n }\n}\n\ntype ExtraPackages = {\n packagePath: string\n packages: string[]\n}\n\n// http://www.shanekirk.com/2013/10/creating-flat-packages-in-osx/\n// to use --scripts, we must build .app bundle separately using pkgbuild\n// productbuild --scripts doesn't work (because scripts in this case not added to our package)\n// https://github.com/electron-userland/@electron/osx-sign/issues/96#issuecomment-274986942\nexport class PkgTarget extends Target {\n readonly options: PkgOptions\n\n constructor(\n private readonly packager: MacPackager,\n readonly outDir: string\n ) {\n super(\"pkg\")\n this.options = deepAssign(\n {\n allowAnywhere: true,\n allowCurrentUserHome: true,\n allowRootDirectory: true,\n },\n packager.getOptionsForTarget<PkgOptions>(\"pkg\")\n )\n }\n\n async build(appPath: string, arch: Arch): Promise<any> {\n const packager = this.packager\n const options = this.options\n const appInfo = packager.appInfo\n\n // pkg doesn't like not ASCII symbols (Could not open package to list files: /Volumes/test/t-gIjdGK/test-project-0/dist/Test App ßW-1.1.0.pkg)\n const artifactName = packager.expandArtifactNamePattern(options, \"pkg\", arch)\n const artifactPath = path.join(this.outDir, artifactName)\n\n await packager.emitArtifactBuildStarted({\n targetPresentableName: \"pkg\",\n file: artifactPath,\n arch,\n })\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n\n const appOutDir = this.outDir\n // https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html\n const distInfoFile = path.join(appOutDir, \"distribution.xml\")\n\n const extraPackages = this.getExtraPackages()\n\n const innerPackageFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.pkg`)\n const componentPropertyListFile = path.join(appOutDir, `${filterCFBundleIdentifier(appInfo.id)}.plist`)\n const identity = (\n await Promise.all([\n findIdentity(certType, options.identity, keychainFile),\n this.customizeDistributionConfiguration(distInfoFile, appPath, extraPackages, arch),\n this.buildComponentPackage(appPath, componentPropertyListFile, innerPackageFile),\n ])\n )[0]\n\n if (identity == null && packager.forceCodeSigning) {\n throw new Error(`Cannot find valid \"${certType}\" to sign standalone installer, please see https://electron.build/docs/features/code-signing`)\n }\n\n const args = prepareProductBuildArgs(identity, keychainFile)\n args.push(\"--distribution\", distInfoFile)\n if (extraPackages) {\n args.push(\"--package-path\", extraPackages.packagePath)\n }\n args.push(artifactPath)\n use(options.productbuild, it => args.push(...(it as any)))\n await exec(\"productbuild\", args, {\n cwd: appOutDir,\n })\n await Promise.all([unlink(innerPackageFile), unlink(distInfoFile)])\n await packager.helper.notarizeIfProvided(artifactPath)\n await packager.emitArtifactBuildCompleted({\n file: artifactPath,\n target: this,\n arch,\n safeArtifactName: packager.computeSafeArtifactName(artifactName, \"pkg\", arch),\n packager,\n })\n }\n\n private getExtraPackages(): ExtraPackages | null {\n const extraPkgsDir = this.options.extraPkgsDir\n if (extraPkgsDir == null) {\n return null\n }\n const packagePath = path.join(this.packager.buildResourcesDir, extraPkgsDir)\n let files: Array<string>\n try {\n files = readdirSync(packagePath)\n } catch (e: any) {\n if (e.code === \"ENOENT\") {\n return null\n } else {\n throw e\n }\n }\n const packages = files.filter(file => file.endsWith(\".pkg\"))\n if (packages.length === 0) {\n return null\n }\n return { packagePath, packages }\n }\n\n private async customizeDistributionConfiguration(distInfoFile: string, appPath: string, extraPackages: ExtraPackages | null, arch: Arch) {\n const options = this.options\n\n // Build requirements plist for productbuild to generate correct hostArchitectures and allowed-os-versions\n // This is the Apple-recommended way to specify architecture and OS requirements\n // See: man productbuild, section \"PRE-INSTALL REQUIREMENTS PROPERTY LIST\"\n const requirements: Record<string, any> = {}\n\n // Set architecture based on build target - productbuild will generate correct hostArchitectures in distribution XML\n // On macOS Big Sur+, productbuild defaults to both arm64 and x86_64 unless we specify otherwise\n requirements.arch = archToAppleArchitectures(arch)\n\n // Set minimum OS version - productbuild will generate allowed-os-versions in distribution XML\n const minimumSystemVersion = this.packager.platformOptions.minimumSystemVersion\n if (minimumSystemVersion != null) {\n requirements.os = [minimumSystemVersion]\n }\n\n const requirementsPlistFile = await this.packager.tempDirManager.getTempFile({ suffix: \".plist\", prefix: \"productbuild-requirements\" })\n await savePlistFile(requirementsPlistFile, requirements)\n\n const args = [\"--synthesize\", \"--product\", requirementsPlistFile, \"--component\", appPath]\n if (extraPackages) {\n extraPackages.packages.forEach(pkg => {\n args.push(\"--package\", path.join(extraPackages.packagePath, pkg))\n })\n }\n args.push(distInfoFile)\n await exec(\"productbuild\", args, {\n cwd: this.outDir,\n })\n\n let distInfo = await readFile(distInfoFile, \"utf-8\")\n\n if (options.mustClose != null && options.mustClose.length !== 0) {\n const startContent = ` <pkg-ref id=\"${this.packager.appInfo.id}\">\\n <must-close>\\n`\n const endContent = \" </must-close>\\n </pkg-ref>\\n</installer-gui-script>\"\n let mustCloseContent = \"\"\n options.mustClose.forEach(appId => {\n mustCloseContent += ` <app id=\"${appId}\"/>\\n`\n })\n distInfo = distInfo.replace(\"</installer-gui-script>\", `${startContent}${mustCloseContent}${endContent}`)\n }\n\n const insertIndex = distInfo.lastIndexOf(\"</installer-gui-script>\")\n distInfo =\n distInfo.substring(0, insertIndex) +\n ` <domains enable_anywhere=\"${options.allowAnywhere}\" enable_currentUserHome=\"${options.allowCurrentUserHome}\" enable_localSystem=\"${options.allowRootDirectory}\" />\\n` +\n distInfo.substring(insertIndex)\n\n if (options.background != null) {\n const background = await this.packager.getResource(options.background.file)\n if (background != null) {\n const alignment = options.background.alignment || \"center\"\n // noinspection SpellCheckingInspection\n const scaling = options.background.scaling || \"tofit\"\n distInfo = distInfo.substring(0, insertIndex) + ` <background file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n distInfo =\n distInfo.substring(0, insertIndex) + ` <background-darkAqua file=\"${background}\" alignment=\"${alignment}\" scaling=\"${scaling}\"/>\\n` + distInfo.substring(insertIndex)\n }\n }\n\n const welcome = await this.packager.getResource(options.welcome)\n if (welcome != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <welcome file=\"${welcome}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const license = await getNotLocalizedLicenseFile(options.license, this.packager)\n if (license != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <license file=\"${license}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n const conclusion = await this.packager.getResource(options.conclusion)\n if (conclusion != null) {\n distInfo = distInfo.substring(0, insertIndex) + ` <conclusion file=\"${conclusion}\"/>\\n` + distInfo.substring(insertIndex)\n }\n\n debug(distInfo)\n await writeFile(distInfoFile, distInfo)\n }\n\n private async buildComponentPackage(appPath: string, propertyListOutputFile: string, packageOutputFile: string) {\n const options = this.options\n const rootPath = path.dirname(appPath)\n\n // first produce a component plist template\n await exec(\"pkgbuild\", [\"--analyze\", \"--root\", rootPath, propertyListOutputFile])\n\n // process the template plist\n const plistInfo = (await parsePlistFile<PlistObject[]>(propertyListOutputFile)).filter((it: PlistObject) => it.RootRelativeBundlePath !== \"Electron.dSYM\")\n let packageInfo: any = {}\n if (plistInfo.length > 0) {\n packageInfo = plistInfo[0]\n\n // ChildBundles lists all of electron binaries within the .app.\n // There is no particular reason for removing that key, except to be as close as possible to\n // the PackageInfo generated by previous versions of electron-builder.\n delete packageInfo.ChildBundles\n\n if (options.isRelocatable != null) {\n packageInfo.BundleIsRelocatable = options.isRelocatable\n }\n\n if (options.isVersionChecked != null) {\n packageInfo.BundleIsVersionChecked = options.isVersionChecked\n }\n\n if (options.hasStrictIdentifier != null) {\n packageInfo.BundleHasStrictIdentifier = options.hasStrictIdentifier\n }\n\n if (options.overwriteAction != null) {\n packageInfo.BundleOverwriteAction = options.overwriteAction\n }\n }\n\n // now build the package\n const args = [\"--root\", rootPath, \"--identifier\", this.packager.appInfo.id, \"--component-plist\", propertyListOutputFile]\n\n use(this.options.installLocation || \"/Applications\", it => args.push(\"--install-location\", it))\n\n // Pass the version explicitly — macOS 15+ pkgbuild no longer infers it from the bundle\n const pkgVersion = await resolvePkgBuildVersion(appPath, this.packager.appInfo.version)\n args.push(\"--version\", pkgVersion)\n\n const scriptsDir = resolveScriptsDir(this.packager.buildResourcesDir, options.scripts)\n if (scriptsDir && (await statOrNull(scriptsDir))?.isDirectory()) {\n const dirContents = readdirSync(scriptsDir)\n dirContents.forEach(name => {\n if (name.includes(\"preinstall\")) {\n packageInfo.BundlePreInstallScriptPath = name\n } else if (name.includes(\"postinstall\")) {\n packageInfo.BundlePostInstallScriptPath = name\n }\n })\n args.push(\"--scripts\", scriptsDir)\n }\n if (plistInfo.length > 0) {\n await savePlistFile(propertyListOutputFile, plistInfo)\n }\n\n args.push(packageOutputFile)\n\n await exec(\"pkgbuild\", args)\n }\n}\n\nexport function prepareProductBuildArgs(identity: Identity | null, keychain: string | Nullish): Array<string> {\n const args: Array<string> = []\n if (identity != null) {\n args.push(\"--sign\", identity.hash!)\n if (keychain != null) {\n args.push(\"--keychain\", keychain)\n }\n }\n return args\n}\n\n/**\n * Resolves the version string to pass as `--version` to pkgbuild.\n * Reads CFBundleShortVersionString from the app bundle's Info.plist (what pkgbuild\n * previously inferred automatically), falling back to the appInfo version.\n */\nexport async function resolvePkgBuildVersion(appPath: string, fallback: string): Promise<string> {\n const infoPlistPath = path.join(appPath, \"Contents\", \"Info.plist\")\n try {\n const plist = await parsePlistFile<PlistObject>(infoPlistPath)\n const version = plist.CFBundleShortVersionString\n return typeof version === \"string\" && version.length > 0 ? version : fallback\n } catch {\n return fallback\n }\n}\n\n/**\n * Resolves the scripts directory path for pkgbuild.\n * Returns null when scripts is explicitly set to null (disabled).\n * Returns a custom path when scripts is a non-empty string.\n * Falls back to the default \"pkg-scripts\" directory otherwise.\n */\nexport function resolveScriptsDir(buildResourcesDir: string, scripts: string | null | undefined): string | null {\n if (scripts === null) {\n return null\n }\n return scripts != null ? path.resolve(buildResourcesDir, scripts) : path.join(buildResourcesDir, \"pkg-scripts\")\n}\n"]}
|
package/dist/toolsets/7zip.d.ts
CHANGED
|
@@ -1,9 +1,41 @@
|
|
|
1
|
+
import { Nullish } from "builder-util-runtime";
|
|
2
|
+
declare const sevenZipChecksums: {
|
|
3
|
+
readonly "1.0.0": {
|
|
4
|
+
readonly "7zip-linux-ia32.tar.gz": "24a5d5bfe81506d0bfe21a812588119ae3deb757e8ba084b2339d8e899543686";
|
|
5
|
+
readonly "7zip-darwin-arm64.tar.gz": "496a341abe210aae1a25bc202ee97f6de6c76a3dc80f91d96616be05502d72c1";
|
|
6
|
+
readonly "7zip-darwin-x86_64.tar.gz": "496a341abe210aae1a25bc202ee97f6de6c76a3dc80f91d96616be05502d72c1";
|
|
7
|
+
readonly "7zip-linux-arm64.tar.gz": "5aff5034206b78f8261249ceb922b5c7e04c9bdb733784d8f5b6df9732cf1f79";
|
|
8
|
+
readonly "7zip-win-arm64.tar.gz": "ac3f38f96ce7498096a123bb0862dd6db863a7353c9e9e1c15f73c183adf6620";
|
|
9
|
+
readonly "7zip-win-ia32.tar.gz": "ac3f38f96ce7498096a123bb0862dd6db863a7353c9e9e1c15f73c183adf6620";
|
|
10
|
+
readonly "7zip-win-x64.tar.gz": "be071f15bd6da2f78fe81c6ddef2009b0c4d8a51f36b780cb806c7e6df95e1b3";
|
|
11
|
+
readonly "7zip-linux-x64.tar.gz": "d151bb44b2a9d9bfc52813ce4cac042916394a0ab8a56bd5d221a5dc9ef8d5d7";
|
|
12
|
+
};
|
|
13
|
+
readonly "1.0.1": {
|
|
14
|
+
readonly "7zip-linux-ia32.tar.gz": "f9e4084ef21d790bfe6147f0306118b0136b0824a7113f053b712824db19988f";
|
|
15
|
+
readonly "7zip-darwin-arm64.tar.gz": "8e307a68bb75a7d1b7366a4e34cb4b442fa678d01b421d6db2314567010d2876";
|
|
16
|
+
readonly "7zip-darwin-x86_64.tar.gz": "8e307a68bb75a7d1b7366a4e34cb4b442fa678d01b421d6db2314567010d2876";
|
|
17
|
+
readonly "7zip-linux-arm64.tar.gz": "9ac9acd3f8fe1d9175dd279e715e36e188373581db320d9e520f2aaafa360ce5";
|
|
18
|
+
readonly "7zip-win-arm64.tar.gz": "1b6273d377d5ef7e2a9bb7f9b64b5cb7678ba7d0e503aa5c93305012ffa299d2";
|
|
19
|
+
readonly "7zip-win-ia32.tar.gz": "2beef271bd1b3eb42021acfb24f47d268d03139e794f41628b89e728fa58bed6";
|
|
20
|
+
readonly "7zip-win-x64.tar.gz": "db50b64348d9560b875a00bd7e02f02b5f7f4b54ff5efa5908c38858c89c9f33";
|
|
21
|
+
readonly "7zip-linux-x64.tar.gz": "c6c2d744f5e71f100e7631786bca78b6f1738734454e8dd4bf6078d4895765f7";
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export type SevenZipVersion = keyof typeof sevenZipChecksums;
|
|
1
25
|
/**
|
|
2
26
|
* Override the 7za binary path with a pre-resolved absolute path.
|
|
3
27
|
* Called by the packager when `toolsets.sevenZip` is a `ToolsetCustom` config.
|
|
4
28
|
* Resets the resolution cache so the next `getPath7za()` call uses this path.
|
|
5
29
|
*/
|
|
6
30
|
export declare function setSevenZipPath(customPath: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Pin the 7-Zip bundle version.
|
|
33
|
+
* Called by the packager when `toolsets.sevenZip` is a version string (unset / null / `"latest"`
|
|
34
|
+
* resolve to the newest bundle). Resets the resolution cache so the next `getPath7za()` call
|
|
35
|
+
* downloads the pinned version.
|
|
36
|
+
*/
|
|
37
|
+
export declare function setSevenZipVersion(version: SevenZipVersion | "latest" | Nullish): void;
|
|
7
38
|
/** Returns the path to the 7za executable, downloading it on first call. Resets on failure so callers can retry. */
|
|
8
39
|
export declare function getPath7za(): Promise<string>;
|
|
40
|
+
export {};
|
|
9
41
|
//# sourceMappingURL=7zip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7zip.d.ts","sourceRoot":"","sources":["../../src/toolsets/7zip.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"7zip.d.ts","sourceRoot":"","sources":["../../src/toolsets/7zip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAS9C,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;CAuBb,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,iBAAiB,CAAA;AAgC5D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAGtF;AAED,oHAAoH;AACpH,wBAAgB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ5C"}
|
package/dist/toolsets/7zip.js
CHANGED
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
import { chmod } from "node:fs/promises";
|
|
2
2
|
import * as path from "path";
|
|
3
3
|
import { downloadBuilderToolset } from "../util/electronGet.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
import { resolveToolsetVersion } from "./version.js";
|
|
5
|
+
// Newest 7-Zip bundle — selected when the config is unset / null / "latest".
|
|
6
|
+
const SEVEN_ZIP_LATEST = "1.0.1";
|
|
7
|
+
const sevenZipChecksums = {
|
|
8
|
+
// shipped the 32-bit 7za.exe for every Windows arch — 1.75 GiB memory cap, no LZMA2 multithreading on x64/arm64 (electron-builder-binaries#222)
|
|
9
|
+
"1.0.0": {
|
|
10
|
+
"7zip-linux-ia32.tar.gz": "24a5d5bfe81506d0bfe21a812588119ae3deb757e8ba084b2339d8e899543686",
|
|
11
|
+
"7zip-darwin-arm64.tar.gz": "496a341abe210aae1a25bc202ee97f6de6c76a3dc80f91d96616be05502d72c1",
|
|
12
|
+
"7zip-darwin-x86_64.tar.gz": "496a341abe210aae1a25bc202ee97f6de6c76a3dc80f91d96616be05502d72c1",
|
|
13
|
+
"7zip-linux-arm64.tar.gz": "5aff5034206b78f8261249ceb922b5c7e04c9bdb733784d8f5b6df9732cf1f79",
|
|
14
|
+
"7zip-win-arm64.tar.gz": "ac3f38f96ce7498096a123bb0862dd6db863a7353c9e9e1c15f73c183adf6620",
|
|
15
|
+
"7zip-win-ia32.tar.gz": "ac3f38f96ce7498096a123bb0862dd6db863a7353c9e9e1c15f73c183adf6620",
|
|
16
|
+
"7zip-win-x64.tar.gz": "be071f15bd6da2f78fe81c6ddef2009b0c4d8a51f36b780cb806c7e6df95e1b3",
|
|
17
|
+
"7zip-linux-x64.tar.gz": "d151bb44b2a9d9bfc52813ce4cac042916394a0ab8a56bd5d221a5dc9ef8d5d7",
|
|
18
|
+
},
|
|
19
|
+
// correct per-arch Windows binaries (x64, ia32, arm64)
|
|
20
|
+
"1.0.1": {
|
|
21
|
+
"7zip-linux-ia32.tar.gz": "f9e4084ef21d790bfe6147f0306118b0136b0824a7113f053b712824db19988f",
|
|
22
|
+
"7zip-darwin-arm64.tar.gz": "8e307a68bb75a7d1b7366a4e34cb4b442fa678d01b421d6db2314567010d2876",
|
|
23
|
+
"7zip-darwin-x86_64.tar.gz": "8e307a68bb75a7d1b7366a4e34cb4b442fa678d01b421d6db2314567010d2876",
|
|
24
|
+
"7zip-linux-arm64.tar.gz": "9ac9acd3f8fe1d9175dd279e715e36e188373581db320d9e520f2aaafa360ce5",
|
|
25
|
+
"7zip-win-arm64.tar.gz": "1b6273d377d5ef7e2a9bb7f9b64b5cb7678ba7d0e503aa5c93305012ffa299d2",
|
|
26
|
+
"7zip-win-ia32.tar.gz": "2beef271bd1b3eb42021acfb24f47d268d03139e794f41628b89e728fa58bed6",
|
|
27
|
+
"7zip-win-x64.tar.gz": "db50b64348d9560b875a00bd7e02f02b5f7f4b54ff5efa5908c38858c89c9f33",
|
|
28
|
+
"7zip-linux-x64.tar.gz": "c6c2d744f5e71f100e7631786bca78b6f1738734454e8dd4bf6078d4895765f7",
|
|
29
|
+
},
|
|
15
30
|
};
|
|
16
31
|
function getFilename() {
|
|
17
32
|
const { platform, arch } = process;
|
|
@@ -39,6 +54,7 @@ function getFilename() {
|
|
|
39
54
|
throw new Error(`Unsupported platform for 7zip toolset: ${platform}/${arch}`);
|
|
40
55
|
}
|
|
41
56
|
let _customPath = null;
|
|
57
|
+
let _version = SEVEN_ZIP_LATEST;
|
|
42
58
|
let _resolvedPath = null;
|
|
43
59
|
/**
|
|
44
60
|
* Override the 7za binary path with a pre-resolved absolute path.
|
|
@@ -49,6 +65,16 @@ export function setSevenZipPath(customPath) {
|
|
|
49
65
|
_customPath = customPath;
|
|
50
66
|
_resolvedPath = null;
|
|
51
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Pin the 7-Zip bundle version.
|
|
70
|
+
* Called by the packager when `toolsets.sevenZip` is a version string (unset / null / `"latest"`
|
|
71
|
+
* resolve to the newest bundle). Resets the resolution cache so the next `getPath7za()` call
|
|
72
|
+
* downloads the pinned version.
|
|
73
|
+
*/
|
|
74
|
+
export function setSevenZipVersion(version) {
|
|
75
|
+
_version = resolveToolsetVersion(version, SEVEN_ZIP_LATEST);
|
|
76
|
+
_resolvedPath = null;
|
|
77
|
+
}
|
|
52
78
|
/** Returns the path to the 7za executable, downloading it on first call. Resets on failure so callers can retry. */
|
|
53
79
|
export function getPath7za() {
|
|
54
80
|
if (_resolvedPath == null) {
|
|
@@ -68,9 +94,9 @@ async function resolve() {
|
|
|
68
94
|
}
|
|
69
95
|
const filename = getFilename();
|
|
70
96
|
const toolDir = await downloadBuilderToolset({
|
|
71
|
-
releaseName: `7zip@${
|
|
97
|
+
releaseName: `7zip@${_version}`,
|
|
72
98
|
filenameWithExt: filename,
|
|
73
|
-
checksums:
|
|
99
|
+
checksums: sevenZipChecksums[_version],
|
|
74
100
|
githubOrgRepo: "electron-userland/electron-builder-binaries",
|
|
75
101
|
});
|
|
76
102
|
const bin = path.join(toolDir, "bin", process.platform === "win32" ? "7za.exe" : "7za");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7zip.js","sourceRoot":"","sources":["../../src/toolsets/7zip.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"7zip.js","sourceRoot":"","sources":["../../src/toolsets/7zip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullish } from \"builder-util-runtime\"\nimport { chmod } from \"node:fs/promises\"\nimport * as path from \"path\"\nimport { downloadBuilderToolset } from \"../util/electronGet.js\"\nimport { resolveToolsetVersion } from \"./version.js\"\n\n// Newest 7-Zip bundle — selected when the config is unset / null / \"latest\".\nconst SEVEN_ZIP_LATEST = \"1.0.1\"\n\nconst sevenZipChecksums = {\n // shipped the 32-bit 7za.exe for every Windows arch — 1.75 GiB memory cap, no LZMA2 multithreading on x64/arm64 (electron-builder-binaries#222)\n \"1.0.0\": {\n \"7zip-linux-ia32.tar.gz\": \"24a5d5bfe81506d0bfe21a812588119ae3deb757e8ba084b2339d8e899543686\",\n \"7zip-darwin-arm64.tar.gz\": \"496a341abe210aae1a25bc202ee97f6de6c76a3dc80f91d96616be05502d72c1\",\n \"7zip-darwin-x86_64.tar.gz\": \"496a341abe210aae1a25bc202ee97f6de6c76a3dc80f91d96616be05502d72c1\",\n \"7zip-linux-arm64.tar.gz\": \"5aff5034206b78f8261249ceb922b5c7e04c9bdb733784d8f5b6df9732cf1f79\",\n \"7zip-win-arm64.tar.gz\": \"ac3f38f96ce7498096a123bb0862dd6db863a7353c9e9e1c15f73c183adf6620\",\n \"7zip-win-ia32.tar.gz\": \"ac3f38f96ce7498096a123bb0862dd6db863a7353c9e9e1c15f73c183adf6620\",\n \"7zip-win-x64.tar.gz\": \"be071f15bd6da2f78fe81c6ddef2009b0c4d8a51f36b780cb806c7e6df95e1b3\",\n \"7zip-linux-x64.tar.gz\": \"d151bb44b2a9d9bfc52813ce4cac042916394a0ab8a56bd5d221a5dc9ef8d5d7\",\n },\n // correct per-arch Windows binaries (x64, ia32, arm64)\n \"1.0.1\": {\n \"7zip-linux-ia32.tar.gz\": \"f9e4084ef21d790bfe6147f0306118b0136b0824a7113f053b712824db19988f\",\n \"7zip-darwin-arm64.tar.gz\": \"8e307a68bb75a7d1b7366a4e34cb4b442fa678d01b421d6db2314567010d2876\",\n \"7zip-darwin-x86_64.tar.gz\": \"8e307a68bb75a7d1b7366a4e34cb4b442fa678d01b421d6db2314567010d2876\",\n \"7zip-linux-arm64.tar.gz\": \"9ac9acd3f8fe1d9175dd279e715e36e188373581db320d9e520f2aaafa360ce5\",\n \"7zip-win-arm64.tar.gz\": \"1b6273d377d5ef7e2a9bb7f9b64b5cb7678ba7d0e503aa5c93305012ffa299d2\",\n \"7zip-win-ia32.tar.gz\": \"2beef271bd1b3eb42021acfb24f47d268d03139e794f41628b89e728fa58bed6\",\n \"7zip-win-x64.tar.gz\": \"db50b64348d9560b875a00bd7e02f02b5f7f4b54ff5efa5908c38858c89c9f33\",\n \"7zip-linux-x64.tar.gz\": \"c6c2d744f5e71f100e7631786bca78b6f1738734454e8dd4bf6078d4895765f7\",\n },\n} as const\n\nexport type SevenZipVersion = keyof typeof sevenZipChecksums\n\nfunction getFilename(): keyof (typeof sevenZipChecksums)[SevenZipVersion] {\n const { platform, arch } = process\n if (platform === \"darwin\") {\n return arch === \"arm64\" ? \"7zip-darwin-arm64.tar.gz\" : \"7zip-darwin-x86_64.tar.gz\"\n }\n if (platform === \"linux\") {\n if (arch === \"arm64\") {\n return \"7zip-linux-arm64.tar.gz\"\n }\n if (arch === \"ia32\") {\n return \"7zip-linux-ia32.tar.gz\"\n }\n return \"7zip-linux-x64.tar.gz\"\n }\n if (platform === \"win32\") {\n if (arch === \"arm64\") {\n return \"7zip-win-arm64.tar.gz\"\n }\n if (arch === \"ia32\") {\n return \"7zip-win-ia32.tar.gz\"\n }\n return \"7zip-win-x64.tar.gz\"\n }\n throw new Error(`Unsupported platform for 7zip toolset: ${platform}/${arch}`)\n}\n\nlet _customPath: string | null = null\nlet _version: SevenZipVersion = SEVEN_ZIP_LATEST\nlet _resolvedPath: Promise<string> | null = null\n\n/**\n * Override the 7za binary path with a pre-resolved absolute path.\n * Called by the packager when `toolsets.sevenZip` is a `ToolsetCustom` config.\n * Resets the resolution cache so the next `getPath7za()` call uses this path.\n */\nexport function setSevenZipPath(customPath: string): void {\n _customPath = customPath\n _resolvedPath = null\n}\n\n/**\n * Pin the 7-Zip bundle version.\n * Called by the packager when `toolsets.sevenZip` is a version string (unset / null / `\"latest\"`\n * resolve to the newest bundle). Resets the resolution cache so the next `getPath7za()` call\n * downloads the pinned version.\n */\nexport function setSevenZipVersion(version: SevenZipVersion | \"latest\" | Nullish): void {\n _version = resolveToolsetVersion(version, SEVEN_ZIP_LATEST)\n _resolvedPath = null\n}\n\n/** Returns the path to the 7za executable, downloading it on first call. Resets on failure so callers can retry. */\nexport function getPath7za(): Promise<string> {\n if (_resolvedPath == null) {\n _resolvedPath = resolve().catch(err => {\n _resolvedPath = null\n throw err\n })\n }\n return _resolvedPath\n}\n\nasync function resolve(): Promise<string> {\n if (_customPath != null) {\n if (process.platform !== \"win32\") {\n await chmod(_customPath, 0o755)\n }\n return _customPath\n }\n\n const filename = getFilename()\n const toolDir = await downloadBuilderToolset({\n releaseName: `7zip@${_version}`,\n filenameWithExt: filename,\n checksums: sevenZipChecksums[_version],\n githubOrgRepo: \"electron-userland/electron-builder-binaries\",\n })\n\n const bin = path.join(toolDir, \"bin\", process.platform === \"win32\" ? \"7za.exe\" : \"7za\")\n if (process.platform !== \"win32\") {\n await chmod(bin, 0o755)\n }\n return bin\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linuxToolsMac.d.ts","sourceRoot":"","sources":["../../src/toolsets/linuxToolsMac.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"linuxToolsMac.d.ts","sourceRoot":"","sources":["../../src/toolsets/linuxToolsMac.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAsBnD,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcxH;AAED,wBAAsB,uBAAuB,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM;;;;GAQ5G"}
|
|
@@ -3,22 +3,32 @@ import { downloadBuilderToolset } from "../util/electronGet.js";
|
|
|
3
3
|
import { getCustomToolsetPath } from "./custom.js";
|
|
4
4
|
import { resolveToolsetVersion } from "./version.js";
|
|
5
5
|
// Newest linux-tools-mac bundle — selected when the config is unset / null / "latest".
|
|
6
|
-
const LINUX_TOOLS_MAC_LATEST = "1.0.
|
|
6
|
+
const LINUX_TOOLS_MAC_LATEST = "1.0.1";
|
|
7
7
|
// no legacy toolset as macos arm64 BSD gtar/ar/lzip are not compatible with linux targets, so we always use newer toolset on macos for linux archives
|
|
8
8
|
const linuxToolsMacChecksums = {
|
|
9
|
-
|
|
10
|
-
"
|
|
9
|
+
// built against macOS 26 — binaries abort on older hosts (see https://github.com/electron-userland/electron-builder/issues/10084)
|
|
10
|
+
"1.0.0": {
|
|
11
|
+
"linux-tools-mac-darwin-arm64.tar.gz": "204e76f08364352edb28a6a4be87e8f9bd9340213865d9a0d1c664aa46fcf053",
|
|
12
|
+
"linux-tools-mac-darwin-x86_64.tar.gz": "7ee26dfbd0d2a4c2c83b55a9416a30cc84876eef01c6497ca49bb016a190c726",
|
|
13
|
+
},
|
|
14
|
+
// rebuilt on macOS 15 runners — binaries run on macOS 15+
|
|
15
|
+
"1.0.1": {
|
|
16
|
+
"linux-tools-mac-darwin-arm64.tar.gz": "3dcb43a12b8630919b8d5cc9045be102108b0edd9b0354e0a7409ee5b53141ac",
|
|
17
|
+
"linux-tools-mac-darwin-x86_64.tar.gz": "d62f5e2f6949c6420fdda8b18d2e70b0e14eeb959128c0cea11acada2c105ad9",
|
|
18
|
+
},
|
|
11
19
|
};
|
|
12
20
|
export async function getLinuxToolsPath(toolset, resourcesDir) {
|
|
13
21
|
if (typeof toolset === "object" && toolset != null) {
|
|
14
22
|
return getCustomToolsetPath(toolset, resourcesDir ?? "");
|
|
15
23
|
}
|
|
16
24
|
const arch = process.arch === "arm64" ? "arm64" : "x86_64";
|
|
25
|
+
const version = resolveToolsetVersion(toolset, LINUX_TOOLS_MAC_LATEST);
|
|
26
|
+
const checksums = linuxToolsMacChecksums[version];
|
|
17
27
|
const filename = `linux-tools-mac-darwin-${arch}.tar.gz`;
|
|
18
28
|
return downloadBuilderToolset({
|
|
19
|
-
releaseName: `linux-tools-mac@${
|
|
29
|
+
releaseName: `linux-tools-mac@${version}`,
|
|
20
30
|
filenameWithExt: filename,
|
|
21
|
-
checksums
|
|
31
|
+
checksums,
|
|
22
32
|
githubOrgRepo: "electron-userland/electron-builder-binaries",
|
|
23
33
|
});
|
|
24
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linuxToolsMac.js","sourceRoot":"","sources":["../../src/toolsets/linuxToolsMac.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,uFAAuF;AACvF,MAAM,sBAAsB,GAAG,OAAO,CAAA;AAEtC,sJAAsJ;AACtJ,MAAM,sBAAsB,GAAG;IAC7B,qCAAqC,EAAE,kEAAkE;
|
|
1
|
+
{"version":3,"file":"linuxToolsMac.js","sourceRoot":"","sources":["../../src/toolsets/linuxToolsMac.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,uFAAuF;AACvF,MAAM,sBAAsB,GAAG,OAAO,CAAA;AAEtC,sJAAsJ;AACtJ,MAAM,sBAAsB,GAAG;IAC7B,kIAAkI;IAClI,OAAO,EAAE;QACP,qCAAqC,EAAE,kEAAkE;QACzG,sCAAsC,EAAE,kEAAkE;KAC3G;IACD,0DAA0D;IAC1D,OAAO,EAAE;QACP,qCAAqC,EAAE,kEAAkE;QACzG,sCAAsC,EAAE,kEAAkE;KAC3G;CACO,CAAA;AAEV,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAwC,EAAE,YAAqB;IACrG,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACnD,OAAO,oBAAoB,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC1D,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;IACtE,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACjD,MAAM,QAAQ,GAA2B,0BAA0B,IAAI,SAAS,CAAA;IAChF,OAAO,sBAAsB,CAAC;QAC5B,WAAW,EAAE,mBAAmB,OAAO,EAAE;QACzC,eAAe,EAAE,QAAQ;QACzB,SAAS;QACT,aAAa,EAAE,6CAA6C;KAC7D,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAwC,EAAE,YAAqB;IAC3G,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IACrE,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IAClE,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC;QACb,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;KAClB,CAAA;AACH,CAAC","sourcesContent":["import * as path from \"path\"\nimport { ToolsetConfig } from \"../configuration.js\"\nimport { downloadBuilderToolset } from \"../util/electronGet.js\"\nimport { getCustomToolsetPath } from \"./custom.js\"\nimport { resolveToolsetVersion } from \"./version.js\"\n\n// Newest linux-tools-mac bundle — selected when the config is unset / null / \"latest\".\nconst LINUX_TOOLS_MAC_LATEST = \"1.0.1\"\n\n// no legacy toolset as macos arm64 BSD gtar/ar/lzip are not compatible with linux targets, so we always use newer toolset on macos for linux archives\nconst linuxToolsMacChecksums = {\n // built against macOS 26 — binaries abort on older hosts (see https://github.com/electron-userland/electron-builder/issues/10084)\n \"1.0.0\": {\n \"linux-tools-mac-darwin-arm64.tar.gz\": \"204e76f08364352edb28a6a4be87e8f9bd9340213865d9a0d1c664aa46fcf053\",\n \"linux-tools-mac-darwin-x86_64.tar.gz\": \"7ee26dfbd0d2a4c2c83b55a9416a30cc84876eef01c6497ca49bb016a190c726\",\n },\n // rebuilt on macOS 15 runners — binaries run on macOS 15+\n \"1.0.1\": {\n \"linux-tools-mac-darwin-arm64.tar.gz\": \"3dcb43a12b8630919b8d5cc9045be102108b0edd9b0354e0a7409ee5b53141ac\",\n \"linux-tools-mac-darwin-x86_64.tar.gz\": \"d62f5e2f6949c6420fdda8b18d2e70b0e14eeb959128c0cea11acada2c105ad9\",\n },\n} as const\n\nexport async function getLinuxToolsPath(toolset?: ToolsetConfig[\"linuxToolsMac\"], resourcesDir?: string): Promise<string> {\n if (typeof toolset === \"object\" && toolset != null) {\n return getCustomToolsetPath(toolset, resourcesDir ?? \"\")\n }\n const arch = process.arch === \"arm64\" ? \"arm64\" : \"x86_64\"\n const version = resolveToolsetVersion(toolset, LINUX_TOOLS_MAC_LATEST)\n const checksums = linuxToolsMacChecksums[version]\n const filename: keyof typeof checksums = `linux-tools-mac-darwin-${arch}.tar.gz`\n return downloadBuilderToolset({\n releaseName: `linux-tools-mac@${version}`,\n filenameWithExt: filename,\n checksums,\n githubOrgRepo: \"electron-userland/electron-builder-binaries\",\n })\n}\n\nexport async function getLinuxToolsMacToolset(toolset?: ToolsetConfig[\"linuxToolsMac\"], resourcesDir?: string) {\n const linuxToolsPath = await getLinuxToolsPath(toolset, resourcesDir)\n const bin = (pkg: string) => path.join(linuxToolsPath, \"bin\", pkg)\n return {\n ar: bin(\"ar\"),\n lzip: bin(\"lzip\"),\n gtar: bin(\"gtar\"),\n }\n}\n"]}
|
|
@@ -23,6 +23,17 @@ export declare function extractArchive(archive: string, dir: string): Promise<vo
|
|
|
23
23
|
* bypassing the once-guard in initializeProxyOnce(). Exported for integration testing only.
|
|
24
24
|
*/
|
|
25
25
|
export declare function reinitializeProxy(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Decides whether a failed @electron/get download should be retried. Handles all three error shapes
|
|
28
|
+
* seen in practice (exported for tests):
|
|
29
|
+
* - builder-util-runtime's `HttpError` — retry on 5xx.
|
|
30
|
+
* - @electron/get v5's `HTTPError` (`FetchDownloader`) — a plain `Error` subclass with the fetch
|
|
31
|
+
* `Response` on `.response` and NO `.code`; retry on 5xx and 429. Matched by class and by
|
|
32
|
+
* `name === "HTTPError"` as a fallback in case multiple @electron/get copies are loaded.
|
|
33
|
+
* - transient network errors — code on `error.code`, or on `error.cause.code` for undici's
|
|
34
|
+
* `TypeError: fetch failed` wrapper.
|
|
35
|
+
*/
|
|
36
|
+
export declare function shouldRetryDownloadError(e: any): boolean;
|
|
26
37
|
/**
|
|
27
38
|
* Copies a remote artifact to a specific output path on disk.
|
|
28
39
|
* Unlike downloadBuilderToolset, this does not extract archives — it copies the raw file.
|