dmg-builder 26.13.1 → 26.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/dmg.d.ts +2 -1
- package/out/dmg.js +2 -2
- package/out/dmg.js.map +1 -1
- package/out/dmgLicense.d.ts +12 -6
- package/out/dmgLicense.js +78 -26
- package/out/dmgLicense.js.map +1 -1
- package/out/dmgUtil.d.ts +3 -1
- package/out/dmgUtil.js +17 -13
- package/out/dmgUtil.js.map +1 -1
- package/out/hdiuil.d.ts +1 -0
- package/out/hdiuil.js +11 -0
- package/out/hdiuil.js.map +1 -1
- package/out/licenseButtons.d.ts +1 -2
- package/out/licenseButtons.js +0 -129
- package/out/licenseButtons.js.map +1 -1
- package/package.json +3 -7
- package/out/licenseDefaultButtons.d.ts +0 -1
- package/out/licenseDefaultButtons.js +0 -260
- package/out/licenseDefaultButtons.js.map +0 -1
package/out/dmg.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DmgOptions, Target } from "app-builder-lib";
|
|
2
2
|
import { MacPackager } from "app-builder-lib/out/macPackager";
|
|
3
3
|
import { Arch } from "builder-util";
|
|
4
|
+
import type { DmgBuildLicenseConfig } from "./dmgLicense";
|
|
4
5
|
export interface DmgBuildConfig {
|
|
5
6
|
title: string;
|
|
6
7
|
icon?: string | null;
|
|
@@ -24,7 +25,7 @@ export interface DmgBuildConfig {
|
|
|
24
25
|
shrink?: boolean;
|
|
25
26
|
filesystem?: string;
|
|
26
27
|
"compression-level"?: number | null;
|
|
27
|
-
license?:
|
|
28
|
+
license?: DmgBuildLicenseConfig | null;
|
|
28
29
|
contents?: Array<{
|
|
29
30
|
path: string;
|
|
30
31
|
x: number;
|
package/out/dmg.js
CHANGED
|
@@ -31,13 +31,13 @@ class DmgTarget extends app_builder_lib_1.Target {
|
|
|
31
31
|
});
|
|
32
32
|
const volumeName = (0, filename_1.sanitizeFileName)(this.computeVolumeName(arch, this.options.title));
|
|
33
33
|
const specification = await this.computeDmgOptions(appPath);
|
|
34
|
-
|
|
34
|
+
const licenseData = await (0, dmgLicense_1.addLicenseToDmg)(packager, this.options.license);
|
|
35
|
+
if (!(await (0, dmgUtil_1.customizeDmg)({ appPath, artifactPath, volumeName, specification, packager, licenseData }))) {
|
|
35
36
|
return;
|
|
36
37
|
}
|
|
37
38
|
if (this.options.internetEnabled && parseInt((0, os_1.release)().split(".")[0], 10) < 19) {
|
|
38
39
|
await (0, hdiuil_1.hdiUtil)(addLogLevel(["internet-enable"]).concat(artifactPath));
|
|
39
40
|
}
|
|
40
|
-
const licenseData = await (0, dmgLicense_1.addLicenseToDmg)(packager, artifactPath);
|
|
41
41
|
if (packager.packagerOptions.effectiveOptionComputed != null) {
|
|
42
42
|
await packager.packagerOptions.effectiveOptionComputed({ licenseData });
|
|
43
43
|
}
|
package/out/dmg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dmg.js","sourceRoot":"","sources":["../src/dmg.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AACpD,0EAAsF;AAEtF,6GAA0F;AAC1F,+CAAoG;AACpG,wDAA4D;AAC5D,2BAA4C;AAC5C,6BAA4B;AAC5B,6CAA8C;AAC9C,uCAA2D;AAC3D,qCAAkC;AAoClC,MAAa,SAAU,SAAQ,wBAAM;IAKnC,YACmB,QAAqB,EAC7B,MAAc;QAEvB,KAAK,CAAC,KAAK,CAAC,CAAA;QAHK,aAAQ,GAAR,QAAQ,CAAa;QAC7B,WAAM,GAAN,MAAM,CAAQ;QANhB,YAAO,GAAe,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAE9E,qBAAgB,GAAG,KAAK,CAAA;IAOxB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,IAAU;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC9B,uDAAuD;QACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,yBAAyB,CACrD,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,IAAI,EACJ,iBAAiB,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC,kBAAkB,IAAI,YAAY,CAAC,GAAG,iBAAiB,EAClH,IAAI,EACJ,QAAQ,CAAC,4BAA4B,CAAC,WAAW,CAClD,CAAA;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QACzD,MAAM,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC;YAC3C,qBAAqB,EAAE,KAAK;YAC5B,IAAI,EAAE,YAAY;YAClB,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,IAAA,2BAAgB,EAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAErF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAE3D,IAAI,CAAC,CAAC,MAAM,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1F,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC,IAAA,YAAY,GAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;YACpF,MAAM,IAAA,gBAAO,EAAC,WAAW,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAA,4BAAe,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QACjE,IAAI,QAAQ,CAAC,eAAe,CAAC,uBAAuB,IAAI,IAAI,EAAE,CAAC;YAC7D,MAAM,QAAQ,CAAC,eAAe,CAAC,uBAAuB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;QACzE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAClC,CAAC;QAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,uBAAuB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAA,8CAAc,EAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAA;QACvI,MAAM,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC;YAC7C,IAAI,EAAE,YAAY;YAClB,gBAAgB;YAChB,MAAM,EAAE,IAAI;YACZ,IAAI;YACJ,QAAQ;YACR,iBAAiB,EAAE,UAAU,IAAI,IAAI;YACrC,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,YAAoB;QACxC,IAAI,CAAC,IAAA,2BAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,4BAA4B,CAAC,QAAQ,CAAA;QAChE,qCAAqC;QACrC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,0EAA0E;YAC1E,OAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,YAAY,CAAA;QACxE,MAAM,eAAe,GAAG,0BAA0B,CAAA;QAClD,IAAI,QAAQ,GAAG,MAAM,IAAA,0BAAY,EAAC,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;QAC3E,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,QAAQ,GAAG,MAAM,IAAA,0BAAY,EAAC,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;YACvE,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,OAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAK,CAAC,CAAA;QACvC,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACvB,MAAM,IAAA,mBAAI,EAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,iBAAiB,CAAC,IAAU,EAAE,MAAsB;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAA;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAA;QACrG,MAAM,UAAU,GAAG,IAAA,4BAAa,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAA;QAE9F,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,YAAY,GAAG,UAAU,EAAE,CAAA;QAClE,CAAC;QAED,OAAO,MAAM;aACV,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC;aAChC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC;aAC1C,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;aACxC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC;aAClC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IACrD,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC9B,MAAM,aAAa,GAAe,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QACrD,IAAI,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9D,aAAa,CAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;QACnD,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAA,8BAAe,EAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,wCAAyB,CAAC,8CAA8C,CAAC,CAAA;QACrF,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAA;QAC3C,IAAI,aAAa,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC;YAC1C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,wCAAyB,CAAC,qFAAqF,CAAC,CAAA;YAC5H,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YAC9B,aAAa,CAAC,UAAU,GAAG,MAAM,IAAA,2BAAiB,EAAC,QAAQ,CAAC,CAAA;QAC9D,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,UAAU,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,IAAI,EAAE,CAAC;gBAC3D,aAAa,CAAC,MAAM,GAAG,MAAM,CAAA;YAC/B,CAAC;iBAAM,IAAI,QAAQ,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;gBAC5C,aAAa,CAAC,MAAM,GAAG,MAAM,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;YAC7E,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YACnC,aAAa,CAAC,QAAQ,GAAG;gBACvB;oBACE,CAAC,EAAE,GAAG;oBACN,CAAC,EAAE,GAAG;oBACN,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,MAAM;iBAChD;gBACD;oBACE,CAAC,EAAE,GAAG;oBACN,CAAC,EAAE,GAAG;oBACN,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,eAAe;iBACtB;aACF,CAAA;QACH,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AApKD,8BAoKC;AAED,SAAS,WAAW,CAAC,IAAmB,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;IACpF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC5C,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import { DmgOptions, Target } from \"app-builder-lib\"\nimport { findIdentity, isSignAllowed } from \"app-builder-lib/out/codeSign/macCodeSign\"\nimport { MacPackager } from \"app-builder-lib/out/macPackager\"\nimport { createBlockmap } from \"app-builder-lib/out/targets/differentialUpdateInfoBuilder\"\nimport { Arch, exec, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces } from \"builder-util\"\nimport { sanitizeFileName } from \"builder-util/out/filename\"\nimport { release as getOsRelease } from \"os\"\nimport * as path from \"path\"\nimport { addLicenseToDmg } from \"./dmgLicense\"\nimport { computeBackground, customizeDmg } from \"./dmgUtil\"\nimport { hdiUtil } from \"./hdiuil\"\n\nexport interface DmgBuildConfig {\n title: string\n icon?: string | null\n \"badge-icon\"?: string | null\n background?: string | null\n \"background-color\"?: string | null\n \"icon-size\"?: number | null\n \"text-size\"?: number | null\n window?: {\n position?: {\n x?: number\n y?: number\n }\n size?: {\n width?: number\n height?: number\n }\n }\n format?: string\n size?: string | null\n shrink?: boolean\n filesystem?: string\n \"compression-level\"?: number | null\n license?: string | null\n contents?: Array<{\n path: string\n x: number\n y: number\n name?: string\n type?: \"file\" | \"link\" | \"position\"\n hide_extension?: boolean\n hidden?: boolean\n }>\n}\nexport class DmgTarget extends Target {\n readonly options: DmgOptions = this.packager.config.dmg || Object.create(null)\n\n isAsyncSupported = false\n\n constructor(\n private readonly packager: MacPackager,\n readonly outDir: string\n ) {\n super(\"dmg\")\n }\n\n async build(appPath: string, arch: Arch) {\n const packager = this.packager\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(\n this.options,\n \"dmg\",\n arch,\n \"${productName}-\" + (packager.platformSpecificBuildOptions.bundleShortVersion || \"${version}\") + \"-${arch}.${ext}\",\n true,\n packager.platformSpecificBuildOptions.defaultArch\n )\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.emitArtifactBuildStarted({\n targetPresentableName: \"DMG\",\n file: artifactPath,\n arch,\n })\n\n const volumeName = sanitizeFileName(this.computeVolumeName(arch, this.options.title))\n\n const specification = await this.computeDmgOptions(appPath)\n\n if (!(await customizeDmg({ appPath, artifactPath, volumeName, specification, packager }))) {\n return\n }\n\n if (this.options.internetEnabled && parseInt(getOsRelease().split(\".\")[0], 10) < 19) {\n await hdiUtil(addLogLevel([\"internet-enable\"]).concat(artifactPath))\n }\n\n const licenseData = await addLicenseToDmg(packager, artifactPath)\n if (packager.packagerOptions.effectiveOptionComputed != null) {\n await packager.packagerOptions.effectiveOptionComputed({ licenseData })\n }\n\n if (this.options.sign === true) {\n await this.signDmg(artifactPath)\n }\n\n const safeArtifactName = packager.computeSafeArtifactName(artifactName, \"dmg\")\n const updateInfo = this.options.writeUpdateInfo === false ? null : await createBlockmap(artifactPath, this, packager, safeArtifactName)\n await packager.info.emitArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName,\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: updateInfo != null,\n updateInfo,\n })\n }\n\n private async signDmg(artifactPath: string) {\n if (!isSignAllowed(false)) {\n return\n }\n\n const packager = this.packager\n const qualifier = packager.platformSpecificBuildOptions.identity\n // explicitly disabled if set to null\n if (qualifier === null) {\n // macPackager already somehow handle this situation, so, here just return\n return\n }\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n const certificateType = \"Developer ID Application\"\n let identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity == null) {\n identity = await findIdentity(\"Mac Developer\", qualifier, keychainFile)\n if (identity == null) {\n return\n }\n }\n\n const args = [\"--sign\", identity.hash!]\n if (keychainFile != null) {\n args.push(\"--keychain\", keychainFile)\n }\n args.push(artifactPath)\n await exec(\"codesign\", args)\n }\n\n computeVolumeName(arch: Arch, custom?: string | null): string {\n const appInfo = this.packager.appInfo\n const shortVersion = this.packager.platformSpecificBuildOptions.bundleShortVersion || appInfo.version\n const archString = getArchSuffix(arch, this.packager.platformSpecificBuildOptions.defaultArch)\n\n if (custom == null) {\n return `${appInfo.productFilename} ${shortVersion}${archString}`\n }\n\n return custom\n .replace(/\\${arch}/g, archString)\n .replace(/\\${shortVersion}/g, shortVersion)\n .replace(/\\${version}/g, appInfo.version)\n .replace(/\\${name}/g, appInfo.name)\n .replace(/\\${productName}/g, appInfo.productName)\n }\n\n // public to test\n async computeDmgOptions(appPath: string): Promise<DmgOptions> {\n const packager = this.packager\n const specification: DmgOptions = { ...this.options }\n if (specification.icon == null && specification.icon !== null) {\n specification.icon = await packager.getIconPath()\n }\n\n if (specification.icon != null && isEmptyOrSpaces(specification.icon)) {\n throw new InvalidConfigurationError(\"dmg.icon cannot be specified as empty string\")\n }\n\n const background = specification.background\n if (specification.backgroundColor != null) {\n if (background != null) {\n throw new InvalidConfigurationError(\"Both dmg.backgroundColor and dmg.background are specified — please set the only one\")\n }\n } else if (background == null) {\n specification.background = await computeBackground(packager)\n } else {\n specification.background = await packager.getResource(background)\n }\n\n if (specification.format == null) {\n if (process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL != null) {\n specification.format = \"UDZO\"\n } else if (packager.compression === \"store\") {\n specification.format = \"UDRO\"\n } else {\n specification.format = packager.compression === \"maximum\" ? \"UDBZ\" : \"UDZO\"\n }\n }\n\n if (specification.contents == null) {\n specification.contents = [\n {\n x: 130,\n y: 220,\n path: appPath,\n type: \"file\",\n name: `${packager.appInfo.productFilename}.app`,\n },\n {\n x: 410,\n y: 220,\n type: \"link\",\n path: \"/Applications\",\n },\n ]\n }\n return specification\n }\n}\n\nfunction addLogLevel(args: Array<string>, isVerbose = process.env.DEBUG_DMG === \"true\"): Array<string> {\n args.push(isVerbose ? \"-verbose\" : \"-quiet\")\n return args\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dmg.js","sourceRoot":"","sources":["../src/dmg.ts"],"names":[],"mappings":"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","sourcesContent":["import { DmgOptions, Target } from \"app-builder-lib\"\nimport { findIdentity, isSignAllowed } from \"app-builder-lib/out/codeSign/macCodeSign\"\nimport { MacPackager } from \"app-builder-lib/out/macPackager\"\nimport { createBlockmap } from \"app-builder-lib/out/targets/differentialUpdateInfoBuilder\"\nimport { Arch, exec, getArchSuffix, InvalidConfigurationError, isEmptyOrSpaces } from \"builder-util\"\nimport { sanitizeFileName } from \"builder-util/out/filename\"\nimport { release as getOsRelease } from \"os\"\nimport * as path from \"path\"\nimport type { DmgBuildLicenseConfig } from \"./dmgLicense\"\nimport { addLicenseToDmg } from \"./dmgLicense\"\nimport { computeBackground, customizeDmg } from \"./dmgUtil\"\nimport { hdiUtil } from \"./hdiuil\"\n\nexport interface DmgBuildConfig {\n title: string\n icon?: string | null\n \"badge-icon\"?: string | null\n background?: string | null\n \"background-color\"?: string | null\n \"icon-size\"?: number | null\n \"text-size\"?: number | null\n window?: {\n position?: {\n x?: number\n y?: number\n }\n size?: {\n width?: number\n height?: number\n }\n }\n format?: string\n size?: string | null\n shrink?: boolean\n filesystem?: string\n \"compression-level\"?: number | null\n license?: DmgBuildLicenseConfig | null\n contents?: Array<{\n path: string\n x: number\n y: number\n name?: string\n type?: \"file\" | \"link\" | \"position\"\n hide_extension?: boolean\n hidden?: boolean\n }>\n}\nexport class DmgTarget extends Target {\n readonly options: DmgOptions = this.packager.config.dmg || Object.create(null)\n\n isAsyncSupported = false\n\n constructor(\n private readonly packager: MacPackager,\n readonly outDir: string\n ) {\n super(\"dmg\")\n }\n\n async build(appPath: string, arch: Arch) {\n const packager = this.packager\n // tslint:disable-next-line:no-invalid-template-strings\n const artifactName = packager.expandArtifactNamePattern(\n this.options,\n \"dmg\",\n arch,\n \"${productName}-\" + (packager.platformSpecificBuildOptions.bundleShortVersion || \"${version}\") + \"-${arch}.${ext}\",\n true,\n packager.platformSpecificBuildOptions.defaultArch\n )\n const artifactPath = path.join(this.outDir, artifactName)\n await packager.info.emitArtifactBuildStarted({\n targetPresentableName: \"DMG\",\n file: artifactPath,\n arch,\n })\n\n const volumeName = sanitizeFileName(this.computeVolumeName(arch, this.options.title))\n\n const specification = await this.computeDmgOptions(appPath)\n\n const licenseData = await addLicenseToDmg(packager, this.options.license)\n\n if (!(await customizeDmg({ appPath, artifactPath, volumeName, specification, packager, licenseData }))) {\n return\n }\n\n if (this.options.internetEnabled && parseInt(getOsRelease().split(\".\")[0], 10) < 19) {\n await hdiUtil(addLogLevel([\"internet-enable\"]).concat(artifactPath))\n }\n\n if (packager.packagerOptions.effectiveOptionComputed != null) {\n await packager.packagerOptions.effectiveOptionComputed({ licenseData })\n }\n\n if (this.options.sign === true) {\n await this.signDmg(artifactPath)\n }\n\n const safeArtifactName = packager.computeSafeArtifactName(artifactName, \"dmg\")\n const updateInfo = this.options.writeUpdateInfo === false ? null : await createBlockmap(artifactPath, this, packager, safeArtifactName)\n await packager.info.emitArtifactBuildCompleted({\n file: artifactPath,\n safeArtifactName,\n target: this,\n arch,\n packager,\n isWriteUpdateInfo: updateInfo != null,\n updateInfo,\n })\n }\n\n private async signDmg(artifactPath: string) {\n if (!isSignAllowed(false)) {\n return\n }\n\n const packager = this.packager\n const qualifier = packager.platformSpecificBuildOptions.identity\n // explicitly disabled if set to null\n if (qualifier === null) {\n // macPackager already somehow handle this situation, so, here just return\n return\n }\n\n const keychainFile = (await packager.codeSigningInfo.value).keychainFile\n const certificateType = \"Developer ID Application\"\n let identity = await findIdentity(certificateType, qualifier, keychainFile)\n if (identity == null) {\n identity = await findIdentity(\"Mac Developer\", qualifier, keychainFile)\n if (identity == null) {\n return\n }\n }\n\n const args = [\"--sign\", identity.hash!]\n if (keychainFile != null) {\n args.push(\"--keychain\", keychainFile)\n }\n args.push(artifactPath)\n await exec(\"codesign\", args)\n }\n\n computeVolumeName(arch: Arch, custom?: string | null): string {\n const appInfo = this.packager.appInfo\n const shortVersion = this.packager.platformSpecificBuildOptions.bundleShortVersion || appInfo.version\n const archString = getArchSuffix(arch, this.packager.platformSpecificBuildOptions.defaultArch)\n\n if (custom == null) {\n return `${appInfo.productFilename} ${shortVersion}${archString}`\n }\n\n return custom\n .replace(/\\${arch}/g, archString)\n .replace(/\\${shortVersion}/g, shortVersion)\n .replace(/\\${version}/g, appInfo.version)\n .replace(/\\${name}/g, appInfo.name)\n .replace(/\\${productName}/g, appInfo.productName)\n }\n\n // public to test\n async computeDmgOptions(appPath: string): Promise<DmgOptions> {\n const packager = this.packager\n const specification: DmgOptions = { ...this.options }\n if (specification.icon == null && specification.icon !== null) {\n specification.icon = await packager.getIconPath()\n }\n\n if (specification.icon != null && isEmptyOrSpaces(specification.icon)) {\n throw new InvalidConfigurationError(\"dmg.icon cannot be specified as empty string\")\n }\n\n const background = specification.background\n if (specification.backgroundColor != null) {\n if (background != null) {\n throw new InvalidConfigurationError(\"Both dmg.backgroundColor and dmg.background are specified — please set the only one\")\n }\n } else if (background == null) {\n specification.background = await computeBackground(packager)\n } else {\n specification.background = await packager.getResource(background)\n }\n\n if (specification.format == null) {\n if (process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL != null) {\n specification.format = \"UDZO\"\n } else if (packager.compression === \"store\") {\n specification.format = \"UDRO\"\n } else {\n specification.format = packager.compression === \"maximum\" ? \"UDBZ\" : \"UDZO\"\n }\n }\n\n if (specification.contents == null) {\n specification.contents = [\n {\n x: 130,\n y: 220,\n path: appPath,\n type: \"file\",\n name: `${packager.appInfo.productFilename}.app`,\n },\n {\n x: 410,\n y: 220,\n type: \"link\",\n path: \"/Applications\",\n },\n ]\n }\n return specification\n }\n}\n\nfunction addLogLevel(args: Array<string>, isVerbose = process.env.DEBUG_DMG === \"true\"): Array<string> {\n args.push(isVerbose ? \"-verbose\" : \"-quiet\")\n return args\n}\n"]}
|
package/out/dmgLicense.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { PlatformPackager } from "app-builder-lib";
|
|
2
|
-
type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export type DmgBuildLicenseConfig = {
|
|
3
|
+
"default-language": string;
|
|
4
|
+
licenses: Record<string, string>;
|
|
5
|
+
buttons?: Record<string, {
|
|
6
|
+
language?: string;
|
|
7
|
+
agree?: string;
|
|
8
|
+
disagree?: string;
|
|
9
|
+
print?: string;
|
|
10
|
+
save?: string;
|
|
11
|
+
message?: string;
|
|
12
|
+
}>;
|
|
6
13
|
};
|
|
7
|
-
export declare function addLicenseToDmg(packager: PlatformPackager<any>,
|
|
8
|
-
export {};
|
|
14
|
+
export declare function addLicenseToDmg(packager: PlatformPackager<any>, explicitLicense?: string | Record<string, string> | null): Promise<DmgBuildLicenseConfig | null>;
|
package/out/dmgLicense.js
CHANGED
|
@@ -3,12 +3,48 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.addLicenseToDmg = addLicenseToDmg;
|
|
4
4
|
const license_1 = require("app-builder-lib/out/util/license");
|
|
5
5
|
const builder_util_1 = require("builder-util");
|
|
6
|
-
const dmg_license_1 = require("dmg-license");
|
|
7
6
|
const fs_extra_1 = require("fs-extra");
|
|
8
7
|
const js_yaml_1 = require("js-yaml");
|
|
9
8
|
const licenseButtons_1 = require("./licenseButtons");
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
async function addLicenseToDmg(packager, explicitLicense) {
|
|
10
|
+
// null = explicitly disabled; skip both explicit and convention paths
|
|
11
|
+
if (explicitLicense === null) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
// Explicit config overrides file-naming convention
|
|
15
|
+
if (explicitLicense !== undefined) {
|
|
16
|
+
return buildExplicitLicenseConfig(packager, explicitLicense);
|
|
17
|
+
}
|
|
18
|
+
// File-naming convention: license_LANG.{rtf,txt,html}
|
|
19
|
+
return buildConventionLicenseConfig(packager);
|
|
20
|
+
}
|
|
21
|
+
async function buildExplicitLicenseConfig(packager, license) {
|
|
22
|
+
if (typeof license === "string") {
|
|
23
|
+
const resolvedPath = await packager.getResource(license);
|
|
24
|
+
if (resolvedPath == null) {
|
|
25
|
+
throw new builder_util_1.InvalidConfigurationError(`dmg.license file not found: "${license}"`);
|
|
26
|
+
}
|
|
27
|
+
return { "default-language": "en_US", licenses: { en_US: resolvedPath } };
|
|
28
|
+
}
|
|
29
|
+
// Record<langCode, filePath>
|
|
30
|
+
const licenses = {};
|
|
31
|
+
for (const [lang, filePath] of Object.entries(license)) {
|
|
32
|
+
const resolvedPath = await packager.getResource(filePath);
|
|
33
|
+
if (resolvedPath == null) {
|
|
34
|
+
throw new builder_util_1.InvalidConfigurationError(`dmg.license file not found for language "${lang}": "${filePath}"`);
|
|
35
|
+
}
|
|
36
|
+
licenses[lang] = resolvedPath;
|
|
37
|
+
}
|
|
38
|
+
if (Object.keys(licenses).length === 0) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
"default-language": Object.keys(licenses)[0],
|
|
43
|
+
licenses,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async function buildConventionLicenseConfig(packager) {
|
|
47
|
+
var _a;
|
|
12
48
|
const licenseFiles = await (0, license_1.getLicenseFiles)(packager);
|
|
13
49
|
if (licenseFiles.length === 0) {
|
|
14
50
|
return null;
|
|
@@ -16,31 +52,47 @@ async function addLicenseToDmg(packager, dmgPath) {
|
|
|
16
52
|
const licenseButtonFiles = await (0, licenseButtons_1.getLicenseButtonsFile)(packager);
|
|
17
53
|
packager.debugLogger.add("dmg.licenseFiles", licenseFiles);
|
|
18
54
|
packager.debugLogger.add("dmg.licenseButtons", licenseButtonFiles);
|
|
19
|
-
const
|
|
20
|
-
$schema: "https://github.com/argv-minus-one/dmg-license/raw/master/schema.json",
|
|
21
|
-
// defaultLang: '',
|
|
22
|
-
body: [],
|
|
23
|
-
labels: [],
|
|
24
|
-
};
|
|
55
|
+
const licenses = {};
|
|
25
56
|
for (const file of licenseFiles) {
|
|
26
|
-
|
|
27
|
-
file: file.file
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
57
|
+
if (licenses[file.langWithRegion] != null) {
|
|
58
|
+
throw new builder_util_1.InvalidConfigurationError(`Multiple license files found for language "${file.langWithRegion}": "${licenses[file.langWithRegion]}" and "${file.file}". Only one license file per language is supported.`);
|
|
59
|
+
}
|
|
60
|
+
licenses[file.langWithRegion] = file.file;
|
|
61
|
+
}
|
|
62
|
+
const result = {
|
|
63
|
+
"default-language": licenseFiles[0].langWithRegion,
|
|
64
|
+
licenses,
|
|
65
|
+
};
|
|
66
|
+
if (licenseButtonFiles.length > 0) {
|
|
67
|
+
const buttons = {};
|
|
68
|
+
for (const button of licenseButtonFiles) {
|
|
69
|
+
const filepath = button.file;
|
|
70
|
+
const raw = filepath.endsWith(".yml") ? (0, js_yaml_1.load)(await (0, fs_extra_1.readFile)(filepath, "utf-8"), { schema: js_yaml_1.CORE_SCHEMA }) : await (0, fs_extra_1.readJson)(filepath);
|
|
71
|
+
const entry = {};
|
|
72
|
+
if (raw.languageName != null) {
|
|
73
|
+
entry.language = raw.languageName;
|
|
74
|
+
}
|
|
75
|
+
if (raw.agree != null) {
|
|
76
|
+
entry.agree = raw.agree;
|
|
77
|
+
}
|
|
78
|
+
if (raw.disagree != null) {
|
|
79
|
+
entry.disagree = raw.disagree;
|
|
80
|
+
}
|
|
81
|
+
if (raw.print != null) {
|
|
82
|
+
entry.print = raw.print;
|
|
83
|
+
}
|
|
84
|
+
if (raw.save != null) {
|
|
85
|
+
entry.save = raw.save;
|
|
86
|
+
}
|
|
87
|
+
// support legacy `description` field as well as `message`
|
|
88
|
+
const msg = (_a = raw.message) !== null && _a !== void 0 ? _a : raw.description;
|
|
89
|
+
if (msg != null) {
|
|
90
|
+
entry.message = msg;
|
|
91
|
+
}
|
|
92
|
+
buttons[button.langWithRegion] = entry;
|
|
38
93
|
}
|
|
39
|
-
|
|
94
|
+
result.buttons = buttons;
|
|
40
95
|
}
|
|
41
|
-
|
|
42
|
-
onNonFatalError: builder_util_1.log.warn.bind(builder_util_1.log),
|
|
43
|
-
});
|
|
44
|
-
return jsonFile;
|
|
96
|
+
return result;
|
|
45
97
|
}
|
|
46
98
|
//# sourceMappingURL=dmgLicense.js.map
|
package/out/dmgLicense.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dmgLicense.js","sourceRoot":"","sources":["../src/dmgLicense.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"dmgLicense.js","sourceRoot":"","sources":["../src/dmgLicense.ts"],"names":[],"mappings":"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","sourcesContent":["import { PlatformPackager } from \"app-builder-lib\"\nimport { getLicenseFiles } from \"app-builder-lib/out/util/license\"\nimport { InvalidConfigurationError } from \"builder-util\"\nimport { readFile, readJson } from \"fs-extra\"\nimport { CORE_SCHEMA, load } from \"js-yaml\"\nimport { getLicenseButtonsFile } from \"./licenseButtons\"\n\nexport type DmgBuildLicenseConfig = {\n \"default-language\": string\n licenses: Record<string, string>\n buttons?: Record<\n string,\n {\n language?: string\n agree?: string\n disagree?: string\n print?: string\n save?: string\n message?: string\n }\n >\n}\n\nexport async function addLicenseToDmg(packager: PlatformPackager<any>, explicitLicense?: string | Record<string, string> | null): Promise<DmgBuildLicenseConfig | null> {\n // null = explicitly disabled; skip both explicit and convention paths\n if (explicitLicense === null) {\n return null\n }\n\n // Explicit config overrides file-naming convention\n if (explicitLicense !== undefined) {\n return buildExplicitLicenseConfig(packager, explicitLicense)\n }\n\n // File-naming convention: license_LANG.{rtf,txt,html}\n return buildConventionLicenseConfig(packager)\n}\n\nasync function buildExplicitLicenseConfig(packager: PlatformPackager<any>, license: string | Record<string, string>): Promise<DmgBuildLicenseConfig | null> {\n if (typeof license === \"string\") {\n const resolvedPath = await packager.getResource(license)\n if (resolvedPath == null) {\n throw new InvalidConfigurationError(`dmg.license file not found: \"${license}\"`)\n }\n return { \"default-language\": \"en_US\", licenses: { en_US: resolvedPath } }\n }\n\n // Record<langCode, filePath>\n const licenses: Record<string, string> = {}\n for (const [lang, filePath] of Object.entries(license)) {\n const resolvedPath = await packager.getResource(filePath)\n if (resolvedPath == null) {\n throw new InvalidConfigurationError(`dmg.license file not found for language \"${lang}\": \"${filePath}\"`)\n }\n licenses[lang] = resolvedPath\n }\n\n if (Object.keys(licenses).length === 0) {\n return null\n }\n\n return {\n \"default-language\": Object.keys(licenses)[0],\n licenses,\n }\n}\n\nasync function buildConventionLicenseConfig(packager: PlatformPackager<any>): Promise<DmgBuildLicenseConfig | null> {\n const licenseFiles = await getLicenseFiles(packager)\n if (licenseFiles.length === 0) {\n return null\n }\n\n const licenseButtonFiles = await getLicenseButtonsFile(packager)\n packager.debugLogger.add(\"dmg.licenseFiles\", licenseFiles)\n packager.debugLogger.add(\"dmg.licenseButtons\", licenseButtonFiles)\n\n const licenses: Record<string, string> = {}\n for (const file of licenseFiles) {\n if (licenses[file.langWithRegion] != null) {\n throw new InvalidConfigurationError(\n `Multiple license files found for language \"${file.langWithRegion}\": \"${licenses[file.langWithRegion]}\" and \"${file.file}\". Only one license file per language is supported.`\n )\n }\n licenses[file.langWithRegion] = file.file\n }\n\n const result: DmgBuildLicenseConfig = {\n \"default-language\": licenseFiles[0].langWithRegion,\n licenses,\n }\n\n if (licenseButtonFiles.length > 0) {\n const buttons: DmgBuildLicenseConfig[\"buttons\"] = {}\n for (const button of licenseButtonFiles) {\n const filepath = button.file\n const raw: any = filepath.endsWith(\".yml\") ? load(await readFile(filepath, \"utf-8\"), { schema: CORE_SCHEMA }) : await readJson(filepath)\n\n const entry: Record<string, string> = {}\n if (raw.languageName != null) {\n entry.language = raw.languageName\n }\n if (raw.agree != null) {\n entry.agree = raw.agree\n }\n if (raw.disagree != null) {\n entry.disagree = raw.disagree\n }\n if (raw.print != null) {\n entry.print = raw.print\n }\n if (raw.save != null) {\n entry.save = raw.save\n }\n // support legacy `description` field as well as `message`\n const msg = raw.message ?? raw.description\n if (msg != null) {\n entry.message = msg\n }\n\n buttons[button.langWithRegion] = entry\n }\n result.buttons = buttons\n }\n\n return result\n}\n"]}
|
package/out/dmgUtil.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DmgOptions, MacPackager, PlatformPackager } from "app-builder-lib";
|
|
2
2
|
import { TmpDir } from "builder-util";
|
|
3
|
+
import type { DmgBuildLicenseConfig } from "./dmgLicense";
|
|
3
4
|
export { DmgTarget } from "./dmg";
|
|
4
5
|
export declare function getDmgTemplatePath(): string;
|
|
5
6
|
export declare function attachAndExecute(dmgPath: string, readWrite: boolean, forceDetach: boolean, task: (devicePath: string) => Promise<any>): Promise<any>;
|
|
@@ -11,8 +12,9 @@ type DmgBuilderConfig = {
|
|
|
11
12
|
volumeName: string;
|
|
12
13
|
specification: DmgOptions;
|
|
13
14
|
packager: MacPackager;
|
|
15
|
+
licenseData?: DmgBuildLicenseConfig | null;
|
|
14
16
|
};
|
|
15
|
-
export declare function customizeDmg({ appPath, artifactPath, volumeName, specification, packager }: DmgBuilderConfig): Promise<boolean>;
|
|
17
|
+
export declare function customizeDmg({ appPath, artifactPath, volumeName, specification, packager, licenseData }: DmgBuilderConfig): Promise<boolean>;
|
|
16
18
|
export declare function transformBackgroundFileIfNeed(file: string, tmpDir: TmpDir): Promise<string>;
|
|
17
19
|
export declare function getImageSizeUsingSips(background: string): Promise<{
|
|
18
20
|
width: number;
|
package/out/dmgUtil.js
CHANGED
|
@@ -43,18 +43,15 @@ async function getDmgVendorPath() {
|
|
|
43
43
|
builder_util_1.log.warn({ path: resolvedPath }, "using CUSTOM_DMGBUILD_PATH override for dmgbuild binary");
|
|
44
44
|
return resolvedPath;
|
|
45
45
|
}
|
|
46
|
-
// https://github.com/electron-userland/electron-builder-binaries/releases/tag/dmg-builder%401.2.2
|
|
47
|
-
const config = {
|
|
48
|
-
"dmgbuild-bundle-arm64-75c8a6c.tar.gz": "28be390d4cfade51d872c42016bc56712bb240525c9f21ebbfa0b413ade1fe0f",
|
|
49
|
-
"dmgbuild-bundle-x86_64-75c8a6c.tar.gz": "97d4ac0d2137383d37d02df3338bf653b6e6095d033508458ef195d567d25071",
|
|
50
|
-
};
|
|
51
46
|
const arch = process.arch === "arm64" ? "arm64" : "x86_64";
|
|
52
|
-
|
|
47
|
+
// https://github.com/electron-userland/electron-builder-binaries/releases?q=dmg-builder&expanded=true
|
|
53
48
|
const file = await (0, electronGet_1.downloadBuilderToolset)({
|
|
54
|
-
releaseName: "dmg-builder@1.2.
|
|
55
|
-
filenameWithExt:
|
|
56
|
-
checksums:
|
|
57
|
-
|
|
49
|
+
releaseName: "dmg-builder@1.2.5",
|
|
50
|
+
filenameWithExt: `dmgbuild-bundle-${arch}-75c8a6c.tar.gz`,
|
|
51
|
+
checksums: {
|
|
52
|
+
"dmgbuild-bundle-arm64-75c8a6c.tar.gz": "793404d0c96687e27d5ee40a668d498c92e36a64d6c2906df511031adb33cbeb",
|
|
53
|
+
"dmgbuild-bundle-x86_64-75c8a6c.tar.gz": "1664972f9cc2d6e8fce3b63e42cd30078aff602669c5856939c4519921200433",
|
|
54
|
+
},
|
|
58
55
|
});
|
|
59
56
|
return path.resolve(file, "dmgbuild");
|
|
60
57
|
}
|
|
@@ -65,8 +62,12 @@ async function attachAndExecute(dmgPath, readWrite, forceDetach, task) {
|
|
|
65
62
|
args.push("-readwrite");
|
|
66
63
|
}
|
|
67
64
|
args.push(dmgPath);
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
// Pipe "y\n" to stdin so that hdiutil auto-accepts any SLA/EULA dialog
|
|
66
|
+
// embedded in the DMG instead of blocking on a terminal prompt.
|
|
67
|
+
const attachResult = await (0, hdiuil_1.hdiUtilWithStdin)(args, "y\n");
|
|
68
|
+
// Use multiline flag so ^ matches any line start — the EULA text (if any)
|
|
69
|
+
// precedes the /dev/... device lines in hdiutil's stdout output.
|
|
70
|
+
const deviceResult = attachResult == null ? null : /^(\/dev\/\w+)/m.exec(attachResult);
|
|
70
71
|
const device = deviceResult == null || deviceResult.length !== 2 ? null : deviceResult[1];
|
|
71
72
|
if (device == null) {
|
|
72
73
|
throw new Error(`Cannot mount: ${attachResult}`);
|
|
@@ -118,7 +119,7 @@ function serializeString(data) {
|
|
|
118
119
|
.join('"\n $"') +
|
|
119
120
|
'"');
|
|
120
121
|
}
|
|
121
|
-
async function customizeDmg({ appPath, artifactPath, volumeName, specification, packager }) {
|
|
122
|
+
async function customizeDmg({ appPath, artifactPath, volumeName, specification, packager, licenseData }) {
|
|
122
123
|
var _a, _b, _c, _d, _e, _f;
|
|
123
124
|
const isValidIconTextSize = !!specification.iconTextSize && specification.iconTextSize >= 10 && specification.iconTextSize <= 16;
|
|
124
125
|
const iconTextSize = isValidIconTextSize ? specification.iconTextSize : 12;
|
|
@@ -184,6 +185,9 @@ async function customizeDmg({ appPath, artifactPath, volumeName, specification,
|
|
|
184
185
|
}
|
|
185
186
|
}
|
|
186
187
|
}
|
|
188
|
+
if (licenseData) {
|
|
189
|
+
settings.license = licenseData;
|
|
190
|
+
}
|
|
187
191
|
const settingsFile = await packager.getTempFile(".json");
|
|
188
192
|
await (0, fs_extra_1.writeFile)(settingsFile, JSON.stringify(settings, null, 2));
|
|
189
193
|
const dmgbuild = await getDmgVendorPath();
|
package/out/dmgUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dmgUtil.js","sourceRoot":"","sources":["../src/dmgUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { DmgOptions, MacPackager, PlatformPackager } from \"app-builder-lib\"\nimport { downloadBuilderToolset } from \"app-builder-lib/out/util/electronGet\"\nimport { withToolsetLock } from \"app-builder-lib/out/util/toolsetLock\"\nimport { exec, executeFinally, exists, InvalidConfigurationError, isEmptyOrSpaces, log, TmpDir } from \"builder-util\"\nimport { stat } from \"fs/promises\"\nimport { writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DmgBuildConfig } from \"./dmg\"\nimport { hdiUtil, hdiutilTransientExitCodes } from \"./hdiuil\"\n\nexport { DmgTarget } from \"./dmg\"\n\nconst root = path.join(__dirname, \"..\")\n\nexport function getDmgTemplatePath() {\n return path.join(root, \"templates\")\n}\n\nasync function getDmgVendorPath(): Promise<string> {\n const customDmgbuildPath = process.env.CUSTOM_DMGBUILD_PATH?.trim()\n if (customDmgbuildPath) {\n const resolvedPath = path.resolve(customDmgbuildPath)\n let dmgbuildStat: Awaited<ReturnType<typeof stat>>\n try {\n dmgbuildStat = await stat(resolvedPath)\n } catch (e: any) {\n if (e.code === \"ENOENT\") {\n throw new Error(`CUSTOM_DMGBUILD_PATH \"${resolvedPath}\" does not exist`)\n }\n throw e\n }\n if (!dmgbuildStat.isFile()) {\n throw new Error(`CUSTOM_DMGBUILD_PATH \"${resolvedPath}\" is not a regular file`)\n }\n log.warn({ path: resolvedPath }, \"using CUSTOM_DMGBUILD_PATH override for dmgbuild binary\")\n return resolvedPath\n }\n\n // https://github.com/electron-userland/electron-builder-binaries/releases/tag/dmg-builder%401.2.2\n const config = {\n \"dmgbuild-bundle-arm64-75c8a6c.tar.gz\": \"28be390d4cfade51d872c42016bc56712bb240525c9f21ebbfa0b413ade1fe0f\",\n \"dmgbuild-bundle-x86_64-75c8a6c.tar.gz\": \"97d4ac0d2137383d37d02df3338bf653b6e6095d033508458ef195d567d25071\",\n }\n const arch = process.arch === \"arm64\" ? \"arm64\" : \"x86_64\"\n const filename: keyof typeof config = `dmgbuild-bundle-${arch}-75c8a6c.tar.gz`\n const file = await downloadBuilderToolset({\n releaseName: \"dmg-builder@1.2.2\",\n filenameWithExt: filename,\n checksums: config,\n githubOrgRepo: \"electron-userland/electron-builder-binaries\",\n })\n return path.resolve(file, \"dmgbuild\")\n}\n\nexport async function attachAndExecute(dmgPath: string, readWrite: boolean, forceDetach: boolean, task: (devicePath: string) => Promise<any>) {\n //noinspection SpellCheckingInspection\n const args = [\"attach\", \"-noverify\", \"-noautoopen\"]\n if (readWrite) {\n args.push(\"-readwrite\")\n }\n\n args.push(dmgPath)\n const attachResult = await hdiUtil(args)\n const deviceResult = attachResult == null ? null : /^(\\/dev\\/\\w+)/.exec(attachResult)\n const device = deviceResult == null || deviceResult.length !== 2 ? null : deviceResult[1]\n if (device == null) {\n throw new Error(`Cannot mount: ${attachResult}`)\n }\n // Find the volume mount path directly from hdiutil attach output.\n // APFS images synthesize a new disk device (e.g. disk9) separate from the container disk\n // (e.g. disk8), so device-name matching via hdiutil info misses the APFS volume.\n let volumePath: string | null = null\n for (const line of attachResult!.split(\"\\n\")) {\n const match = /\\s+(\\/Volumes\\/.+?)\\s*$/.exec(line)\n if (match) {\n volumePath = match[1].trim()\n break\n }\n }\n if (volumePath == null) {\n throw new Error(`Cannot find volume mount path for device: ${device}`)\n }\n\n return await executeFinally(task(volumePath), () => detach(device, forceDetach))\n}\n\nexport async function detach(name: string, alwaysForce: boolean) {\n return hdiUtil([\"detach\", \"-quiet\", name]).catch(async e => {\n if (hdiutilTransientExitCodes.has(e.code) || alwaysForce) {\n // Delay then force unmount with verbose output\n await new Promise(resolve => setTimeout(resolve, 3000))\n return hdiUtil([\"detach\", \"-force\", name])\n }\n throw e\n })\n}\n\nexport async function computeBackground(packager: PlatformPackager<any>): Promise<string> {\n const resourceList = await packager.resourceList\n if (resourceList.includes(\"background.tiff\")) {\n return path.join(packager.buildResourcesDir, \"background.tiff\")\n } else if (resourceList.includes(\"background.png\")) {\n return path.join(packager.buildResourcesDir, \"background.png\")\n } else {\n return path.join(getDmgTemplatePath(), \"background.tiff\")\n }\n}\n\n/** @internal */\nexport function serializeString(data: string) {\n return (\n ' $\"' +\n data\n .match(/.{1,32}/g)!\n .map(it => it.match(/.{1,4}/g)!.join(\" \"))\n .join('\"\\n $\"') +\n '\"'\n )\n}\n\ntype DmgBuilderConfig = {\n appPath: string\n artifactPath: string\n volumeName: string\n specification: DmgOptions\n packager: MacPackager\n}\n\nexport async function customizeDmg({ appPath, artifactPath, volumeName, specification, packager }: DmgBuilderConfig): Promise<boolean> {\n const isValidIconTextSize = !!specification.iconTextSize && specification.iconTextSize >= 10 && specification.iconTextSize <= 16\n const iconTextSize = isValidIconTextSize ? specification.iconTextSize : 12\n const volumePath = path.join(\"/Volumes\", volumeName)\n // https://github.com/electron-userland/electron-builder/issues/2115\n\n const settings: DmgBuildConfig = {\n title: path.basename(volumePath),\n \"icon-size\": specification.iconSize,\n \"text-size\": iconTextSize,\n\n \"compression-level\": Number(process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL || \"9\"),\n filesystem: specification.filesystem || \"HFS+\",\n format: specification.format,\n size: specification.size,\n shrink: specification.shrink,\n contents:\n specification.contents?.map(c => ({\n path: c.path || appPath, // path is required, when ommitted, appPath is used (backward compatibility\n x: c.x,\n y: c.y,\n name: c.name,\n type: c.type === \"dir\" ? \"file\" : c.type, // appdmg expects \"file\" for directories\n // hide_extension: c.hideExtension,\n })) || [],\n }\n\n if (specification.badgeIcon) {\n let badgeIcon = await packager.getResource(specification.badgeIcon)\n if (badgeIcon && badgeIcon.toLowerCase().endsWith(\".icon\")) {\n badgeIcon = await packager.generateIcnsFromIcon(badgeIcon)\n }\n settings[\"badge-icon\"] = badgeIcon\n } else {\n settings.icon = await packager.getResource(specification.icon)\n }\n\n if (specification.backgroundColor != null || specification.background == null) {\n settings[\"background-color\"] = specification.backgroundColor || \"#ffffff\"\n\n const window = specification.window\n if (window != null) {\n settings.window = {\n position: {\n x: window.x ?? 100,\n y: window.y ?? 400,\n },\n size: {\n width: window.width ?? 540,\n height: window.height ?? 300,\n },\n }\n }\n } else {\n settings.background = specification.background == null ? null : await transformBackgroundFileIfNeed(specification.background, packager.info.tempDirManager)\n }\n\n if (!isEmptyOrSpaces(settings.background)) {\n const size = await getImageSizeUsingSips(settings.background)\n settings.window = { position: { x: 400, y: Math.round((1440 - size.height) / 2) }, size, ...settings.window }\n }\n\n const workspaceRoot = await packager.info.getWorkspaceRoot()\n for (const item of settings.contents ?? []) {\n if (item.type === \"file\" && item.path && path.isAbsolute(item.path)) {\n if (!item.path.startsWith(workspaceRoot + path.sep) && item.path !== appPath) {\n log.error({ contentPath: item.path }, \"dmg.contents path is outside the workspace root — verify this is intentional\")\n throw new InvalidConfigurationError(`dmg.contents path \"${item.path}\" is outside the workspace root`)\n }\n }\n }\n\n const settingsFile = await packager.getTempFile(\".json\")\n await writeFile(settingsFile, JSON.stringify(settings, null, 2))\n\n const dmgbuild = await getDmgVendorPath()\n await withToolsetLock(() =>\n exec(dmgbuild, [\"-s\", settingsFile, path.basename(volumePath), artifactPath], {\n env: {\n ...process.env,\n PYTHONIOENCODING: \"utf8\",\n },\n })\n )\n\n // effectiveOptionComputed, when present, is purely for verifying result during test execution\n return (\n packager.packagerOptions.effectiveOptionComputed == null ||\n (await attachAndExecute(artifactPath, false, true, async volumePath => {\n return !(await packager.packagerOptions.effectiveOptionComputed!({\n volumePath,\n specification: {\n ...specification,\n // clean up `contents` for test snapshot verification since app path is absolute to a unique tmp dir\n contents: specification.contents?.map((c: any) => ({\n ...c,\n path: path.extname(c.path ?? \"\") === \".app\" ? path.relative(packager.projectDir, c.path) : c.path,\n })),\n },\n packager,\n }))\n }))\n )\n}\n\nexport async function transformBackgroundFileIfNeed(file: string, tmpDir: TmpDir): Promise<string> {\n if (path.extname(file.toLowerCase()) === \".tiff\") {\n return file\n }\n\n const retinaFile = file.replace(/\\.([a-z]+)$/, \"@2x.$1\")\n if (await exists(retinaFile)) {\n const tiffFile = await tmpDir.getTempFile({ suffix: \".tiff\" })\n await exec(\"tiffutil\", [\"-cathidpicheck\", file, retinaFile, \"-out\", tiffFile])\n return tiffFile\n }\n\n return file\n}\n\nexport async function getImageSizeUsingSips(background: string) {\n const stdout = await exec(\"sips\", [\"-g\", \"pixelHeight\", \"-g\", \"pixelWidth\", background])\n\n let width = 0\n let height = 0\n\n const re = /([a-zA-Z]+):\\s*(\\d+)/\n const lines = stdout.split(\"\\n\")\n\n for (const line of lines) {\n const match = re.exec(line)\n if (!match) {\n continue\n }\n\n const key = match[1]\n const value = parseInt(match[2], 10)\n\n if (isNaN(value)) {\n throw new Error(`Failed to parse number from line: \"${line}\"`)\n }\n\n if (key === \"pixelWidth\") {\n width = value\n } else if (key === \"pixelHeight\") {\n height = value\n }\n }\n\n return { width, height }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dmgUtil.js","sourceRoot":"","sources":["../src/dmgUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { DmgOptions, MacPackager, PlatformPackager } from \"app-builder-lib\"\nimport { downloadBuilderToolset } from \"app-builder-lib/out/util/electronGet\"\nimport { withToolsetLock } from \"app-builder-lib/out/util/toolsetLock\"\nimport { exec, executeFinally, exists, InvalidConfigurationError, isEmptyOrSpaces, log, TmpDir } from \"builder-util\"\nimport { stat } from \"fs/promises\"\nimport { writeFile } from \"fs-extra\"\nimport * as path from \"path\"\nimport { DmgBuildConfig } from \"./dmg\"\nimport type { DmgBuildLicenseConfig } from \"./dmgLicense\"\nimport { hdiUtil, hdiUtilWithStdin, hdiutilTransientExitCodes } from \"./hdiuil\"\n\nexport { DmgTarget } from \"./dmg\"\n\nconst root = path.join(__dirname, \"..\")\n\nexport function getDmgTemplatePath() {\n return path.join(root, \"templates\")\n}\n\nasync function getDmgVendorPath(): Promise<string> {\n const customDmgbuildPath = process.env.CUSTOM_DMGBUILD_PATH?.trim()\n if (customDmgbuildPath) {\n const resolvedPath = path.resolve(customDmgbuildPath)\n let dmgbuildStat: Awaited<ReturnType<typeof stat>>\n try {\n dmgbuildStat = await stat(resolvedPath)\n } catch (e: any) {\n if (e.code === \"ENOENT\") {\n throw new Error(`CUSTOM_DMGBUILD_PATH \"${resolvedPath}\" does not exist`)\n }\n throw e\n }\n if (!dmgbuildStat.isFile()) {\n throw new Error(`CUSTOM_DMGBUILD_PATH \"${resolvedPath}\" is not a regular file`)\n }\n log.warn({ path: resolvedPath }, \"using CUSTOM_DMGBUILD_PATH override for dmgbuild binary\")\n return resolvedPath\n }\n\n const arch = process.arch === \"arm64\" ? \"arm64\" : \"x86_64\"\n // https://github.com/electron-userland/electron-builder-binaries/releases?q=dmg-builder&expanded=true\n const file = await downloadBuilderToolset({\n releaseName: \"dmg-builder@1.2.5\",\n filenameWithExt: `dmgbuild-bundle-${arch}-75c8a6c.tar.gz`,\n checksums: {\n \"dmgbuild-bundle-arm64-75c8a6c.tar.gz\": \"793404d0c96687e27d5ee40a668d498c92e36a64d6c2906df511031adb33cbeb\",\n \"dmgbuild-bundle-x86_64-75c8a6c.tar.gz\": \"1664972f9cc2d6e8fce3b63e42cd30078aff602669c5856939c4519921200433\",\n },\n })\n return path.resolve(file, \"dmgbuild\")\n}\n\nexport async function attachAndExecute(dmgPath: string, readWrite: boolean, forceDetach: boolean, task: (devicePath: string) => Promise<any>) {\n //noinspection SpellCheckingInspection\n const args = [\"attach\", \"-noverify\", \"-noautoopen\"]\n if (readWrite) {\n args.push(\"-readwrite\")\n }\n\n args.push(dmgPath)\n // Pipe \"y\\n\" to stdin so that hdiutil auto-accepts any SLA/EULA dialog\n // embedded in the DMG instead of blocking on a terminal prompt.\n const attachResult = await hdiUtilWithStdin(args, \"y\\n\")\n // Use multiline flag so ^ matches any line start — the EULA text (if any)\n // precedes the /dev/... device lines in hdiutil's stdout output.\n const deviceResult = attachResult == null ? null : /^(\\/dev\\/\\w+)/m.exec(attachResult)\n const device = deviceResult == null || deviceResult.length !== 2 ? null : deviceResult[1]\n if (device == null) {\n throw new Error(`Cannot mount: ${attachResult}`)\n }\n // Find the volume mount path directly from hdiutil attach output.\n // APFS images synthesize a new disk device (e.g. disk9) separate from the container disk\n // (e.g. disk8), so device-name matching via hdiutil info misses the APFS volume.\n let volumePath: string | null = null\n for (const line of attachResult!.split(\"\\n\")) {\n const match = /\\s+(\\/Volumes\\/.+?)\\s*$/.exec(line)\n if (match) {\n volumePath = match[1].trim()\n break\n }\n }\n if (volumePath == null) {\n throw new Error(`Cannot find volume mount path for device: ${device}`)\n }\n\n return await executeFinally(task(volumePath), () => detach(device, forceDetach))\n}\n\nexport async function detach(name: string, alwaysForce: boolean) {\n return hdiUtil([\"detach\", \"-quiet\", name]).catch(async e => {\n if (hdiutilTransientExitCodes.has(e.code) || alwaysForce) {\n // Delay then force unmount with verbose output\n await new Promise(resolve => setTimeout(resolve, 3000))\n return hdiUtil([\"detach\", \"-force\", name])\n }\n throw e\n })\n}\n\nexport async function computeBackground(packager: PlatformPackager<any>): Promise<string> {\n const resourceList = await packager.resourceList\n if (resourceList.includes(\"background.tiff\")) {\n return path.join(packager.buildResourcesDir, \"background.tiff\")\n } else if (resourceList.includes(\"background.png\")) {\n return path.join(packager.buildResourcesDir, \"background.png\")\n } else {\n return path.join(getDmgTemplatePath(), \"background.tiff\")\n }\n}\n\n/** @internal */\nexport function serializeString(data: string) {\n return (\n ' $\"' +\n data\n .match(/.{1,32}/g)!\n .map(it => it.match(/.{1,4}/g)!.join(\" \"))\n .join('\"\\n $\"') +\n '\"'\n )\n}\n\ntype DmgBuilderConfig = {\n appPath: string\n artifactPath: string\n volumeName: string\n specification: DmgOptions\n packager: MacPackager\n licenseData?: DmgBuildLicenseConfig | null\n}\n\nexport async function customizeDmg({ appPath, artifactPath, volumeName, specification, packager, licenseData }: DmgBuilderConfig): Promise<boolean> {\n const isValidIconTextSize = !!specification.iconTextSize && specification.iconTextSize >= 10 && specification.iconTextSize <= 16\n const iconTextSize = isValidIconTextSize ? specification.iconTextSize : 12\n const volumePath = path.join(\"/Volumes\", volumeName)\n // https://github.com/electron-userland/electron-builder/issues/2115\n\n const settings: DmgBuildConfig = {\n title: path.basename(volumePath),\n \"icon-size\": specification.iconSize,\n \"text-size\": iconTextSize,\n\n \"compression-level\": Number(process.env.ELECTRON_BUILDER_COMPRESSION_LEVEL || \"9\"),\n filesystem: specification.filesystem || \"HFS+\",\n format: specification.format,\n size: specification.size,\n shrink: specification.shrink,\n contents:\n specification.contents?.map(c => ({\n path: c.path || appPath, // path is required, when ommitted, appPath is used (backward compatibility\n x: c.x,\n y: c.y,\n name: c.name,\n type: c.type === \"dir\" ? \"file\" : c.type, // appdmg expects \"file\" for directories\n // hide_extension: c.hideExtension,\n })) || [],\n }\n\n if (specification.badgeIcon) {\n let badgeIcon = await packager.getResource(specification.badgeIcon)\n if (badgeIcon && badgeIcon.toLowerCase().endsWith(\".icon\")) {\n badgeIcon = await packager.generateIcnsFromIcon(badgeIcon)\n }\n settings[\"badge-icon\"] = badgeIcon\n } else {\n settings.icon = await packager.getResource(specification.icon)\n }\n\n if (specification.backgroundColor != null || specification.background == null) {\n settings[\"background-color\"] = specification.backgroundColor || \"#ffffff\"\n\n const window = specification.window\n if (window != null) {\n settings.window = {\n position: {\n x: window.x ?? 100,\n y: window.y ?? 400,\n },\n size: {\n width: window.width ?? 540,\n height: window.height ?? 300,\n },\n }\n }\n } else {\n settings.background = specification.background == null ? null : await transformBackgroundFileIfNeed(specification.background, packager.info.tempDirManager)\n }\n\n if (!isEmptyOrSpaces(settings.background)) {\n const size = await getImageSizeUsingSips(settings.background)\n settings.window = { position: { x: 400, y: Math.round((1440 - size.height) / 2) }, size, ...settings.window }\n }\n\n const workspaceRoot = await packager.info.getWorkspaceRoot()\n for (const item of settings.contents ?? []) {\n if (item.type === \"file\" && item.path && path.isAbsolute(item.path)) {\n if (!item.path.startsWith(workspaceRoot + path.sep) && item.path !== appPath) {\n log.error({ contentPath: item.path }, \"dmg.contents path is outside the workspace root — verify this is intentional\")\n throw new InvalidConfigurationError(`dmg.contents path \"${item.path}\" is outside the workspace root`)\n }\n }\n }\n\n if (licenseData) {\n settings.license = licenseData\n }\n\n const settingsFile = await packager.getTempFile(\".json\")\n await writeFile(settingsFile, JSON.stringify(settings, null, 2))\n\n const dmgbuild = await getDmgVendorPath()\n await withToolsetLock(() =>\n exec(dmgbuild, [\"-s\", settingsFile, path.basename(volumePath), artifactPath], {\n env: {\n ...process.env,\n PYTHONIOENCODING: \"utf8\",\n },\n })\n )\n\n // effectiveOptionComputed, when present, is purely for verifying result during test execution\n return (\n packager.packagerOptions.effectiveOptionComputed == null ||\n (await attachAndExecute(artifactPath, false, true, async volumePath => {\n return !(await packager.packagerOptions.effectiveOptionComputed!({\n volumePath,\n specification: {\n ...specification,\n // clean up `contents` for test snapshot verification since app path is absolute to a unique tmp dir\n contents: specification.contents?.map((c: any) => ({\n ...c,\n path: path.extname(c.path ?? \"\") === \".app\" ? path.relative(packager.projectDir, c.path) : c.path,\n })),\n },\n packager,\n }))\n }))\n )\n}\n\nexport async function transformBackgroundFileIfNeed(file: string, tmpDir: TmpDir): Promise<string> {\n if (path.extname(file.toLowerCase()) === \".tiff\") {\n return file\n }\n\n const retinaFile = file.replace(/\\.([a-z]+)$/, \"@2x.$1\")\n if (await exists(retinaFile)) {\n const tiffFile = await tmpDir.getTempFile({ suffix: \".tiff\" })\n await exec(\"tiffutil\", [\"-cathidpicheck\", file, retinaFile, \"-out\", tiffFile])\n return tiffFile\n }\n\n return file\n}\n\nexport async function getImageSizeUsingSips(background: string) {\n const stdout = await exec(\"sips\", [\"-g\", \"pixelHeight\", \"-g\", \"pixelWidth\", background])\n\n let width = 0\n let height = 0\n\n const re = /([a-zA-Z]+):\\s*(\\d+)/\n const lines = stdout.split(\"\\n\")\n\n for (const line of lines) {\n const match = re.exec(line)\n if (!match) {\n continue\n }\n\n const key = match[1]\n const value = parseInt(match[2], 10)\n\n if (isNaN(value)) {\n throw new Error(`Failed to parse number from line: \"${line}\"`)\n }\n\n if (key === \"pixelWidth\") {\n width = value\n } else if (key === \"pixelHeight\") {\n height = value\n }\n }\n\n return { width, height }\n}\n"]}
|
package/out/hdiuil.d.ts
CHANGED
|
@@ -16,3 +16,4 @@
|
|
|
16
16
|
export declare const hdiutilTransientExitCodes: Set<number>;
|
|
17
17
|
export declare function explainHdiutilError(errorCode: number): string;
|
|
18
18
|
export declare function hdiUtil(args: string[]): Promise<string | null>;
|
|
19
|
+
export declare function hdiUtilWithStdin(args: string[], stdin: string): Promise<string | null>;
|
package/out/hdiuil.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.hdiutilTransientExitCodes = void 0;
|
|
4
4
|
exports.explainHdiutilError = explainHdiutilError;
|
|
5
5
|
exports.hdiUtil = hdiUtil;
|
|
6
|
+
exports.hdiUtilWithStdin = hdiUtilWithStdin;
|
|
6
7
|
const builder_util_1 = require("builder-util");
|
|
7
8
|
/**
|
|
8
9
|
* Table of hdiutil error codes that are transient and can be retried.
|
|
@@ -59,4 +60,14 @@ async function hdiUtil(args) {
|
|
|
59
60
|
shouldRetry: shouldRetry(args),
|
|
60
61
|
});
|
|
61
62
|
}
|
|
63
|
+
// Like hdiUtil but pipes `stdin` to the process — used for `hdiutil attach` on
|
|
64
|
+
// DMGs that have an embedded SLA so the prompt is auto-accepted without blocking.
|
|
65
|
+
async function hdiUtilWithStdin(args, stdin) {
|
|
66
|
+
return (0, builder_util_1.retry)(() => (0, builder_util_1.spawnAndWriteWithOutput)("hdiutil", args, stdin).then(({ stdout }) => stdout || null), {
|
|
67
|
+
retries: 5,
|
|
68
|
+
interval: 5000,
|
|
69
|
+
backoff: 2000,
|
|
70
|
+
shouldRetry: shouldRetry(args),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
62
73
|
//# sourceMappingURL=hdiuil.js.map
|
package/out/hdiuil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hdiuil.js","sourceRoot":"","sources":["../src/hdiuil.ts"],"names":[],"mappings":";;;AAmBA,kDAoBC;AAcD,0BAOC;
|
|
1
|
+
{"version":3,"file":"hdiuil.js","sourceRoot":"","sources":["../src/hdiuil.ts"],"names":[],"mappings":";;;AAmBA,kDAoBC;AAcD,0BAOC;AAID,4CAOC;AAvED,+CAAwE;AAExE;;;;;;;;;;;;;;GAcG;AACU,QAAA,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAEzE,SAAgB,mBAAmB,CAAC,SAAiB;;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;IACjC,MAAM,QAAQ,GAA2B;QACvC,GAAG,EAAE,uDAAuD;QAC5D,GAAG,EAAE,2GAA2G;QAChH,GAAG,EAAE,gEAAgE;QACrE,GAAG,EAAE,oGAAoG;QACzG,GAAG,EAAE,8DAA8D;QACnE,IAAI,EAAE,gFAAgF;QACtF,IAAI,EAAE,0EAA0E;QAChF,IAAI,EAAE,0EAA0E;QAChF,IAAI,EAAE,+EAA+E;QACrF,KAAK,EAAE,kEAAkE;QACzE,KAAK,EAAE,0EAA0E;QACjF,OAAO,EAAE,qEAAqE;QAC9E,OAAO,EAAE,oFAAoF;QAC7F,OAAO,EAAE,gFAAgF;KAC1F,CAAA;IAED,OAAO,MAAA,QAAQ,CAAC,IAAI,CAAC,mCAAI,uBAAuB,IAAI,+GAA+G,CAAA;AACrK,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,KAAU,EAAE,EAAE;;IACrD,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,mCAAI,CAAC,CAAC,CAAA;IAC7B,MAAM,MAAM,GAAG,CAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,QAAQ,EAAE,KAAI,EAAE,CAAA;IAC7C,MAAM,MAAM,GAAG,CAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,QAAQ,EAAE,KAAI,EAAE,CAAA;IAC7C,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IAE3C,MAAM,SAAS,GAAG,iCAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChE,kBAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,kBAAkB,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE1F,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAEM,KAAK,UAAU,OAAO,CAAC,IAAc;IAC1C,OAAO,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,IAAA,mBAAI,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE;QACxC,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,+EAA+E;AAC/E,kFAAkF;AAC3E,KAAK,UAAU,gBAAgB,CAAC,IAAc,EAAE,KAAa;IAClE,OAAO,IAAA,oBAAK,EAAC,GAAG,EAAE,CAAC,IAAA,sCAAuB,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;QACvG,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { exec, log, retry, spawnAndWriteWithOutput } from \"builder-util\"\n\n/**\n * Table of hdiutil error codes that are transient and can be retried.\n * These codes are typically related to resource availability or temporary issues.\n *\n| Code | Meaning | Why Retry? |\n| ------- | -------------------------------- | ---------------------------------------------------- |\n| `1` | Generic error | Can occur from brief race conditions or temp issues. |\n| `16` | **Resource busy** | Volume is in use — wait and retry often works. |\n| `35` | **Operation timed out** | System delay or timeout — retry after a short delay. |\n| `256` | Volume in use or unmount failure | Same as 16 — usually resolves after retry. |\n| `49153` | Volume not mounted yet | Attach may be too fast — retry after delay. |\n| `-5341` | Disk image too small | Retry *after fixing* with a larger `-size`. |\n| `-5342` | Specified size too small | Same as above — retry if size is corrected. |\n *\n */\nexport const hdiutilTransientExitCodes = new Set([1, 16, 35, 256, 49153])\n\nexport function explainHdiutilError(errorCode: number): string {\n const code = errorCode.toString()\n const messages: Record<string, string> = {\n \"0\": \"Success: The hdiutil command completed without error.\",\n \"1\": \"Generic error: The operation failed, but the reason is not specific. Check command syntax or permissions.\",\n \"2\": \"No such file or directory: Check if the specified path exists.\",\n \"6\": \"Disk image to resize is not currently attached or not recognized as a valid block device by macOS.\",\n \"8\": \"Exec format error: The file might not be a valid disk image.\",\n \"16\": \"Resource busy: The volume is in use. Try closing files or processes and retry.\",\n \"22\": \"Invalid argument: One or more arguments passed to hdiutil are incorrect.\",\n \"35\": \"Operation timed out: The system was too slow or unresponsive. Try again.\",\n \"36\": \"I/O error: There was a problem reading or writing to disk. Check disk health.\",\n \"100\": \"Image-related error: The disk image may be corrupted or invalid.\",\n \"256\": \"Volume is busy or could not be unmounted. Try again after closing files.\",\n \"49153\": \"Volume not mounted yet: The image may not have been fully attached.\",\n \"-5341\": \"Disk image too small: hdiutil could not fit the contents. Increase the image size.\",\n \"-5342\": \"Specified size too small: Disk image creation failed due to insufficient size.\",\n }\n\n return messages[code] ?? `Unknown error (code ${code}): Refer to hdiutil documentation or run with -verbose for details by rerunning with env var DEBUG_DEMB=true.`\n}\n\nconst shouldRetry = (args: string[]) => (error: any) => {\n const code = error.code ?? -1\n const stderr = error.stderr?.toString() || \"\"\n const stdout = error.stdout?.toString() || \"\"\n const output = `${stdout} ${stderr}`.trim()\n\n const willRetry = hdiutilTransientExitCodes.has(code.toString())\n log.warn({ willRetry, args, code, output }, `hdiutil error: ${explainHdiutilError(code)}`)\n\n return willRetry\n}\n\nexport async function hdiUtil(args: string[]): Promise<string | null> {\n return retry(() => exec(\"hdiutil\", args), {\n retries: 5,\n interval: 5000,\n backoff: 2000,\n shouldRetry: shouldRetry(args),\n })\n}\n\n// Like hdiUtil but pipes `stdin` to the process — used for `hdiutil attach` on\n// DMGs that have an embedded SLA so the prompt is auto-accepted without blocking.\nexport async function hdiUtilWithStdin(args: string[], stdin: string): Promise<string | null> {\n return retry(() => spawnAndWriteWithOutput(\"hdiutil\", args, stdin).then(({ stdout }) => stdout || null), {\n retries: 5,\n interval: 5000,\n backoff: 2000,\n shouldRetry: shouldRetry(args),\n })\n}\n"]}
|
package/out/licenseButtons.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { PlatformPackager } from "app-builder-lib";
|
|
2
|
-
export declare function getLicenseButtonsFile(packager: PlatformPackager<any>): Promise<Array<LicenseButtonsFile>>;
|
|
3
2
|
export interface LicenseButtonsFile {
|
|
4
3
|
file: string;
|
|
5
4
|
lang: string;
|
|
6
5
|
langWithRegion: string;
|
|
7
6
|
langName: string;
|
|
8
7
|
}
|
|
9
|
-
export declare function
|
|
8
|
+
export declare function getLicenseButtonsFile(packager: PlatformPackager<any>): Promise<Array<LicenseButtonsFile>>;
|
package/out/licenseButtons.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getLicenseButtonsFile = getLicenseButtonsFile;
|
|
4
|
-
exports.getLicenseButtons = getLicenseButtons;
|
|
5
4
|
const license_1 = require("app-builder-lib/out/util/license");
|
|
6
|
-
const builder_util_1 = require("builder-util");
|
|
7
|
-
const fs_extra_1 = require("fs-extra");
|
|
8
|
-
const iconv = require("iconv-lite");
|
|
9
|
-
const js_yaml_1 = require("js-yaml");
|
|
10
|
-
const dmgUtil_1 = require("./dmgUtil");
|
|
11
|
-
const licenseDefaultButtons_1 = require("./licenseDefaultButtons");
|
|
12
5
|
async function getLicenseButtonsFile(packager) {
|
|
13
6
|
return (0, license_1.getLicenseAssets)((await packager.resourceList).filter(it => {
|
|
14
7
|
const name = it.toLowerCase();
|
|
@@ -16,126 +9,4 @@ async function getLicenseButtonsFile(packager) {
|
|
|
16
9
|
return name.startsWith("licensebuttons_") && (name.endsWith(".json") || name.endsWith(".yml"));
|
|
17
10
|
}), packager);
|
|
18
11
|
}
|
|
19
|
-
async function getLicenseButtons(licenseButtonFiles, langWithRegion, id, name) {
|
|
20
|
-
let data = (0, licenseDefaultButtons_1.getDefaultButtons)(langWithRegion, id, name);
|
|
21
|
-
for (const item of licenseButtonFiles) {
|
|
22
|
-
if (item.langWithRegion !== langWithRegion) {
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
try {
|
|
26
|
-
const fileData = (0, js_yaml_1.load)(await (0, fs_extra_1.readFile)(item.file, "utf-8"), { schema: js_yaml_1.CORE_SCHEMA });
|
|
27
|
-
const buttonsStr = labelToHex(fileData.lang, item.lang, item.langWithRegion) +
|
|
28
|
-
labelToHex(fileData.agree, item.lang, item.langWithRegion) +
|
|
29
|
-
labelToHex(fileData.disagree, item.lang, item.langWithRegion) +
|
|
30
|
-
labelToHex(fileData.print, item.lang, item.langWithRegion) +
|
|
31
|
-
labelToHex(fileData.save, item.lang, item.langWithRegion) +
|
|
32
|
-
labelToHex(fileData.description, item.lang, item.langWithRegion);
|
|
33
|
-
data = `data 'STR#' (${id}, "${name}") {\n`;
|
|
34
|
-
data += (0, dmgUtil_1.serializeString)("0006" + buttonsStr);
|
|
35
|
-
data += `\n};`;
|
|
36
|
-
builder_util_1.log.debug({ lang: item.langName, data }, `overwriting license buttons`);
|
|
37
|
-
return data;
|
|
38
|
-
}
|
|
39
|
-
catch (e) {
|
|
40
|
-
builder_util_1.log.debug({ error: e }, "cannot overwrite license buttons");
|
|
41
|
-
return data;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return data;
|
|
45
|
-
}
|
|
46
|
-
function labelToHex(label, lang, langWithRegion) {
|
|
47
|
-
const lbl = hexEncode(label, lang, langWithRegion).toString().toUpperCase();
|
|
48
|
-
const len = numberToHex(lbl.length / 2);
|
|
49
|
-
return len + lbl;
|
|
50
|
-
}
|
|
51
|
-
function numberToHex(nb) {
|
|
52
|
-
return ("0" + nb.toString(16)).slice(-2);
|
|
53
|
-
}
|
|
54
|
-
function hexEncode(str, lang, langWithRegion) {
|
|
55
|
-
const macCodePages = getMacCodePage(lang, langWithRegion);
|
|
56
|
-
let result = "";
|
|
57
|
-
for (let i = 0; i < str.length; i++) {
|
|
58
|
-
try {
|
|
59
|
-
let hex = getMacHexCode(str, i, macCodePages);
|
|
60
|
-
if (hex === undefined) {
|
|
61
|
-
hex = "3F"; //?
|
|
62
|
-
}
|
|
63
|
-
result += hex;
|
|
64
|
-
}
|
|
65
|
-
catch (e) {
|
|
66
|
-
builder_util_1.log.debug({ error: e, char: str[i] }, "cannot convert");
|
|
67
|
-
result += "3F"; //?
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return result;
|
|
71
|
-
}
|
|
72
|
-
function getMacCodePage(lang, langWithRegion) {
|
|
73
|
-
switch (lang) {
|
|
74
|
-
case "ja": //japanese
|
|
75
|
-
return ["euc-jp"]; //Apple Japanese
|
|
76
|
-
case "zh": //chinese
|
|
77
|
-
if (langWithRegion === "zh_CN") {
|
|
78
|
-
return ["gb2312"]; //Apple Simplified Chinese (GB 2312)
|
|
79
|
-
}
|
|
80
|
-
return ["big5"]; //Apple Traditional Chinese (Big5)
|
|
81
|
-
case "ko": //korean
|
|
82
|
-
return ["euc-kr"]; //Apple Korean
|
|
83
|
-
case "ar": //arabic
|
|
84
|
-
case "ur": //urdu
|
|
85
|
-
return ["macarabic"]; //Apple Arabic
|
|
86
|
-
case "he": //hebrew
|
|
87
|
-
return ["machebrew"]; //Apple Hebrew
|
|
88
|
-
case "el": //greek
|
|
89
|
-
case "elc": //greek
|
|
90
|
-
return ["macgreek"]; //Apple Greek
|
|
91
|
-
case "ru": //russian
|
|
92
|
-
case "be": //belarussian
|
|
93
|
-
case "sr": //serbian
|
|
94
|
-
case "bg": //bulgarian
|
|
95
|
-
case "uz": //uzbek
|
|
96
|
-
return ["maccyrillic"]; //Apple Macintosh Cyrillic
|
|
97
|
-
case "ro": //romanian
|
|
98
|
-
return ["macromania"]; //Apple Romanian
|
|
99
|
-
case "uk": //ukrainian
|
|
100
|
-
return ["macukraine"]; //Apple Ukrainian
|
|
101
|
-
case "th": //thai
|
|
102
|
-
return ["macthai"]; //Apple Thai
|
|
103
|
-
case "et": //estonian
|
|
104
|
-
case "lt": //lithuanian
|
|
105
|
-
case "lv": //latvian
|
|
106
|
-
case "pl": //polish
|
|
107
|
-
case "hu": //hungarian
|
|
108
|
-
case "cs": //czech
|
|
109
|
-
case "sk": //slovak
|
|
110
|
-
return ["maccenteuro"]; //Apple Macintosh Central Europe
|
|
111
|
-
case "is": //icelandic
|
|
112
|
-
case "fo": //faroese
|
|
113
|
-
return ["maciceland"]; //Apple Icelandic
|
|
114
|
-
case "tr": //turkish
|
|
115
|
-
return ["macturkish"]; //Apple Turkish
|
|
116
|
-
case "hr": //croatian
|
|
117
|
-
case "sl": //slovenian
|
|
118
|
-
return ["maccroatian"]; //Apple Croatian
|
|
119
|
-
default:
|
|
120
|
-
return ["macroman"]; //Apple Macintosh Roman
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
function getMacHexCode(str, i, macCodePages) {
|
|
124
|
-
const code = str.charCodeAt(i);
|
|
125
|
-
if (code < 128) {
|
|
126
|
-
return code.toString(16);
|
|
127
|
-
}
|
|
128
|
-
else if (code < 256) {
|
|
129
|
-
return iconv.encode(str[i], "macroman").toString("hex");
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
for (let i = 0; i < macCodePages.length; i++) {
|
|
133
|
-
const result = iconv.encode(str[i], macCodePages[i]).toString("hex");
|
|
134
|
-
if (result !== undefined) {
|
|
135
|
-
return result;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return code;
|
|
140
|
-
}
|
|
141
12
|
//# sourceMappingURL=licenseButtons.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"licenseButtons.js","sourceRoot":"","sources":["../src/licenseButtons.ts"],"names":[],"mappings":"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","sourcesContent":["import { PlatformPackager } from \"app-builder-lib\"\nimport { getLicenseAssets } from \"app-builder-lib/out/util/license\"\nimport { log } from \"builder-util\"\nimport { readFile } from \"fs-extra\"\nimport * as iconv from \"iconv-lite\"\nimport { CORE_SCHEMA, load } from \"js-yaml\"\nimport { serializeString } from \"./dmgUtil\"\nimport { getDefaultButtons } from \"./licenseDefaultButtons\"\n\nexport async function getLicenseButtonsFile(packager: PlatformPackager<any>): Promise<Array<LicenseButtonsFile>> {\n return getLicenseAssets(\n (await packager.resourceList).filter(it => {\n const name = it.toLowerCase()\n // noinspection SpellCheckingInspection\n return name.startsWith(\"licensebuttons_\") && (name.endsWith(\".json\") || name.endsWith(\".yml\"))\n }),\n packager\n )\n}\n\nexport interface LicenseButtonsFile {\n file: string\n lang: string\n langWithRegion: string\n langName: string\n}\n\nexport async function getLicenseButtons(licenseButtonFiles: Array<LicenseButtonsFile>, langWithRegion: string, id: number, name: string) {\n let data = getDefaultButtons(langWithRegion, id, name)\n\n for (const item of licenseButtonFiles) {\n if (item.langWithRegion !== langWithRegion) {\n continue\n }\n\n try {\n const fileData = load(await readFile(item.file, \"utf-8\"), { schema: CORE_SCHEMA }) as any\n const buttonsStr =\n labelToHex(fileData.lang, item.lang, item.langWithRegion) +\n labelToHex(fileData.agree, item.lang, item.langWithRegion) +\n labelToHex(fileData.disagree, item.lang, item.langWithRegion) +\n labelToHex(fileData.print, item.lang, item.langWithRegion) +\n labelToHex(fileData.save, item.lang, item.langWithRegion) +\n labelToHex(fileData.description, item.lang, item.langWithRegion)\n\n data = `data 'STR#' (${id}, \"${name}\") {\\n`\n data += serializeString(\"0006\" + buttonsStr)\n data += `\\n};`\n\n log.debug({ lang: item.langName, data }, `overwriting license buttons`)\n\n return data\n } catch (e: any) {\n log.debug({ error: e }, \"cannot overwrite license buttons\")\n return data\n }\n }\n\n return data\n}\n\nfunction labelToHex(label: string, lang: string, langWithRegion: string) {\n const lbl = hexEncode(label, lang, langWithRegion).toString().toUpperCase()\n const len = numberToHex(lbl.length / 2)\n return len + lbl\n}\n\nfunction numberToHex(nb: number) {\n return (\"0\" + nb.toString(16)).slice(-2)\n}\n\nfunction hexEncode(str: string, lang: string, langWithRegion: string) {\n const macCodePages = getMacCodePage(lang, langWithRegion)\n let result = \"\"\n\n for (let i = 0; i < str.length; i++) {\n try {\n let hex = getMacHexCode(str, i, macCodePages)\n if (hex === undefined) {\n hex = \"3F\" //?\n }\n result += hex\n } catch (e: any) {\n log.debug({ error: e, char: str[i] }, \"cannot convert\")\n result += \"3F\" //?\n }\n }\n\n return result\n}\n\nfunction getMacCodePage(lang: string, langWithRegion: string) {\n switch (lang) {\n case \"ja\": //japanese\n return [\"euc-jp\"] //Apple Japanese\n case \"zh\": //chinese\n if (langWithRegion === \"zh_CN\") {\n return [\"gb2312\"] //Apple Simplified Chinese (GB 2312)\n }\n return [\"big5\"] //Apple Traditional Chinese (Big5)\n case \"ko\": //korean\n return [\"euc-kr\"] //Apple Korean\n case \"ar\": //arabic\n case \"ur\": //urdu\n return [\"macarabic\"] //Apple Arabic\n case \"he\": //hebrew\n return [\"machebrew\"] //Apple Hebrew\n case \"el\": //greek\n case \"elc\": //greek\n return [\"macgreek\"] //Apple Greek\n case \"ru\": //russian\n case \"be\": //belarussian\n case \"sr\": //serbian\n case \"bg\": //bulgarian\n case \"uz\": //uzbek\n return [\"maccyrillic\"] //Apple Macintosh Cyrillic\n case \"ro\": //romanian\n return [\"macromania\"] //Apple Romanian\n case \"uk\": //ukrainian\n return [\"macukraine\"] //Apple Ukrainian\n case \"th\": //thai\n return [\"macthai\"] //Apple Thai\n case \"et\": //estonian\n case \"lt\": //lithuanian\n case \"lv\": //latvian\n case \"pl\": //polish\n case \"hu\": //hungarian\n case \"cs\": //czech\n case \"sk\": //slovak\n return [\"maccenteuro\"] //Apple Macintosh Central Europe\n case \"is\": //icelandic\n case \"fo\": //faroese\n return [\"maciceland\"] //Apple Icelandic\n case \"tr\": //turkish\n return [\"macturkish\"] //Apple Turkish\n case \"hr\": //croatian\n case \"sl\": //slovenian\n return [\"maccroatian\"] //Apple Croatian\n default:\n return [\"macroman\"] //Apple Macintosh Roman\n }\n}\n\nfunction getMacHexCode(str: string, i: number, macCodePages: any) {\n const code = str.charCodeAt(i)\n if (code < 128) {\n return code.toString(16)\n } else if (code < 256) {\n return iconv.encode(str[i], \"macroman\").toString(\"hex\")\n } else {\n for (let i = 0; i < macCodePages.length; i++) {\n const result = iconv.encode(str[i], macCodePages[i]).toString(\"hex\")\n if (result !== undefined) {\n return result\n }\n }\n }\n return code\n}\n"]}
|
|
1
|
+
{"version":3,"file":"licenseButtons.js","sourceRoot":"","sources":["../src/licenseButtons.ts"],"names":[],"mappings":";;AAUA,sDASC;AAlBD,8DAAmE;AAS5D,KAAK,UAAU,qBAAqB,CAAC,QAA+B;IACzE,OAAO,IAAA,0BAAgB,EACrB,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;QAC7B,uCAAuC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAChG,CAAC,CAAC,EACF,QAAQ,CACT,CAAA;AACH,CAAC","sourcesContent":["import { PlatformPackager } from \"app-builder-lib\"\nimport { getLicenseAssets } from \"app-builder-lib/out/util/license\"\n\nexport interface LicenseButtonsFile {\n file: string\n lang: string\n langWithRegion: string\n langName: string\n}\n\nexport async function getLicenseButtonsFile(packager: PlatformPackager<any>): Promise<Array<LicenseButtonsFile>> {\n return getLicenseAssets(\n (await packager.resourceList).filter(it => {\n const name = it.toLowerCase()\n // noinspection SpellCheckingInspection\n return name.startsWith(\"licensebuttons_\") && (name.endsWith(\".json\") || name.endsWith(\".yml\"))\n }),\n packager\n )\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dmg-builder",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.14.0",
|
|
4
4
|
"main": "out/dmgUtil.js",
|
|
5
5
|
"author": "Vladimir Krivosheev",
|
|
6
6
|
"license": "MIT",
|
|
@@ -17,13 +17,9 @@
|
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"fs-extra": "^10.1.0",
|
|
20
|
-
"iconv-lite": "^0.6.2",
|
|
21
20
|
"js-yaml": "^4.1.0",
|
|
22
|
-
"app-builder-lib": "26.
|
|
23
|
-
"builder-util": "26.
|
|
24
|
-
},
|
|
25
|
-
"optionalDependencies": {
|
|
26
|
-
"dmg-license": "^1.0.11"
|
|
21
|
+
"app-builder-lib": "26.14.0",
|
|
22
|
+
"builder-util": "26.14.0"
|
|
27
23
|
},
|
|
28
24
|
"devDependencies": {
|
|
29
25
|
"@types/fs-extra": "9.0.13",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function getDefaultButtons(langWithRegion: string, id: number, name: string): string;
|
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDefaultButtons = getDefaultButtons;
|
|
4
|
-
function getDefaultButtons(langWithRegion, id, name) {
|
|
5
|
-
switch (langWithRegion) {
|
|
6
|
-
case "de_DE":
|
|
7
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
8
|
-
$"0006 0744 6575 7473 6368 0B41 6B7A 6570"
|
|
9
|
-
$"7469 6572 656E 0841 626C 6568 6E65 6E07"
|
|
10
|
-
$"4472 7563 6B65 6E0A 5369 6368 6572 6E2E"
|
|
11
|
-
$"2E2E E74B 6C69 636B 656E 2053 6965 2069"
|
|
12
|
-
$"6E20 D241 6B7A 6570 7469 6572 656E D32C"
|
|
13
|
-
$"2077 656E 6E20 5369 6520 6D69 7420 6465"
|
|
14
|
-
$"6E20 4265 7374 696D 6D75 6E67 656E 2064"
|
|
15
|
-
$"6573 2053 6F66 7477 6172 652D 4C69 7A65"
|
|
16
|
-
$"6E7A 7665 7274 7261 6773 2065 696E 7665"
|
|
17
|
-
$"7273 7461 6E64 656E 2073 696E 642E 2046"
|
|
18
|
-
$"616C 6C73 206E 6963 6874 2C20 6269 7474"
|
|
19
|
-
$"6520 D241 626C 6568 6E65 6ED3 2061 6E6B"
|
|
20
|
-
$"6C69 636B 656E 2E20 5369 6520 6B9A 6E6E"
|
|
21
|
-
$"656E 2064 6965 2053 6F66 7477 6172 6520"
|
|
22
|
-
$"6E75 7220 696E 7374 616C 6C69 6572 656E"
|
|
23
|
-
$"2C20 7765 6E6E 2053 6965 20D2 416B 7A65"
|
|
24
|
-
$"7074 6965 7265 6ED3 2061 6E67 656B 6C69"
|
|
25
|
-
$"636B 7420 6861 6265 6E2E"
|
|
26
|
-
};`;
|
|
27
|
-
case "fr_FR":
|
|
28
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
29
|
-
$"0006 0846 7261 6E8D 6169 7308 4163 6365"
|
|
30
|
-
$"7074 6572 0752 6566 7573 6572 0849 6D70"
|
|
31
|
-
$"7269 6D65 720E 456E 7265 6769 7374 7265"
|
|
32
|
-
$"722E 2E2E BA53 6920 766F 7573 2061 6363"
|
|
33
|
-
$"6570 7465 7A20 6C65 7320 7465 726D 6573"
|
|
34
|
-
$"2064 6520 6C61 2070 728E 7365 6E74 6520"
|
|
35
|
-
$"6C69 6365 6E63 652C 2063 6C69 7175 657A"
|
|
36
|
-
$"2073 7572 2022 4163 6365 7074 6572 2220"
|
|
37
|
-
$"6166 696E 2064 2769 6E73 7461 6C6C 6572"
|
|
38
|
-
$"206C 6520 6C6F 6769 6369 656C 2E20 5369"
|
|
39
|
-
$"2076 6F75 7320 6E27 9074 6573 2070 6173"
|
|
40
|
-
$"2064 2761 6363 6F72 6420 6176 6563 206C"
|
|
41
|
-
$"6573 2074 6572 6D65 7320 6465 206C 6120"
|
|
42
|
-
$"6C69 6365 6E63 652C 2063 6C69 7175 657A"
|
|
43
|
-
$"2073 7572 2022 5265 6675 7365 7222 2E"
|
|
44
|
-
};`;
|
|
45
|
-
case "fr_CA":
|
|
46
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
47
|
-
$"0006 1146 7261 6E8D 6169 7320 6361 6E61"
|
|
48
|
-
$"6469 656E 0841 6363 6570 7465 7207 5265"
|
|
49
|
-
$"6675 7365 7208 496D 7072 696D 6572 0E45"
|
|
50
|
-
$"6E72 6567 6973 7472 6572 2E2E 2EBA 5369"
|
|
51
|
-
$"2076 6F75 7320 6163 6365 7074 657A 206C"
|
|
52
|
-
$"6573 2074 6572 6D65 7320 6465 206C 6120"
|
|
53
|
-
$"7072 8E73 656E 7465 206C 6963 656E 6365"
|
|
54
|
-
$"2C20 636C 6971 7565 7A20 7375 7220 2241"
|
|
55
|
-
$"6363 6570 7465 7222 2061 6669 6E20 6427"
|
|
56
|
-
$"696E 7374 616C 6C65 7220 6C65 206C 6F67"
|
|
57
|
-
$"6963 6965 6C2E 2053 6920 766F 7573 206E"
|
|
58
|
-
$"2790 7465 7320 7061 7320 6427 6163 636F"
|
|
59
|
-
$"7264 2061 7665 6320 6C65 7320 7465 726D"
|
|
60
|
-
$"6573 2064 6520 6C61 206C 6963 656E 6365"
|
|
61
|
-
$"2C20 636C 6971 7565 7A20 7375 7220 2252"
|
|
62
|
-
$"6566 7573 6572 222E"
|
|
63
|
-
};`;
|
|
64
|
-
case "es_ES":
|
|
65
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
66
|
-
$"0006 0745 7370 6196 6F6C 0741 6365 7074"
|
|
67
|
-
$"6172 0A4E 6F20 6163 6570 7461 7208 496D"
|
|
68
|
-
$"7072 696D 6972 0A47 7561 7264 6172 2E2E"
|
|
69
|
-
$"2EC0 5369 2065 7374 8720 6465 2061 6375"
|
|
70
|
-
$"6572 646F 2063 6F6E 206C 6F73 2074 8E72"
|
|
71
|
-
$"6D69 6E6F 7320 6465 2065 7374 6120 6C69"
|
|
72
|
-
$"6365 6E63 6961 2C20 7075 6C73 6520 2241"
|
|
73
|
-
$"6365 7074 6172 2220 7061 7261 2069 6E73"
|
|
74
|
-
$"7461 6C61 7220 656C 2073 6F66 7477 6172"
|
|
75
|
-
$"652E 2045 6E20 656C 2073 7570 7565 7374"
|
|
76
|
-
$"6F20 6465 2071 7565 206E 6F20 6573 748E"
|
|
77
|
-
$"2064 6520 6163 7565 7264 6F20 636F 6E20"
|
|
78
|
-
$"6C6F 7320 748E 726D 696E 6F73 2064 6520"
|
|
79
|
-
$"6573 7461 206C 6963 656E 6369 612C 2070"
|
|
80
|
-
$"756C 7365 2022 4E6F 2061 6365 7074 6172"
|
|
81
|
-
$"2E22"
|
|
82
|
-
};`;
|
|
83
|
-
case "it_IT":
|
|
84
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
85
|
-
$"0006 0849 7461 6C69 616E 6F07 4163 6365"
|
|
86
|
-
$"7474 6F07 5269 6669 7574 6F06 5374 616D"
|
|
87
|
-
$"7061 0B52 6567 6973 7472 612E 2E2E 7F53"
|
|
88
|
-
$"6520 6163 6365 7474 6920 6C65 2063 6F6E"
|
|
89
|
-
$"6469 7A69 6F6E 6920 6469 2071 7565 7374"
|
|
90
|
-
$"6120 6C69 6365 6E7A 612C 2066 6169 2063"
|
|
91
|
-
$"6C69 6320 7375 2022 4163 6365 7474 6F22"
|
|
92
|
-
$"2070 6572 2069 6E73 7461 6C6C 6172 6520"
|
|
93
|
-
$"696C 2073 6F66 7477 6172 652E 2041 6C74"
|
|
94
|
-
$"7269 6D65 6E74 6920 6661 6920 636C 6963"
|
|
95
|
-
$"2073 7520 2252 6966 6975 746F 222E"
|
|
96
|
-
};`;
|
|
97
|
-
case "ja_JP":
|
|
98
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
99
|
-
$"0006 084A 6170 616E 6573 650A 93AF 88D3"
|
|
100
|
-
$"82B5 82DC 82B7 0C93 AF88 D382 B582 DC82"
|
|
101
|
-
$"B982 F108 88F3 8DFC 82B7 82E9 0795 DB91"
|
|
102
|
-
$"B62E 2E2E B496 7B83 5C83 7483 6783 4583"
|
|
103
|
-
$"4783 418E 6797 708B 9691 F88C 5F96 F182"
|
|
104
|
-
$"CC8F F08C 8F82 C993 AF88 D382 B382 EA82"
|
|
105
|
-
$"E98F EA8D 8782 C982 CD81 4183 5C83 7483"
|
|
106
|
-
$"6783 4583 4783 4182 F083 4383 9383 5883"
|
|
107
|
-
$"6781 5B83 8B82 B782 E982 BD82 DF82 C981"
|
|
108
|
-
$"7593 AF88 D382 B582 DC82 B781 7682 F089"
|
|
109
|
-
$"9F82 B582 C482 AD82 BE82 B382 A281 4281"
|
|
110
|
-
$"4093 AF88 D382 B382 EA82 C882 A28F EA8D"
|
|
111
|
-
$"8782 C982 CD81 4181 7593 AF88 D382 B582"
|
|
112
|
-
$"DC82 B982 F181 7682 F089 9F82 B582 C482"
|
|
113
|
-
$"AD82 BE82 B382 A281 42"
|
|
114
|
-
};`;
|
|
115
|
-
case "nl_NL":
|
|
116
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
117
|
-
$"0006 0A4E 6564 6572 6C61 6E64 7302 4A61"
|
|
118
|
-
$"034E 6565 0550 7269 6E74 0942 6577 6161"
|
|
119
|
-
$"722E 2E2E A449 6E64 6965 6E20 7520 616B"
|
|
120
|
-
$"6B6F 6F72 6420 6761 6174 206D 6574 2064"
|
|
121
|
-
$"6520 766F 6F72 7761 6172 6465 6E20 7661"
|
|
122
|
-
$"6E20 6465 7A65 206C 6963 656E 7469 652C"
|
|
123
|
-
$"206B 756E 7420 7520 6F70 2027 4A61 2720"
|
|
124
|
-
$"6B6C 696B 6B65 6E20 6F6D 2064 6520 7072"
|
|
125
|
-
$"6F67 7261 6D6D 6174 7575 7220 7465 2069"
|
|
126
|
-
$"6E73 7461 6C6C 6572 656E 2E20 496E 6469"
|
|
127
|
-
$"656E 2075 206E 6965 7420 616B 6B6F 6F72"
|
|
128
|
-
$"6420 6761 6174 2C20 6B6C 696B 7420 7520"
|
|
129
|
-
$"6F70 2027 4E65 6527 2E"
|
|
130
|
-
};`;
|
|
131
|
-
case "sv_SE":
|
|
132
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
133
|
-
$"0006 0653 7665 6E73 6B08 476F 646B 8A6E"
|
|
134
|
-
$"6E73 0641 7662 9A6A 7308 536B 7269 7620"
|
|
135
|
-
$"7574 0853 7061 7261 2E2E 2E93 4F6D 2044"
|
|
136
|
-
$"7520 676F 646B 8A6E 6E65 7220 6C69 6365"
|
|
137
|
-
$"6E73 7669 6C6C 6B6F 7265 6E20 6B6C 6963"
|
|
138
|
-
$"6B61 2070 8C20 2247 6F64 6B8A 6E6E 7322"
|
|
139
|
-
$"2066 9A72 2061 7474 2069 6E73 7461 6C6C"
|
|
140
|
-
$"6572 6120 7072 6F67 7261 6D70 726F 6475"
|
|
141
|
-
$"6B74 656E 2E20 4F6D 2044 7520 696E 7465"
|
|
142
|
-
$"2067 6F64 6B8A 6E6E 6572 206C 6963 656E"
|
|
143
|
-
$"7376 696C 6C6B 6F72 656E 2C20 6B6C 6963"
|
|
144
|
-
$"6B61 2070 8C20 2241 7662 9A6A 7322 2E"
|
|
145
|
-
};`;
|
|
146
|
-
case "br_FR":
|
|
147
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
148
|
-
$"0006 1150 6F72 7475 6775 9073 2C20 4272"
|
|
149
|
-
$"6173 696C 0943 6F6E 636F 7264 6172 0944"
|
|
150
|
-
$"6973 636F 7264 6172 0849 6D70 7269 6D69"
|
|
151
|
-
$"7209 5361 6C76 6172 2E2E 2E8C 5365 2065"
|
|
152
|
-
$"7374 8720 6465 2061 636F 7264 6F20 636F"
|
|
153
|
-
$"6D20 6F73 2074 6572 6D6F 7320 6465 7374"
|
|
154
|
-
$"6120 6C69 6365 6E8D 612C 2070 7265 7373"
|
|
155
|
-
$"696F 6E65 2022 436F 6E63 6F72 6461 7222"
|
|
156
|
-
$"2070 6172 6120 696E 7374 616C 6172 206F"
|
|
157
|
-
$"2073 6F66 7477 6172 652E 2053 6520 6E8B"
|
|
158
|
-
$"6F20 6573 7487 2064 6520 6163 6F72 646F"
|
|
159
|
-
$"2C20 7072 6573 7369 6F6E 6520 2244 6973"
|
|
160
|
-
$"636F 7264 6172 222E"
|
|
161
|
-
};`;
|
|
162
|
-
case "zh_TW":
|
|
163
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
164
|
-
$"0006 1354 7261 6469 7469 6F6E 616C 2043"
|
|
165
|
-
$"6869 6E65 7365 04A6 50B7 4E06 A4A3 A650"
|
|
166
|
-
$"B74E 04A6 43A6 4C06 C078 A673 A14B 50A6"
|
|
167
|
-
$"70AA 47B1 7AA6 50B7 4EA5 BBB3 5CA5 69C3"
|
|
168
|
-
$"D2B8 CCAA BAB1 F8B4 DAA1 41BD D0AB F6A1"
|
|
169
|
-
$"A7A6 50B7 4EA1 A8A5 48A6 77B8 CBB3 6EC5"
|
|
170
|
-
$"E9A1 43A6 70AA 47A4 A3A6 50B7 4EA1 41BD"
|
|
171
|
-
$"D0AB F6A1 A7A4 A3A6 50B7 4EA1 A8A1 43"
|
|
172
|
-
};`;
|
|
173
|
-
case "zh_CN":
|
|
174
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
175
|
-
$"0006 1253 696D 706C 6966 6965 6420 4368"
|
|
176
|
-
$"696E 6573 6504 CDAC D2E2 06B2 BBCD ACD2"
|
|
177
|
-
$"E204 B4F2 D3A1 06B4 E6B4 A2A1 AD54 C8E7"
|
|
178
|
-
$"B9FB C4FA CDAC D2E2 B1BE D0ED BFC9 D0AD"
|
|
179
|
-
$"D2E9 B5C4 CCF5 BFEE A3AC C7EB B0B4 A1B0"
|
|
180
|
-
$"CDAC D2E2 A1B1 C0B4 B0B2 D7B0 B4CB C8ED"
|
|
181
|
-
$"BCFE A1A3 C8E7 B9FB C4FA B2BB CDAC D2E2"
|
|
182
|
-
$"A3AC C7EB B0B4 A1B0 B2BB CDAC D2E2 A1B1"
|
|
183
|
-
$"A1A3"
|
|
184
|
-
};`;
|
|
185
|
-
case "da_DK":
|
|
186
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
187
|
-
$"0006 0544 616E 736B 0445 6E69 6705 5565"
|
|
188
|
-
$"6E69 6707 5564 736B 7269 760A 4172 6B69"
|
|
189
|
-
$"7665 722E 2E2E 9848 7669 7320 6475 2061"
|
|
190
|
-
$"6363 6570 7465 7265 7220 6265 7469 6E67"
|
|
191
|
-
$"656C 7365 726E 6520 6920 6C69 6365 6E73"
|
|
192
|
-
$"6166 7461 6C65 6E2C 2073 6B61 6C20 6475"
|
|
193
|
-
$"206B 6C69 6B6B 6520 708C 20D2 456E 6967"
|
|
194
|
-
$"D320 666F 7220 6174 2069 6E73 7461 6C6C"
|
|
195
|
-
$"6572 6520 736F 6674 7761 7265 6E2E 204B"
|
|
196
|
-
$"6C69 6B20 708C 20D2 5565 6E69 67D3 2066"
|
|
197
|
-
$"6F72 2061 7420 616E 6E75 6C6C 6572 6520"
|
|
198
|
-
$"696E 7374 616C 6C65 7269 6E67 656E 2E"
|
|
199
|
-
};`;
|
|
200
|
-
case "fi_FI":
|
|
201
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
202
|
-
$"0006 0553 756F 6D69 0848 7976 8A6B 7379"
|
|
203
|
-
$"6E0A 456E 2068 7976 8A6B 7379 0754 756C"
|
|
204
|
-
$"6F73 7461 0954 616C 6C65 6E6E 61C9 6F48"
|
|
205
|
-
$"7976 8A6B 7379 206C 6973 656E 7373 6973"
|
|
206
|
-
$"6F70 696D 756B 7365 6E20 6568 646F 7420"
|
|
207
|
-
$"6F73 6F69 7474 616D 616C 6C61 20D5 4879"
|
|
208
|
-
$"768A 6B73 79D5 2E20 4A6F 7320 6574 2068"
|
|
209
|
-
$"7976 8A6B 7379 2073 6F70 696D 756B 7365"
|
|
210
|
-
$"6E20 6568 746F 6A61 2C20 6F73 6F69 7461"
|
|
211
|
-
$"20D5 456E 2068 7976 8A6B 7379 D52E"
|
|
212
|
-
};`;
|
|
213
|
-
case "ko_KR":
|
|
214
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
215
|
-
$"0006 064B 6F72 6561 6E04 B5BF C0C7 09B5"
|
|
216
|
-
$"BFC0 C720 BEC8 C7D4 06C7 C1B8 B0C6 AE07"
|
|
217
|
-
$"C0FA C0E5 2E2E 2E7E BBE7 BFEB 20B0 E8BE"
|
|
218
|
-
$"E0BC ADC0 C720 B3BB BFEB BFA1 20B5 BFC0"
|
|
219
|
-
$"C7C7 CFB8 E92C 2022 B5BF C0C7 2220 B4DC"
|
|
220
|
-
$"C3DF B8A6 20B4 ADB7 AF20 BCD2 C7C1 C6AE"
|
|
221
|
-
$"BFFE BEEE B8A6 20BC B3C4 A1C7 CFBD CABD"
|
|
222
|
-
$"C3BF C02E 20B5 BFC0 C7C7 CFC1 F620 BECA"
|
|
223
|
-
$"B4C2 B4D9 B8E9 2C20 22B5 BFC0 C720 BEC8"
|
|
224
|
-
$"C7D4 2220 B4DC C3DF B8A6 20B4 A9B8 A3BD"
|
|
225
|
-
$"CABD C3BF C02E"
|
|
226
|
-
};`;
|
|
227
|
-
case "nb_NO":
|
|
228
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
229
|
-
$"0006 054E 6F72 736B 0445 6E69 6709 496B"
|
|
230
|
-
$"6B65 2065 6E69 6708 536B 7269 7620 7574"
|
|
231
|
-
$"0A41 726B 6976 6572 2E2E 2EA3 4876 6973"
|
|
232
|
-
$"2044 6520 6572 2065 6E69 6720 6920 6265"
|
|
233
|
-
$"7374 656D 6D65 6C73 656E 6520 6920 6465"
|
|
234
|
-
$"6E6E 6520 6C69 7365 6E73 6176 7461 6C65"
|
|
235
|
-
$"6E2C 206B 6C69 6B6B 6572 2044 6520 708C"
|
|
236
|
-
$"2022 456E 6967 222D 6B6E 6170 7065 6E20"
|
|
237
|
-
$"666F 7220 8C20 696E 7374 616C 6C65 7265"
|
|
238
|
-
$"2070 726F 6772 616D 7661 7265 6E2E 2048"
|
|
239
|
-
$"7669 7320 4465 2069 6B6B 6520 6572 2065"
|
|
240
|
-
$"6E69 672C 206B 6C69 6B6B 6572 2044 6520"
|
|
241
|
-
$"708C 2022 496B 6B65 2065 6E69 6722 2E"
|
|
242
|
-
};`;
|
|
243
|
-
default:
|
|
244
|
-
// en_US
|
|
245
|
-
return `data 'STR#' (${id}, "${name}") {
|
|
246
|
-
$"0006 0745 6E67 6C69 7368 0541 6772 6565"
|
|
247
|
-
$"0844 6973 6167 7265 6505 5072 696E 7407"
|
|
248
|
-
$"5361 7665 2E2E 2E7A 4966 2079 6F75 2061"
|
|
249
|
-
$"6772 6565 2077 6974 6820 7468 6520 7465"
|
|
250
|
-
$"726D 7320 6F66 2074 6869 7320 6C69 6365"
|
|
251
|
-
$"6E73 652C 2070 7265 7373 20D2 4167 7265"
|
|
252
|
-
$"65D3 2074 6F20 696E 7374 616C 6C20 7468"
|
|
253
|
-
$"6520 736F 6674 7761 7265 2E20 4966 2079"
|
|
254
|
-
$"6F75 2064 6F20 6E6F 7420 6167 7265 652C"
|
|
255
|
-
$"2070 7265 7373 20D2 4469 7361 6772 6565"
|
|
256
|
-
$"D32E"
|
|
257
|
-
};`;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
//# sourceMappingURL=licenseDefaultButtons.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"licenseDefaultButtons.js","sourceRoot":"","sources":["../src/licenseDefaultButtons.ts"],"names":[],"mappings":";;AAAA,8CA8QC;AA9QD,SAAgB,iBAAiB,CAAC,cAAsB,EAAE,EAAU,EAAE,IAAY;IAChF,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;;;;;;GAmBtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;;;GAgBtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;;;;GAiBtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;;;;GAiBtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;GAYtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;;;GAgBtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;GActC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;GAatC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;GActC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;GAStC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;GAUtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;GAatC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;GAWtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;GAYtC,CAAA;QAEC,KAAK,OAAO;YACV,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;;;GActC,CAAA;QAEC;YACE,QAAQ;YACR,OAAO,gBAAgB,EAAE,MAAM,IAAI;;;;;;;;;;;;GAYtC,CAAA;IACD,CAAC;AACH,CAAC","sourcesContent":["export function getDefaultButtons(langWithRegion: string, id: number, name: string) {\n switch (langWithRegion) {\n case \"de_DE\":\n return `data 'STR#' (${id}, \"${name}\") {\n $\"0006 0744 6575 7473 6368 0B41 6B7A 6570\"\n $\"7469 6572 656E 0841 626C 6568 6E65 6E07\"\n $\"4472 7563 6B65 6E0A 5369 6368 6572 6E2E\"\n $\"2E2E E74B 6C69 636B 656E 2053 6965 2069\"\n $\"6E20 D241 6B7A 6570 7469 6572 656E D32C\"\n $\"2077 656E 6E20 5369 6520 6D69 7420 6465\"\n $\"6E20 4265 7374 696D 6D75 6E67 656E 2064\"\n $\"6573 2053 6F66 7477 6172 652D 4C69 7A65\"\n $\"6E7A 7665 7274 7261 6773 2065 696E 7665\"\n $\"7273 7461 6E64 656E 2073 696E 642E 2046\"\n $\"616C 6C73 206E 6963 6874 2C20 6269 7474\"\n $\"6520 D241 626C 6568 6E65 6ED3 2061 6E6B\"\n $\"6C69 636B 656E 2E20 5369 6520 6B9A 6E6E\"\n $\"656E 2064 6965 2053 6F66 7477 6172 6520\"\n $\"6E75 7220 696E 7374 616C 6C69 6572 656E\"\n $\"2C20 7765 6E6E 2053 6965 20D2 416B 7A65\"\n $\"7074 6965 7265 6ED3 2061 6E67 656B 6C69\"\n $\"636B 7420 6861 6265 6E2E\"\n};`\n\n case \"fr_FR\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0846 7261 6E8D 6169 7308 4163 6365\"\n\t$\"7074 6572 0752 6566 7573 6572 0849 6D70\"\n\t$\"7269 6D65 720E 456E 7265 6769 7374 7265\"\n\t$\"722E 2E2E BA53 6920 766F 7573 2061 6363\"\n\t$\"6570 7465 7A20 6C65 7320 7465 726D 6573\"\n\t$\"2064 6520 6C61 2070 728E 7365 6E74 6520\"\n\t$\"6C69 6365 6E63 652C 2063 6C69 7175 657A\"\n\t$\"2073 7572 2022 4163 6365 7074 6572 2220\"\n\t$\"6166 696E 2064 2769 6E73 7461 6C6C 6572\"\n\t$\"206C 6520 6C6F 6769 6369 656C 2E20 5369\"\n\t$\"2076 6F75 7320 6E27 9074 6573 2070 6173\"\n\t$\"2064 2761 6363 6F72 6420 6176 6563 206C\"\n\t$\"6573 2074 6572 6D65 7320 6465 206C 6120\"\n\t$\"6C69 6365 6E63 652C 2063 6C69 7175 657A\"\n\t$\"2073 7572 2022 5265 6675 7365 7222 2E\"\n};`\n\n case \"fr_CA\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 1146 7261 6E8D 6169 7320 6361 6E61\"\n\t$\"6469 656E 0841 6363 6570 7465 7207 5265\"\n\t$\"6675 7365 7208 496D 7072 696D 6572 0E45\"\n\t$\"6E72 6567 6973 7472 6572 2E2E 2EBA 5369\"\n\t$\"2076 6F75 7320 6163 6365 7074 657A 206C\"\n\t$\"6573 2074 6572 6D65 7320 6465 206C 6120\"\n\t$\"7072 8E73 656E 7465 206C 6963 656E 6365\"\n\t$\"2C20 636C 6971 7565 7A20 7375 7220 2241\"\n\t$\"6363 6570 7465 7222 2061 6669 6E20 6427\"\n\t$\"696E 7374 616C 6C65 7220 6C65 206C 6F67\"\n\t$\"6963 6965 6C2E 2053 6920 766F 7573 206E\"\n\t$\"2790 7465 7320 7061 7320 6427 6163 636F\"\n\t$\"7264 2061 7665 6320 6C65 7320 7465 726D\"\n\t$\"6573 2064 6520 6C61 206C 6963 656E 6365\"\n\t$\"2C20 636C 6971 7565 7A20 7375 7220 2252\"\n\t$\"6566 7573 6572 222E\"\n};`\n\n case \"es_ES\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0745 7370 6196 6F6C 0741 6365 7074\"\n\t$\"6172 0A4E 6F20 6163 6570 7461 7208 496D\"\n\t$\"7072 696D 6972 0A47 7561 7264 6172 2E2E\"\n\t$\"2EC0 5369 2065 7374 8720 6465 2061 6375\"\n\t$\"6572 646F 2063 6F6E 206C 6F73 2074 8E72\"\n\t$\"6D69 6E6F 7320 6465 2065 7374 6120 6C69\"\n\t$\"6365 6E63 6961 2C20 7075 6C73 6520 2241\"\n\t$\"6365 7074 6172 2220 7061 7261 2069 6E73\"\n\t$\"7461 6C61 7220 656C 2073 6F66 7477 6172\"\n\t$\"652E 2045 6E20 656C 2073 7570 7565 7374\"\n\t$\"6F20 6465 2071 7565 206E 6F20 6573 748E\"\n\t$\"2064 6520 6163 7565 7264 6F20 636F 6E20\"\n\t$\"6C6F 7320 748E 726D 696E 6F73 2064 6520\"\n\t$\"6573 7461 206C 6963 656E 6369 612C 2070\"\n\t$\"756C 7365 2022 4E6F 2061 6365 7074 6172\"\n\t$\"2E22\"\n};`\n\n case \"it_IT\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0849 7461 6C69 616E 6F07 4163 6365\"\n\t$\"7474 6F07 5269 6669 7574 6F06 5374 616D\"\n\t$\"7061 0B52 6567 6973 7472 612E 2E2E 7F53\"\n\t$\"6520 6163 6365 7474 6920 6C65 2063 6F6E\"\n\t$\"6469 7A69 6F6E 6920 6469 2071 7565 7374\"\n\t$\"6120 6C69 6365 6E7A 612C 2066 6169 2063\"\n\t$\"6C69 6320 7375 2022 4163 6365 7474 6F22\"\n\t$\"2070 6572 2069 6E73 7461 6C6C 6172 6520\"\n\t$\"696C 2073 6F66 7477 6172 652E 2041 6C74\"\n\t$\"7269 6D65 6E74 6920 6661 6920 636C 6963\"\n\t$\"2073 7520 2252 6966 6975 746F 222E\"\n};`\n\n case \"ja_JP\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 084A 6170 616E 6573 650A 93AF 88D3\"\n\t$\"82B5 82DC 82B7 0C93 AF88 D382 B582 DC82\"\n\t$\"B982 F108 88F3 8DFC 82B7 82E9 0795 DB91\"\n\t$\"B62E 2E2E B496 7B83 5C83 7483 6783 4583\"\n\t$\"4783 418E 6797 708B 9691 F88C 5F96 F182\"\n\t$\"CC8F F08C 8F82 C993 AF88 D382 B382 EA82\"\n\t$\"E98F EA8D 8782 C982 CD81 4183 5C83 7483\"\n\t$\"6783 4583 4783 4182 F083 4383 9383 5883\"\n\t$\"6781 5B83 8B82 B782 E982 BD82 DF82 C981\"\n\t$\"7593 AF88 D382 B582 DC82 B781 7682 F089\"\n\t$\"9F82 B582 C482 AD82 BE82 B382 A281 4281\"\n\t$\"4093 AF88 D382 B382 EA82 C882 A28F EA8D\"\n\t$\"8782 C982 CD81 4181 7593 AF88 D382 B582\"\n\t$\"DC82 B982 F181 7682 F089 9F82 B582 C482\"\n\t$\"AD82 BE82 B382 A281 42\"\n};`\n\n case \"nl_NL\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0A4E 6564 6572 6C61 6E64 7302 4A61\"\n\t$\"034E 6565 0550 7269 6E74 0942 6577 6161\"\n\t$\"722E 2E2E A449 6E64 6965 6E20 7520 616B\"\n\t$\"6B6F 6F72 6420 6761 6174 206D 6574 2064\"\n\t$\"6520 766F 6F72 7761 6172 6465 6E20 7661\"\n\t$\"6E20 6465 7A65 206C 6963 656E 7469 652C\"\n\t$\"206B 756E 7420 7520 6F70 2027 4A61 2720\"\n\t$\"6B6C 696B 6B65 6E20 6F6D 2064 6520 7072\"\n\t$\"6F67 7261 6D6D 6174 7575 7220 7465 2069\"\n\t$\"6E73 7461 6C6C 6572 656E 2E20 496E 6469\"\n\t$\"656E 2075 206E 6965 7420 616B 6B6F 6F72\"\n\t$\"6420 6761 6174 2C20 6B6C 696B 7420 7520\"\n\t$\"6F70 2027 4E65 6527 2E\"\n};`\n\n case \"sv_SE\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0653 7665 6E73 6B08 476F 646B 8A6E\"\n\t$\"6E73 0641 7662 9A6A 7308 536B 7269 7620\"\n\t$\"7574 0853 7061 7261 2E2E 2E93 4F6D 2044\"\n\t$\"7520 676F 646B 8A6E 6E65 7220 6C69 6365\"\n\t$\"6E73 7669 6C6C 6B6F 7265 6E20 6B6C 6963\"\n\t$\"6B61 2070 8C20 2247 6F64 6B8A 6E6E 7322\"\n\t$\"2066 9A72 2061 7474 2069 6E73 7461 6C6C\"\n\t$\"6572 6120 7072 6F67 7261 6D70 726F 6475\"\n\t$\"6B74 656E 2E20 4F6D 2044 7520 696E 7465\"\n\t$\"2067 6F64 6B8A 6E6E 6572 206C 6963 656E\"\n\t$\"7376 696C 6C6B 6F72 656E 2C20 6B6C 6963\"\n\t$\"6B61 2070 8C20 2241 7662 9A6A 7322 2E\"\n};`\n\n case \"br_FR\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 1150 6F72 7475 6775 9073 2C20 4272\"\n\t$\"6173 696C 0943 6F6E 636F 7264 6172 0944\"\n\t$\"6973 636F 7264 6172 0849 6D70 7269 6D69\"\n\t$\"7209 5361 6C76 6172 2E2E 2E8C 5365 2065\"\n\t$\"7374 8720 6465 2061 636F 7264 6F20 636F\"\n\t$\"6D20 6F73 2074 6572 6D6F 7320 6465 7374\"\n\t$\"6120 6C69 6365 6E8D 612C 2070 7265 7373\"\n\t$\"696F 6E65 2022 436F 6E63 6F72 6461 7222\"\n\t$\"2070 6172 6120 696E 7374 616C 6172 206F\"\n\t$\"2073 6F66 7477 6172 652E 2053 6520 6E8B\"\n\t$\"6F20 6573 7487 2064 6520 6163 6F72 646F\"\n\t$\"2C20 7072 6573 7369 6F6E 6520 2244 6973\"\n\t$\"636F 7264 6172 222E\"\n};`\n\n case \"zh_TW\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 1354 7261 6469 7469 6F6E 616C 2043\"\n\t$\"6869 6E65 7365 04A6 50B7 4E06 A4A3 A650\"\n\t$\"B74E 04A6 43A6 4C06 C078 A673 A14B 50A6\"\n\t$\"70AA 47B1 7AA6 50B7 4EA5 BBB3 5CA5 69C3\"\n\t$\"D2B8 CCAA BAB1 F8B4 DAA1 41BD D0AB F6A1\"\n\t$\"A7A6 50B7 4EA1 A8A5 48A6 77B8 CBB3 6EC5\"\n\t$\"E9A1 43A6 70AA 47A4 A3A6 50B7 4EA1 41BD\"\n\t$\"D0AB F6A1 A7A4 A3A6 50B7 4EA1 A8A1 43\"\n};`\n\n case \"zh_CN\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 1253 696D 706C 6966 6965 6420 4368\"\n\t$\"696E 6573 6504 CDAC D2E2 06B2 BBCD ACD2\"\n\t$\"E204 B4F2 D3A1 06B4 E6B4 A2A1 AD54 C8E7\"\n\t$\"B9FB C4FA CDAC D2E2 B1BE D0ED BFC9 D0AD\"\n\t$\"D2E9 B5C4 CCF5 BFEE A3AC C7EB B0B4 A1B0\"\n\t$\"CDAC D2E2 A1B1 C0B4 B0B2 D7B0 B4CB C8ED\"\n\t$\"BCFE A1A3 C8E7 B9FB C4FA B2BB CDAC D2E2\"\n\t$\"A3AC C7EB B0B4 A1B0 B2BB CDAC D2E2 A1B1\"\n\t$\"A1A3\"\n};`\n\n case \"da_DK\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0544 616E 736B 0445 6E69 6705 5565\"\n\t$\"6E69 6707 5564 736B 7269 760A 4172 6B69\"\n\t$\"7665 722E 2E2E 9848 7669 7320 6475 2061\"\n\t$\"6363 6570 7465 7265 7220 6265 7469 6E67\"\n\t$\"656C 7365 726E 6520 6920 6C69 6365 6E73\"\n\t$\"6166 7461 6C65 6E2C 2073 6B61 6C20 6475\"\n\t$\"206B 6C69 6B6B 6520 708C 20D2 456E 6967\"\n\t$\"D320 666F 7220 6174 2069 6E73 7461 6C6C\"\n\t$\"6572 6520 736F 6674 7761 7265 6E2E 204B\"\n\t$\"6C69 6B20 708C 20D2 5565 6E69 67D3 2066\"\n\t$\"6F72 2061 7420 616E 6E75 6C6C 6572 6520\"\n\t$\"696E 7374 616C 6C65 7269 6E67 656E 2E\"\n};`\n\n case \"fi_FI\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0553 756F 6D69 0848 7976 8A6B 7379\"\n\t$\"6E0A 456E 2068 7976 8A6B 7379 0754 756C\"\n\t$\"6F73 7461 0954 616C 6C65 6E6E 61C9 6F48\"\n\t$\"7976 8A6B 7379 206C 6973 656E 7373 6973\"\n\t$\"6F70 696D 756B 7365 6E20 6568 646F 7420\"\n\t$\"6F73 6F69 7474 616D 616C 6C61 20D5 4879\"\n\t$\"768A 6B73 79D5 2E20 4A6F 7320 6574 2068\"\n\t$\"7976 8A6B 7379 2073 6F70 696D 756B 7365\"\n\t$\"6E20 6568 746F 6A61 2C20 6F73 6F69 7461\"\n\t$\"20D5 456E 2068 7976 8A6B 7379 D52E\"\n};`\n\n case \"ko_KR\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 064B 6F72 6561 6E04 B5BF C0C7 09B5\"\n\t$\"BFC0 C720 BEC8 C7D4 06C7 C1B8 B0C6 AE07\"\n\t$\"C0FA C0E5 2E2E 2E7E BBE7 BFEB 20B0 E8BE\"\n\t$\"E0BC ADC0 C720 B3BB BFEB BFA1 20B5 BFC0\"\n\t$\"C7C7 CFB8 E92C 2022 B5BF C0C7 2220 B4DC\"\n\t$\"C3DF B8A6 20B4 ADB7 AF20 BCD2 C7C1 C6AE\"\n\t$\"BFFE BEEE B8A6 20BC B3C4 A1C7 CFBD CABD\"\n\t$\"C3BF C02E 20B5 BFC0 C7C7 CFC1 F620 BECA\"\n\t$\"B4C2 B4D9 B8E9 2C20 22B5 BFC0 C720 BEC8\"\n\t$\"C7D4 2220 B4DC C3DF B8A6 20B4 A9B8 A3BD\"\n\t$\"CABD C3BF C02E\"\n};`\n\n case \"nb_NO\":\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 054E 6F72 736B 0445 6E69 6709 496B\"\n\t$\"6B65 2065 6E69 6708 536B 7269 7620 7574\"\n\t$\"0A41 726B 6976 6572 2E2E 2EA3 4876 6973\"\n\t$\"2044 6520 6572 2065 6E69 6720 6920 6265\"\n\t$\"7374 656D 6D65 6C73 656E 6520 6920 6465\"\n\t$\"6E6E 6520 6C69 7365 6E73 6176 7461 6C65\"\n\t$\"6E2C 206B 6C69 6B6B 6572 2044 6520 708C\"\n\t$\"2022 456E 6967 222D 6B6E 6170 7065 6E20\"\n\t$\"666F 7220 8C20 696E 7374 616C 6C65 7265\"\n\t$\"2070 726F 6772 616D 7661 7265 6E2E 2048\"\n\t$\"7669 7320 4465 2069 6B6B 6520 6572 2065\"\n\t$\"6E69 672C 206B 6C69 6B6B 6572 2044 6520\"\n\t$\"708C 2022 496B 6B65 2065 6E69 6722 2E\"\n};`\n\n default:\n // en_US\n return `data 'STR#' (${id}, \"${name}\") {\n\t$\"0006 0745 6E67 6C69 7368 0541 6772 6565\"\n\t$\"0844 6973 6167 7265 6505 5072 696E 7407\"\n\t$\"5361 7665 2E2E 2E7A 4966 2079 6F75 2061\"\n\t$\"6772 6565 2077 6974 6820 7468 6520 7465\"\n\t$\"726D 7320 6F66 2074 6869 7320 6C69 6365\"\n\t$\"6E73 652C 2070 7265 7373 20D2 4167 7265\"\n\t$\"65D3 2074 6F20 696E 7374 616C 6C20 7468\"\n\t$\"6520 736F 6674 7761 7265 2E20 4966 2079\"\n\t$\"6F75 2064 6F20 6E6F 7420 6167 7265 652C\"\n\t$\"2070 7265 7373 20D2 4469 7361 6772 6565\"\n\t$\"D32E\"\n};`\n }\n}\n"]}
|