{"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"]}