electron-builder 27.0.0-alpha.4 → 27.0.0-alpha.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjH,OAAO,EAAY,IAAI,EAAkB,MAAM,cAAc,CAAA;AAG7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,wBAAgB,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQjD;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe,EAAE,cAAc;CAAG;AAExE,MAAM,WAAW,UAAW,SAAQ,eAAe,EAAE,cAAc;IACjE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,eAAe;AACf,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAmJ/D;AAiBD,eAAe;AACf,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAK1C;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAa7I;AAED,wBAAgB,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAiFnE"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAEjH,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAA;AAGnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,wBAAgB,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAQjD;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe,EAAE,cAAc;CAAG;AAExE,MAAM,WAAW,UAAW,SAAQ,eAAe,EAAE,cAAc;IACjE,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,eAAe;AACf,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAiI/D;AAiBD,eAAe;AACf,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAK1C;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAa7I;AAED,wBAAgB,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAGrE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAiFnE"}
package/dist/builder.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { build as _build, DIR_TARGET, Packager, Platform } from "app-builder-lib";
2
- import { addValue, Arch, archFromString } from "builder-util";
2
+ import { addTargetsForPlatform } from "app-builder-lib/internal";
3
+ import { Arch, archFromString } from "builder-util";
3
4
  import { deepAssign } from "builder-util-runtime";
4
5
  import chalk from "chalk";
5
6
  import { hideBin } from "yargs/helpers";
@@ -39,29 +40,12 @@ export function normalizeOptions(args) {
39
40
  }
40
41
  return result.length === 0 && currentIfNotSpecified ? [archFromString(process.arch)] : result;
41
42
  }
42
- let archToType = targets.get(platform);
43
- if (archToType == null) {
44
- archToType = new Map();
45
- targets.set(platform, archToType);
46
- }
47
- if (types.length === 0) {
43
+ addTargetsForPlatform(targets, platform, types, commonArch, archToType => {
48
44
  const defaultTargetValue = args.dir ? [DIR_TARGET] : [];
49
45
  for (const arch of commonArch(args.dir === true)) {
50
46
  archToType.set(arch, defaultTargetValue);
51
47
  }
52
- return;
53
- }
54
- for (const type of types) {
55
- const suffixPos = type.lastIndexOf(":");
56
- if (suffixPos > 0) {
57
- addValue(archToType, archFromString(type.substring(suffixPos + 1)), type.substring(0, suffixPos));
58
- }
59
- else {
60
- for (const arch of commonArch(true)) {
61
- addValue(archToType, arch, type);
62
- }
63
- }
64
- }
48
+ });
65
49
  }
66
50
  if (args.mac != null) {
67
51
  processTargets(Platform.MAC, args.mac);
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { build as _build, Configuration, DIR_TARGET, Packager, PackagerOptions, Platform } from \"app-builder-lib\"\nimport { addValue, Arch, archFromString } from \"builder-util\"\nimport { deepAssign } from \"builder-util-runtime\"\nimport chalk from \"chalk\"\nimport type { PublishOptions } from \"electron-publish\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\n\nexport function createYargs(): yargs.Argv<unknown> {\n // In ESM, yargs.default is the factory function; call it to create an instance.\n // In CJS, yargs.default is already an Argv singleton.\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return (instance as unknown as yargs.Argv<unknown>).parserConfiguration({\n \"camel-case-expansion\": false,\n })\n}\n\nexport interface BuildOptions extends PackagerOptions, PublishOptions {}\n\nexport interface CliOptions extends PackagerOptions, PublishOptions {\n x64?: boolean\n ia32?: boolean\n armv7l?: boolean\n arm64?: boolean\n universal?: boolean\n\n dir?: boolean\n}\n\n/** @private */\nexport function normalizeOptions(args: CliOptions): BuildOptions {\n if (args.targets != null) {\n return args\n }\n\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n\n function processTargets(platform: Platform, types: Array<string>) {\n function commonArch(currentIfNotSpecified: boolean): Array<Arch> {\n const result = Array<Arch>()\n if (args.x64) {\n result.push(Arch.x64)\n }\n if (args.armv7l) {\n result.push(Arch.armv7l)\n }\n if (args.arm64) {\n result.push(Arch.arm64)\n }\n if (args.ia32) {\n result.push(Arch.ia32)\n }\n if (args.universal) {\n result.push(Arch.universal)\n }\n\n return result.length === 0 && currentIfNotSpecified ? [archFromString(process.arch)] : result\n }\n\n let archToType = targets.get(platform)\n if (archToType == null) {\n archToType = new Map<Arch, Array<string>>()\n targets.set(platform, archToType)\n }\n\n if (types.length === 0) {\n const defaultTargetValue = args.dir ? [DIR_TARGET] : []\n for (const arch of commonArch(args.dir === true)) {\n archToType.set(arch, defaultTargetValue)\n }\n return\n }\n\n for (const type of types) {\n const suffixPos = type.lastIndexOf(\":\")\n if (suffixPos > 0) {\n addValue(archToType, archFromString(type.substring(suffixPos + 1)), type.substring(0, suffixPos))\n } else {\n for (const arch of commonArch(true)) {\n addValue(archToType, arch, type)\n }\n }\n }\n }\n\n if (args.mac != null) {\n processTargets(Platform.MAC, args.mac)\n }\n\n if (args.linux != null) {\n processTargets(Platform.LINUX, args.linux)\n }\n\n if (args.win != null) {\n processTargets(Platform.WINDOWS, args.win)\n }\n\n if (targets.size === 0) {\n processTargets(Platform.current(), [])\n }\n\n const result: any = { ...args }\n result.targets = targets\n\n delete result.dir\n delete result.mac\n delete result.linux\n delete result.win\n\n const r = result\n delete r.m\n delete r.o\n delete r.l\n delete r.w\n delete r.windows\n delete r.macos\n delete r.$0\n delete r._\n delete r.version\n delete r.help\n delete r.c\n delete r.p\n delete r.pd\n\n delete result.ia32\n delete result.x64\n delete result.armv7l\n delete result.arm64\n delete result.universal\n\n let config = result.config\n\n // config is array when combining dot-notation values with a config file value\n // https://github.com/electron-userland/electron-builder/issues/2016\n if (Array.isArray(config)) {\n const newConfig: Configuration = {}\n for (const configItem of config) {\n if (typeof configItem === \"object\") {\n deepAssign(newConfig, configItem)\n } else if (typeof configItem === \"string\") {\n newConfig.extends = configItem\n }\n }\n\n config = newConfig\n result.config = newConfig\n }\n\n // AJV cannot coerce \"null\" string to null if string is also allowed (because null string is a valid value)\n if (config != null && typeof config !== \"string\") {\n if (config.extraMetadata != null) {\n coerceTypes(config.extraMetadata)\n }\n\n // mac.sign / mac.universal are nested option bags holding booleans and the signing identity\n // (e.g. sign.identity, sign.hardenedRuntime, universal.mergeASARs). coerceValue recurses into the\n // objects (so `-c.mac.sign.identity=null` disables code signing) and also handles `-c.mac.sign=null`.\n if (config.mac != null) {\n coerceValue(config.mac, \"sign\")\n coerceValue(config.mac, \"universal\")\n }\n\n // fix Boolean type by coerceTypes\n if (config.nsis != null) {\n coerceTypes(config.nsis)\n }\n if (config.nsisWeb != null) {\n coerceTypes(config.nsisWeb)\n }\n }\n\n if (\"project\" in r && !(\"projectDir\" in result)) {\n result.projectDir = r.project\n }\n delete r.project\n\n return result as BuildOptions\n}\n\nfunction coerceValue(host: any, key: string): void {\n const value = host[key]\n if (value === \"true\") {\n host[key] = true\n } else if (value === \"false\") {\n host[key] = false\n } else if (value === \"null\") {\n host[key] = null\n } else if (key === \"version\" && typeof value === \"number\") {\n host[key] = value.toString()\n } else if (value != null && typeof value === \"object\") {\n coerceTypes(value)\n }\n}\n\n/** @private */\nexport function coerceTypes(host: any): any {\n for (const key of Object.getOwnPropertyNames(host)) {\n coerceValue(host, key)\n }\n return host\n}\n\nexport function createTargets(platforms: Array<Platform>, type?: string | null, arch?: string | null): Map<Platform, Map<Arch, Array<string>>> {\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n for (const platform of platforms) {\n const archs =\n arch === \"all\" ? (platform === Platform.MAC ? [Arch.x64, Arch.arm64, Arch.universal] : [Arch.x64, Arch.ia32]) : [archFromString(arch == null ? process.arch : arch)]\n const archToType = new Map<Arch, Array<string>>()\n targets.set(platform, archToType)\n\n for (const arch of archs) {\n archToType.set(arch, type == null ? [] : [type])\n }\n }\n return targets\n}\n\nexport function build(rawOptions?: CliOptions): Promise<Array<string>> {\n const buildOptions = normalizeOptions(rawOptions || {})\n return _build(buildOptions, new Packager(buildOptions))\n}\n\n/**\n * @private\n */\nexport function configureBuildCommand(yargs: yargs.Argv): yargs.Argv {\n const publishGroup = \"Publishing:\"\n const buildGroup = \"Building:\"\n return yargs\n .option(\"mac\", {\n group: buildGroup,\n alias: [\"m\", \"o\", \"macos\"],\n description: `Build for macOS, accepts target list (see ${chalk.underline(\"https://www.electron.build/mac\")}).`,\n type: \"array\",\n })\n .option(\"linux\", {\n group: buildGroup,\n alias: \"l\",\n description: `Build for Linux, accepts target list (see ${chalk.underline(\"https://www.electron.build/linux\")})`,\n type: \"array\",\n })\n .option(\"win\", {\n group: buildGroup,\n alias: [\"w\", \"windows\"],\n description: `Build for Windows, accepts target list (see ${chalk.underline(\"https://www.electron.build/win\")})`,\n type: \"array\",\n })\n .option(\"x64\", {\n group: buildGroup,\n description: \"Build for x64\",\n type: \"boolean\",\n })\n .option(\"ia32\", {\n group: buildGroup,\n description: \"Build for ia32\",\n type: \"boolean\",\n })\n .option(\"armv7l\", {\n group: buildGroup,\n description: \"Build for armv7l\",\n type: \"boolean\",\n })\n .option(\"arm64\", {\n group: buildGroup,\n description: \"Build for arm64\",\n type: \"boolean\",\n })\n .option(\"universal\", {\n group: buildGroup,\n description: \"Build for universal\",\n type: \"boolean\",\n })\n .option(\"dir\", {\n group: buildGroup,\n description: \"Build unpacked dir. Useful to test.\",\n type: \"boolean\",\n })\n .option(\"publish\", {\n group: publishGroup,\n alias: \"p\",\n description: `Publish artifacts, see ${chalk.underline(\"https://www.electron.build/publish\")}`,\n choices: [\"onTag\", \"onTagOrDraft\", \"always\", \"never\", undefined as any],\n })\n .option(\"prepackaged\", {\n alias: [\"pd\"],\n group: buildGroup,\n description: \"The path to prepackaged app (to pack in a distributable format)\",\n })\n .option(\"projectDir\", {\n alias: [\"project\"],\n group: buildGroup,\n description: \"The path to project directory. Defaults to current working directory.\",\n })\n .option(\"config\", {\n alias: [\"c\"],\n group: buildGroup,\n description:\n \"The path to an electron-builder config. Defaults to `electron-builder.yml` (or `json`, or `json5`, or `js`, or `ts`), see \" +\n chalk.underline(\"https://www.electron.build/configuration\"),\n })\n .group([\"help\", \"version\"], \"Other:\")\n .example(\"electron-builder -mwl\", \"build for macOS, Windows and Linux\")\n .example(\"electron-builder --linux deb tar.xz\", \"build deb and tar.xz for Linux\")\n .example(\"electron-builder --win --ia32\", \"build for Windows ia32\")\n .example(\"electron-builder -c.extraMetadata.foo=bar\", \"set package.json property `foo` to `bar`\")\n .example(\"electron-builder --config.nsis.unicode=false\", \"configure unicode options for NSIS\")\n}\n"]}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,MAAM,EAAiB,UAAU,EAAE,QAAQ,EAAmB,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,UAAU,WAAW;IACzB,gFAAgF;IAChF,sDAAsD;IACtD,MAAM,OAAO,GAAI,KAAa,CAAC,OAAO,IAAI,KAAK,CAAA;IAC/C,MAAM,QAAQ,GAAG,OAAO,OAAO,EAAE,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9G,OAAQ,QAA2C,CAAC,mBAAmB,CAAC;QACtE,sBAAsB,EAAE,KAAK;KAC9B,CAAC,CAAA;AACJ,CAAC;AAcD,eAAe;AACf,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsC,CAAA;IAE7D,SAAS,cAAc,CAAC,QAAkB,EAAE,KAAoB;QAC9D,SAAS,UAAU,CAAC,qBAA8B;YAChD,MAAM,MAAM,GAAG,KAAK,EAAQ,CAAA;YAC5B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC1B,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzB,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC7B,CAAC;YAED,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAC/F,CAAC;QAED,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE;YACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACvD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;gBACjD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACvB,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,MAAM,GAAQ,EAAE,GAAG,IAAI,EAAE,CAAA;IAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IAExB,OAAO,MAAM,CAAC,GAAG,CAAA;IACjB,OAAO,MAAM,CAAC,GAAG,CAAA;IACjB,OAAO,MAAM,CAAC,KAAK,CAAA;IACnB,OAAO,MAAM,CAAC,GAAG,CAAA;IAEjB,MAAM,CAAC,GAAG,MAAM,CAAA;IAChB,OAAO,CAAC,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,CAAC,OAAO,CAAA;IAChB,OAAO,CAAC,CAAC,KAAK,CAAA;IACd,OAAO,CAAC,CAAC,EAAE,CAAA;IACX,OAAO,CAAC,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,CAAC,OAAO,CAAA;IAChB,OAAO,CAAC,CAAC,IAAI,CAAA;IACb,OAAO,CAAC,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,CAAC,EAAE,CAAA;IAEX,OAAO,MAAM,CAAC,IAAI,CAAA;IAClB,OAAO,MAAM,CAAC,GAAG,CAAA;IACjB,OAAO,MAAM,CAAC,MAAM,CAAA;IACpB,OAAO,MAAM,CAAC,KAAK,CAAA;IACnB,OAAO,MAAM,CAAC,SAAS,CAAA;IAEvB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAE1B,8EAA8E;IAC9E,oEAAoE;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAkB,EAAE,CAAA;QACnC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;YAChC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YACnC,CAAC;iBAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC1C,SAAS,CAAC,OAAO,GAAG,UAAU,CAAA;YAChC,CAAC;QACH,CAAC;QAED,MAAM,GAAG,SAAS,CAAA;QAClB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;IAC3B,CAAC;IAED,2GAA2G;IAC3G,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjD,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YACjC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QACnC,CAAC;QAED,4FAA4F;QAC5F,kGAAkG;QAClG,sGAAsG;QACtG,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAC/B,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QACtC,CAAC;QAED,kCAAkC;QAClC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAA;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC,OAAO,CAAA;IAEhB,OAAO,MAAsB,CAAA;AAC/B,CAAC;AAED,SAAS,WAAW,CAAC,IAAS,EAAE,GAAW;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACvB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAClB,CAAC;SAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACnB,CAAC;SAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAClB,CAAC;SAAM,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC9B,CAAC;SAAM,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtD,WAAW,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,eAAe;AACf,MAAM,UAAU,WAAW,CAAC,IAAS;IACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAA0B,EAAE,IAAoB,EAAE,IAAoB;IAClG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsC,CAAA;IAC7D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GACT,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACtK,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAA;QACjD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,UAAuB;IAC3C,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,MAAM,CAAC,YAAY,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAA;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,MAAM,YAAY,GAAG,aAAa,CAAA;IAClC,MAAM,UAAU,GAAG,WAAW,CAAA;IAC9B,OAAO,KAAK;SACT,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC;QAC1B,WAAW,EAAE,6CAA6C,KAAK,CAAC,SAAS,CAAC,gCAAgC,CAAC,IAAI;QAC/G,IAAI,EAAE,OAAO;KACd,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,6CAA6C,KAAK,CAAC,SAAS,CAAC,kCAAkC,CAAC,GAAG;QAChH,IAAI,EAAE,OAAO;KACd,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC;QACvB,WAAW,EAAE,+CAA+C,KAAK,CAAC,SAAS,CAAC,gCAAgC,CAAC,GAAG;QAChH,IAAI,EAAE,OAAO;KACd,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,WAAW,EAAE;QACnB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,qCAAqC;QAClD,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,0BAA0B,KAAK,CAAC,SAAS,CAAC,oCAAoC,CAAC,EAAE;QAC9F,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAgB,CAAC;KACxE,CAAC;SACD,MAAM,CAAC,aAAa,EAAE;QACrB,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iEAAiE;KAC/E,CAAC;SACD,MAAM,CAAC,YAAY,EAAE;QACpB,KAAK,EAAE,CAAC,SAAS,CAAC;QAClB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,uEAAuE;KACrF,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,4HAA4H;YAC5H,KAAK,CAAC,SAAS,CAAC,0CAA0C,CAAC;KAC9D,CAAC;SACD,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC;SACpC,OAAO,CAAC,uBAAuB,EAAE,oCAAoC,CAAC;SACtE,OAAO,CAAC,qCAAqC,EAAE,gCAAgC,CAAC;SAChF,OAAO,CAAC,+BAA+B,EAAE,wBAAwB,CAAC;SAClE,OAAO,CAAC,2CAA2C,EAAE,0CAA0C,CAAC;SAChG,OAAO,CAAC,8CAA8C,EAAE,oCAAoC,CAAC,CAAA;AAClG,CAAC","sourcesContent":["import { build as _build, Configuration, DIR_TARGET, Packager, PackagerOptions, Platform } from \"app-builder-lib\"\nimport { addTargetsForPlatform } from \"app-builder-lib/internal\"\nimport { Arch, archFromString } from \"builder-util\"\nimport { deepAssign } from \"builder-util-runtime\"\nimport chalk from \"chalk\"\nimport type { PublishOptions } from \"electron-publish\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\n\nexport function createYargs(): yargs.Argv<unknown> {\n // In ESM, yargs.default is the factory function; call it to create an instance.\n // In CJS, yargs.default is already an Argv singleton.\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return (instance as unknown as yargs.Argv<unknown>).parserConfiguration({\n \"camel-case-expansion\": false,\n })\n}\n\nexport interface BuildOptions extends PackagerOptions, PublishOptions {}\n\nexport interface CliOptions extends PackagerOptions, PublishOptions {\n x64?: boolean\n ia32?: boolean\n armv7l?: boolean\n arm64?: boolean\n universal?: boolean\n\n dir?: boolean\n}\n\n/** @private */\nexport function normalizeOptions(args: CliOptions): BuildOptions {\n if (args.targets != null) {\n return args\n }\n\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n\n function processTargets(platform: Platform, types: Array<string>) {\n function commonArch(currentIfNotSpecified: boolean): Array<Arch> {\n const result = Array<Arch>()\n if (args.x64) {\n result.push(Arch.x64)\n }\n if (args.armv7l) {\n result.push(Arch.armv7l)\n }\n if (args.arm64) {\n result.push(Arch.arm64)\n }\n if (args.ia32) {\n result.push(Arch.ia32)\n }\n if (args.universal) {\n result.push(Arch.universal)\n }\n\n return result.length === 0 && currentIfNotSpecified ? [archFromString(process.arch)] : result\n }\n\n addTargetsForPlatform(targets, platform, types, commonArch, archToType => {\n const defaultTargetValue = args.dir ? [DIR_TARGET] : []\n for (const arch of commonArch(args.dir === true)) {\n archToType.set(arch, defaultTargetValue)\n }\n })\n }\n\n if (args.mac != null) {\n processTargets(Platform.MAC, args.mac)\n }\n\n if (args.linux != null) {\n processTargets(Platform.LINUX, args.linux)\n }\n\n if (args.win != null) {\n processTargets(Platform.WINDOWS, args.win)\n }\n\n if (targets.size === 0) {\n processTargets(Platform.current(), [])\n }\n\n const result: any = { ...args }\n result.targets = targets\n\n delete result.dir\n delete result.mac\n delete result.linux\n delete result.win\n\n const r = result\n delete r.m\n delete r.o\n delete r.l\n delete r.w\n delete r.windows\n delete r.macos\n delete r.$0\n delete r._\n delete r.version\n delete r.help\n delete r.c\n delete r.p\n delete r.pd\n\n delete result.ia32\n delete result.x64\n delete result.armv7l\n delete result.arm64\n delete result.universal\n\n let config = result.config\n\n // config is array when combining dot-notation values with a config file value\n // https://github.com/electron-userland/electron-builder/issues/2016\n if (Array.isArray(config)) {\n const newConfig: Configuration = {}\n for (const configItem of config) {\n if (typeof configItem === \"object\") {\n deepAssign(newConfig, configItem)\n } else if (typeof configItem === \"string\") {\n newConfig.extends = configItem\n }\n }\n\n config = newConfig\n result.config = newConfig\n }\n\n // AJV cannot coerce \"null\" string to null if string is also allowed (because null string is a valid value)\n if (config != null && typeof config !== \"string\") {\n if (config.extraMetadata != null) {\n coerceTypes(config.extraMetadata)\n }\n\n // mac.sign / mac.universal are nested option bags holding booleans and the signing identity\n // (e.g. sign.identity, sign.hardenedRuntime, universal.mergeASARs). coerceValue recurses into the\n // objects (so `-c.mac.sign.identity=null` disables code signing) and also handles `-c.mac.sign=null`.\n if (config.mac != null) {\n coerceValue(config.mac, \"sign\")\n coerceValue(config.mac, \"universal\")\n }\n\n // fix Boolean type by coerceTypes\n if (config.nsis != null) {\n coerceTypes(config.nsis)\n }\n if (config.nsisWeb != null) {\n coerceTypes(config.nsisWeb)\n }\n }\n\n if (\"project\" in r && !(\"projectDir\" in result)) {\n result.projectDir = r.project\n }\n delete r.project\n\n return result as BuildOptions\n}\n\nfunction coerceValue(host: any, key: string): void {\n const value = host[key]\n if (value === \"true\") {\n host[key] = true\n } else if (value === \"false\") {\n host[key] = false\n } else if (value === \"null\") {\n host[key] = null\n } else if (key === \"version\" && typeof value === \"number\") {\n host[key] = value.toString()\n } else if (value != null && typeof value === \"object\") {\n coerceTypes(value)\n }\n}\n\n/** @private */\nexport function coerceTypes(host: any): any {\n for (const key of Object.getOwnPropertyNames(host)) {\n coerceValue(host, key)\n }\n return host\n}\n\nexport function createTargets(platforms: Array<Platform>, type?: string | null, arch?: string | null): Map<Platform, Map<Arch, Array<string>>> {\n const targets = new Map<Platform, Map<Arch, Array<string>>>()\n for (const platform of platforms) {\n const archs =\n arch === \"all\" ? (platform === Platform.MAC ? [Arch.x64, Arch.arm64, Arch.universal] : [Arch.x64, Arch.ia32]) : [archFromString(arch == null ? process.arch : arch)]\n const archToType = new Map<Arch, Array<string>>()\n targets.set(platform, archToType)\n\n for (const arch of archs) {\n archToType.set(arch, type == null ? [] : [type])\n }\n }\n return targets\n}\n\nexport function build(rawOptions?: CliOptions): Promise<Array<string>> {\n const buildOptions = normalizeOptions(rawOptions || {})\n return _build(buildOptions, new Packager(buildOptions))\n}\n\n/**\n * @private\n */\nexport function configureBuildCommand(yargs: yargs.Argv): yargs.Argv {\n const publishGroup = \"Publishing:\"\n const buildGroup = \"Building:\"\n return yargs\n .option(\"mac\", {\n group: buildGroup,\n alias: [\"m\", \"o\", \"macos\"],\n description: `Build for macOS, accepts target list (see ${chalk.underline(\"https://www.electron.build/mac\")}).`,\n type: \"array\",\n })\n .option(\"linux\", {\n group: buildGroup,\n alias: \"l\",\n description: `Build for Linux, accepts target list (see ${chalk.underline(\"https://www.electron.build/linux\")})`,\n type: \"array\",\n })\n .option(\"win\", {\n group: buildGroup,\n alias: [\"w\", \"windows\"],\n description: `Build for Windows, accepts target list (see ${chalk.underline(\"https://www.electron.build/win\")})`,\n type: \"array\",\n })\n .option(\"x64\", {\n group: buildGroup,\n description: \"Build for x64\",\n type: \"boolean\",\n })\n .option(\"ia32\", {\n group: buildGroup,\n description: \"Build for ia32\",\n type: \"boolean\",\n })\n .option(\"armv7l\", {\n group: buildGroup,\n description: \"Build for armv7l\",\n type: \"boolean\",\n })\n .option(\"arm64\", {\n group: buildGroup,\n description: \"Build for arm64\",\n type: \"boolean\",\n })\n .option(\"universal\", {\n group: buildGroup,\n description: \"Build for universal\",\n type: \"boolean\",\n })\n .option(\"dir\", {\n group: buildGroup,\n description: \"Build unpacked dir. Useful to test.\",\n type: \"boolean\",\n })\n .option(\"publish\", {\n group: publishGroup,\n alias: \"p\",\n description: `Publish artifacts, see ${chalk.underline(\"https://www.electron.build/publish\")}`,\n choices: [\"onTag\", \"onTagOrDraft\", \"always\", \"never\", undefined as any],\n })\n .option(\"prepackaged\", {\n alias: [\"pd\"],\n group: buildGroup,\n description: \"The path to prepackaged app (to pack in a distributable format)\",\n })\n .option(\"projectDir\", {\n alias: [\"project\"],\n group: buildGroup,\n description: \"The path to project directory. Defaults to current working directory.\",\n })\n .option(\"config\", {\n alias: [\"c\"],\n group: buildGroup,\n description:\n \"The path to an electron-builder config. Defaults to `electron-builder.yml` (or `json`, or `json5`, or `js`, or `ts`), see \" +\n chalk.underline(\"https://www.electron.build/configuration\"),\n })\n .group([\"help\", \"version\"], \"Other:\")\n .example(\"electron-builder -mwl\", \"build for macOS, Windows and Linux\")\n .example(\"electron-builder --linux deb tar.xz\", \"build deb and tar.xz for Linux\")\n .example(\"electron-builder --win --ia32\", \"build for Windows ia32\")\n .example(\"electron-builder -c.extraMetadata.foo=bar\", \"set package.json property `foo` to `bar`\")\n .example(\"electron-builder --config.nsis.unicode=false\", \"configure unicode options for NSIS\")\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"clear-cache.d.ts","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAoChD"}
1
+ {"version":3,"file":"clear-cache.d.ts","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAsChD"}
@@ -1,10 +1,12 @@
1
- import { getCacheDirectory } from "app-builder-lib/internal";
1
+ import { getCacheDirectoryInternal } from "app-builder-lib/internal";
2
2
  import { log } from "builder-util";
3
3
  import { access, constants, rm } from "fs/promises";
4
4
  import { createInterface } from "node:readline/promises";
5
5
  import * as path from "path";
6
6
  export async function clearCache() {
7
- const cacheDir = getCacheDirectory({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false });
7
+ // Clear the real default cache (ignore the ELECTRON_BUILDER_CACHE override, and don't avoid the
8
+ // Windows system path) so `clear-cache` targets the same dir builds actually populate.
9
+ const cacheDir = await getCacheDirectoryInternal({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false });
8
10
  if (cacheDir === path.parse(cacheDir).root) {
9
11
  log.error({ cacheDir }, "cache directory resolves to a filesystem root — aborting");
10
12
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"clear-cache.js","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAA;IAEjG,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,0DAA0D,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,kDAAkD,CAAC,CAAA;QAC5E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,iCAAiC,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,QAAQ,UAAU,CAAC,CAAA;IAClE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IACD,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;AACzC,CAAC","sourcesContent":["import { getCacheDirectory } from \"app-builder-lib/internal\"\nimport { log } from \"builder-util\"\nimport { access, constants, rm } from \"fs/promises\"\nimport { createInterface } from \"node:readline/promises\"\nimport * as path from \"path\"\n\nexport async function clearCache(): Promise<void> {\n const cacheDir = getCacheDirectory({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false })\n\n if (cacheDir === path.parse(cacheDir).root) {\n log.error({ cacheDir }, \"cache directory resolves to a filesystem root — aborting\")\n return\n }\n\n try {\n await access(cacheDir, constants.F_OK | constants.W_OK)\n } catch (err: any) {\n if (err.code === \"ENOENT\") {\n log.info({ cacheDir }, \"cache directory does not exist, nothing to clear\")\n } else if (err.code === \"EACCES\" || err.code === \"EPERM\") {\n log.error({ cacheDir }, \"cache directory is not writable\")\n } else {\n throw err\n }\n return\n }\n\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n let answer: string\n try {\n answer = await rl.question(`Clear cache at ${cacheDir}? [y/N] `)\n } finally {\n rl.close()\n }\n if (answer!.trim().toLowerCase() !== \"y\" && answer!.trim().toLowerCase() !== \"yes\") {\n log.info(null, \"aborted\")\n return\n }\n\n log.info({ cacheDir }, \"clearing cache\")\n await rm(cacheDir, { recursive: true })\n log.info({ cacheDir }, \"cache cleared\")\n}\n"]}
1
+ {"version":3,"file":"clear-cache.js","sourceRoot":"","sources":["../../src/cli/clear-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,gGAAgG;IAChG,uFAAuF;IACvF,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAA;IAE/G,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,0DAA0D,CAAC,CAAA;QACnF,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,kDAAkD,CAAC,CAAA;QAC5E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,iCAAiC,CAAC,CAAA;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5E,IAAI,MAAc,CAAA;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,QAAQ,UAAU,CAAC,CAAA;IAClE,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IACD,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACzB,OAAM;IACR,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACvC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;AACzC,CAAC","sourcesContent":["import { getCacheDirectoryInternal } from \"app-builder-lib/internal\"\nimport { log } from \"builder-util\"\nimport { access, constants, rm } from \"fs/promises\"\nimport { createInterface } from \"node:readline/promises\"\nimport * as path from \"path\"\n\nexport async function clearCache(): Promise<void> {\n // Clear the real default cache (ignore the ELECTRON_BUILDER_CACHE override, and don't avoid the\n // Windows system path) so `clear-cache` targets the same dir builds actually populate.\n const cacheDir = await getCacheDirectoryInternal({ isAvoidSystemOnWindows: false, allowEnvVarOverride: false })\n\n if (cacheDir === path.parse(cacheDir).root) {\n log.error({ cacheDir }, \"cache directory resolves to a filesystem root — aborting\")\n return\n }\n\n try {\n await access(cacheDir, constants.F_OK | constants.W_OK)\n } catch (err: any) {\n if (err.code === \"ENOENT\") {\n log.info({ cacheDir }, \"cache directory does not exist, nothing to clear\")\n } else if (err.code === \"EACCES\" || err.code === \"EPERM\") {\n log.error({ cacheDir }, \"cache directory is not writable\")\n } else {\n throw err\n }\n return\n }\n\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n let answer: string\n try {\n answer = await rl.question(`Clear cache at ${cacheDir}? [y/N] `)\n } finally {\n rl.close()\n }\n if (answer!.trim().toLowerCase() !== \"y\" && answer!.trim().toLowerCase() !== \"yes\") {\n log.info(null, \"aborted\")\n return\n }\n\n log.info({ cacheDir }, \"clearing cache\")\n await rm(cacheDir, { recursive: true })\n log.info({ cacheDir }, \"cache cleared\")\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { getWindowsKitsBundle } from "app-builder-lib/internal";
2
- import { archFromString, exec, log, spawn, TmpDir, unlinkIfExists } from "builder-util";
2
+ import { exec, log, spawn, TmpDir, unlinkIfExists } from "builder-util";
3
3
  import { sanitizeFileName } from "builder-util/internal";
4
4
  import chalk from "chalk";
5
5
  import { mkdir } from "fs/promises";
@@ -14,7 +14,7 @@ export async function createSelfSignedCert(publisher) {
14
14
  log.info(chalk.bold('When asked to enter a password ("Create Private Key Password"), please select "None".'));
15
15
  try {
16
16
  await mkdir(path.dirname(tempPrefix), { recursive: true });
17
- const vendorPath = (await getWindowsKitsBundle({ winCodeSign: null, arch: archFromString(process.arch), resourcesDir: "" })).kit;
17
+ const vendorPath = (await getWindowsKitsBundle({ winCodeSign: "latest" })).kit;
18
18
  await exec(path.join(vendorPath, "makecert.exe"), ["-r", "-h", "0", "-n", `CN=${quoteString(publisher)}`, "-eku", "1.3.6.1.5.5.7.3.3", "-pe", "-sv", pvk, cer]);
19
19
  const pfx = path.join(targetDir, `${sanitizeFileName(publisher)}.pfx`);
20
20
  await unlinkIfExists(pfx);
@@ -1 +1 @@
1
- {"version":3,"file":"create-self-signed-cert.js","sourceRoot":"","sources":["../../src/cli/create-self-signed-cert.ts"],"names":[],"mappings":"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","sourcesContent":["import { getWindowsKitsBundle } from \"app-builder-lib/internal\"\nimport { archFromString, exec, log, spawn, TmpDir, unlinkIfExists } from \"builder-util\"\nimport { sanitizeFileName } from \"builder-util/internal\"\nimport chalk from \"chalk\"\nimport { mkdir } from \"fs/promises\"\nimport * as path from \"path\"\n\n/** @internal */\nexport async function createSelfSignedCert(publisher: string) {\n const tmpDir = new TmpDir(\"create-self-signed-cert\")\n const targetDir = process.cwd()\n const tempPrefix = path.join(await tmpDir.getTempDir({ prefix: \"self-signed-cert-creator\" }), sanitizeFileName(publisher))\n const cer = `${tempPrefix}.cer`\n const pvk = `${tempPrefix}.pvk`\n\n log.info(chalk.bold('When asked to enter a password (\"Create Private Key Password\"), please select \"None\".'))\n\n try {\n await mkdir(path.dirname(tempPrefix), { recursive: true })\n const vendorPath = (await getWindowsKitsBundle({ winCodeSign: null, arch: archFromString(process.arch), resourcesDir: \"\" })).kit\n await exec(path.join(vendorPath, \"makecert.exe\"), [\"-r\", \"-h\", \"0\", \"-n\", `CN=${quoteString(publisher)}`, \"-eku\", \"1.3.6.1.5.5.7.3.3\", \"-pe\", \"-sv\", pvk, cer])\n\n const pfx = path.join(targetDir, `${sanitizeFileName(publisher)}.pfx`)\n await unlinkIfExists(pfx)\n await exec(path.join(vendorPath, \"pvk2pfx.exe\"), [\"-pvk\", pvk, \"-spc\", cer, \"-pfx\", pfx])\n log.info({ file: pfx }, `created. Please see https://electron.build/code-signing how to use it to sign.`)\n\n const certLocation = \"Cert:\\\\LocalMachine\\\\TrustedPeople\"\n log.info({ file: pfx, certLocation }, `importing. Operation will be succeed only if runned from root. Otherwise import file manually.`)\n await spawn(\"powershell.exe\", [\"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Import-PfxCertificate\", \"-FilePath\", `\"${pfx}\"`, \"-CertStoreLocation\", certLocation])\n } finally {\n await tmpDir.cleanup()\n }\n}\n\nexport function quoteString(s: string): string {\n if (!s.includes(\",\") && !s.includes('\"')) {\n return s\n }\n\n return `\"${s.replace(/\"/g, '\\\\\"')}\"`\n}\n"]}
1
+ {"version":3,"file":"create-self-signed-cert.js","sourceRoot":"","sources":["../../src/cli/create-self-signed-cert.ts"],"names":[],"mappings":"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","sourcesContent":["import { getWindowsKitsBundle } from \"app-builder-lib/internal\"\nimport { exec, log, spawn, TmpDir, unlinkIfExists } from \"builder-util\"\nimport { sanitizeFileName } from \"builder-util/internal\"\nimport chalk from \"chalk\"\nimport { mkdir } from \"fs/promises\"\nimport * as path from \"path\"\n\n/** @internal */\nexport async function createSelfSignedCert(publisher: string) {\n const tmpDir = new TmpDir(\"create-self-signed-cert\")\n const targetDir = process.cwd()\n const tempPrefix = path.join(await tmpDir.getTempDir({ prefix: \"self-signed-cert-creator\" }), sanitizeFileName(publisher))\n const cer = `${tempPrefix}.cer`\n const pvk = `${tempPrefix}.pvk`\n\n log.info(chalk.bold('When asked to enter a password (\"Create Private Key Password\"), please select \"None\".'))\n\n try {\n await mkdir(path.dirname(tempPrefix), { recursive: true })\n const vendorPath = (await getWindowsKitsBundle({ winCodeSign: \"latest\" })).kit\n await exec(path.join(vendorPath, \"makecert.exe\"), [\"-r\", \"-h\", \"0\", \"-n\", `CN=${quoteString(publisher)}`, \"-eku\", \"1.3.6.1.5.5.7.3.3\", \"-pe\", \"-sv\", pvk, cer])\n\n const pfx = path.join(targetDir, `${sanitizeFileName(publisher)}.pfx`)\n await unlinkIfExists(pfx)\n await exec(path.join(vendorPath, \"pvk2pfx.exe\"), [\"-pvk\", pvk, \"-spc\", cer, \"-pfx\", pfx])\n log.info({ file: pfx }, `created. Please see https://electron.build/code-signing how to use it to sign.`)\n\n const certLocation = \"Cert:\\\\LocalMachine\\\\TrustedPeople\"\n log.info({ file: pfx, certLocation }, `importing. Operation will be succeed only if runned from root. Otherwise import file manually.`)\n await spawn(\"powershell.exe\", [\"-NoProfile\", \"-NonInteractive\", \"-Command\", \"Import-PfxCertificate\", \"-FilePath\", `\"${pfx}\"`, \"-CertStoreLocation\", certLocation])\n } finally {\n await tmpDir.cleanup()\n }\n}\n\nexport function quoteString(s: string): string {\n if (!s.includes(\",\") && !s.includes('\"')) {\n return s\n }\n\n return `\"${s.replace(/\"/g, '\\\\\"')}\"`\n}\n"]}
@@ -1,13 +1,9 @@
1
1
  #! /usr/bin/env node
2
- import { computeDefaultAppDirectory, determinePackageManagerEnv, getConfig, getElectronVersion, installOrRebuild, orNullIfFileNotExist, PACKAGE_VERSION, } from "app-builder-lib/internal";
2
+ import { computeDefaultAppDirectory, createProjectMetadataLazy, determinePackageManagerEnv, getConfig, getElectronVersion, installOrRebuild, PACKAGE_VERSION, } from "app-builder-lib/internal";
3
3
  import { getArchCliNames, log, printErrorAndExit } from "builder-util";
4
- import { Lazy } from "lazy-val";
5
- import * as path from "path";
6
4
  import { fileURLToPath } from "node:url";
7
5
  import { hideBin } from "yargs/helpers";
8
6
  import * as yargs from "yargs";
9
- import _fsExtra from "fs-extra";
10
- const { readJson } = _fsExtra;
11
7
  /** @internal */
12
8
  export function configureInstallAppDepsCommand(yargs) {
13
9
  // https://github.com/yargs/yargs/issues/760
@@ -39,7 +35,7 @@ export async function installAppDeps(args) {
39
35
  }
40
36
  }
41
37
  const projectDir = process.cwd();
42
- const packageMetadata = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, "package.json"))));
38
+ const packageMetadata = createProjectMetadataLazy(projectDir);
43
39
  const config = await getConfig(projectDir, null, null, packageMetadata);
44
40
  const [appDir, version] = await Promise.all([computeDefaultAppDirectory(projectDir, config.directories?.app), getElectronVersion(projectDir, config)]);
45
41
  const packageManagerEnv = determinePackageManagerEnv({ projectDir, appDir, workspaceRoot: undefined });
@@ -1 +1 @@
1
- {"version":3,"file":"install-app-deps.js","sourceRoot":"","sources":["../../src/cli/install-app-deps.ts"],"names":[],"mappings":"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","sourcesContent":["#! /usr/bin/env node\n\nimport {\n computeDefaultAppDirectory,\n determinePackageManagerEnv,\n getConfig,\n getElectronVersion,\n installOrRebuild,\n orNullIfFileNotExist,\n PACKAGE_VERSION,\n} from \"app-builder-lib/internal\"\nimport { getArchCliNames, log, printErrorAndExit } from \"builder-util\"\n\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { fileURLToPath } from \"node:url\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\nimport _fsExtra from \"fs-extra\"\nconst { readJson } = _fsExtra\n\n/** @internal */\nexport function configureInstallAppDepsCommand(yargs: yargs.Argv): yargs.Argv {\n // https://github.com/yargs/yargs/issues/760\n // demandOption is required to be set\n return yargs\n .parserConfiguration({\n \"camel-case-expansion\": false,\n })\n .option(\"platform\", {\n choices: [\"linux\", \"darwin\", \"win32\"],\n default: process.platform,\n description: \"The target platform\",\n })\n .option(\"arch\", {\n choices: getArchCliNames().concat(\"all\"),\n default: process.arch === \"arm\" ? \"armv7l\" : process.arch,\n description: \"The target arch\",\n })\n}\n\n/** @internal */\nexport async function installAppDeps(args: any) {\n try {\n log.info({ version: PACKAGE_VERSION }, \"electron-builder\")\n } catch (e: any) {\n // error in dev mode without babel\n if (!(e instanceof ReferenceError)) {\n throw e\n }\n }\n\n const projectDir = process.cwd()\n const packageMetadata = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, \"package.json\"))))\n const config = await getConfig(projectDir, null, null, packageMetadata)\n const [appDir, version] = await Promise.all<string>([computeDefaultAppDirectory(projectDir, config.directories?.app), getElectronVersion(projectDir, config)])\n\n const packageManagerEnv = determinePackageManagerEnv({ projectDir, appDir, workspaceRoot: undefined })\n\n // if two package.json — force full install (user wants to install/update app deps in addition to dev)\n await installOrRebuild(\n config,\n {\n appDir,\n projectDir,\n workspaceRoot: await (await packageManagerEnv.value).workspaceRoot,\n },\n {\n frameworkInfo: { version, useCustomDist: true },\n platform: args.platform,\n arch: args.arch,\n },\n appDir !== projectDir,\n {}\n )\n}\n\nfunction main() {\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return installAppDeps(configureInstallAppDepsCommand(instance as unknown as yargs.Argv).argv)\n}\n\nif (process.argv[1] === fileURLToPath(import.meta.url)) {\n log.warn(\"please use as subcommand: electron-builder install-app-deps\")\n main().catch(printErrorAndExit)\n}\n"]}
1
+ {"version":3,"file":"install-app-deps.js","sourceRoot":"","sources":["../../src/cli/install-app-deps.ts"],"names":[],"mappings":"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","sourcesContent":["#! /usr/bin/env node\n\nimport {\n computeDefaultAppDirectory,\n createProjectMetadataLazy,\n determinePackageManagerEnv,\n getConfig,\n getElectronVersion,\n installOrRebuild,\n PACKAGE_VERSION,\n} from \"app-builder-lib/internal\"\nimport { getArchCliNames, log, printErrorAndExit } from \"builder-util\"\n\nimport { fileURLToPath } from \"node:url\"\nimport { hideBin } from \"yargs/helpers\"\nimport * as yargs from \"yargs\"\n\n/** @internal */\nexport function configureInstallAppDepsCommand(yargs: yargs.Argv): yargs.Argv {\n // https://github.com/yargs/yargs/issues/760\n // demandOption is required to be set\n return yargs\n .parserConfiguration({\n \"camel-case-expansion\": false,\n })\n .option(\"platform\", {\n choices: [\"linux\", \"darwin\", \"win32\"],\n default: process.platform,\n description: \"The target platform\",\n })\n .option(\"arch\", {\n choices: getArchCliNames().concat(\"all\"),\n default: process.arch === \"arm\" ? \"armv7l\" : process.arch,\n description: \"The target arch\",\n })\n}\n\n/** @internal */\nexport async function installAppDeps(args: any) {\n try {\n log.info({ version: PACKAGE_VERSION }, \"electron-builder\")\n } catch (e: any) {\n // error in dev mode without babel\n if (!(e instanceof ReferenceError)) {\n throw e\n }\n }\n\n const projectDir = process.cwd()\n const packageMetadata = createProjectMetadataLazy(projectDir)\n const config = await getConfig(projectDir, null, null, packageMetadata)\n const [appDir, version] = await Promise.all<string>([computeDefaultAppDirectory(projectDir, config.directories?.app), getElectronVersion(projectDir, config)])\n\n const packageManagerEnv = determinePackageManagerEnv({ projectDir, appDir, workspaceRoot: undefined })\n\n // if two package.json — force full install (user wants to install/update app deps in addition to dev)\n await installOrRebuild(\n config,\n {\n appDir,\n projectDir,\n workspaceRoot: await (await packageManagerEnv.value).workspaceRoot,\n },\n {\n frameworkInfo: { version, useCustomDist: true },\n platform: args.platform,\n arch: args.arch,\n },\n appDir !== projectDir,\n {}\n )\n}\n\nfunction main() {\n const factory = (yargs as any).default ?? yargs\n const instance = typeof factory?.parserConfiguration === \"function\" ? factory : factory(hideBin(process.argv))\n return installAppDeps(configureInstallAppDepsCommand(instance as unknown as yargs.Argv).argv)\n}\n\nif (process.argv[1] === fileURLToPath(import.meta.url)) {\n log.warn(\"please use as subcommand: electron-builder install-app-deps\")\n main().catch(printErrorAndExit)\n}\n"]}
@@ -277,6 +277,15 @@ class ConfigCodemod {
277
277
  this.indentUnit = this.detectIndentUnit(root);
278
278
  this.ruleRemoveKeys(root, ["electronCompile"], "removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)");
279
279
  this.ruleRemoveKeys(root, ["framework", "nodeVersion", "launchUiVersion"], key => `removed ${key} (Electron is the only supported framework in v27)`);
280
+ const disableDefaultIgnoredFilesDesc = "removed disableDefaultIgnoredFiles (in v27, include a default-excluded file via an explicit `files` glob, e.g. `**/*.obj`)";
281
+ this.ruleRemoveKeys(root, ["disableDefaultIgnoredFiles"], disableDefaultIgnoredFilesDesc);
282
+ // mas/masDev are MacConfiguration-derived, so they accept the (now-removed) key too.
283
+ for (const platform of ["mac", "mas", "masDev", "win", "linux"]) {
284
+ const p = this.getObjectProp(root, platform);
285
+ if (p != null) {
286
+ this.ruleRemoveKeys(p, ["disableDefaultIgnoredFiles"], disableDefaultIgnoredFilesDesc);
287
+ }
288
+ }
280
289
  this.ruleNativeModules(root);
281
290
  this.ruleAsar(root);
282
291
  this.ruleAppImageSystemIntegration(root);
@@ -464,15 +473,12 @@ class ConfigCodemod {
464
473
  this.replaceRange(this.start(vPrefixed), vPrefixed.end, `tagNamePrefix: ${isFalse ? '""' : '"v"'}`);
465
474
  changed = true;
466
475
  }
467
- else if (provider === "gitlab") {
468
- this.removeProp(vPrefixed);
469
- changed = true;
470
- }
476
+ // GitLab keeps vPrefixedTagName in v27 (no tagNamePrefix equivalent) — leave it untouched.
471
477
  }
472
478
  if (changed) {
473
479
  this.changes.push({
474
480
  key: `${prefix}${key}[].vPrefixedTagName`,
475
- description: "replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries; removed from GitLab entries",
481
+ description: "replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries",
476
482
  });
477
483
  }
478
484
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-schema-programmatic.js","sourceRoot":"","sources":["../../src/cli/migrate-schema-programmatic.ts"],"names":[],"mappings":"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","sourcesContent":["import { createRequire } from \"node:module\"\nimport * as path from \"path\"\nimport { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_UNIVERSAL_FIELDS, SNAP_BASES } from \"./migrate-schema.js\"\nimport type { MigrationChange } from \"./migrate-schema.js\"\n\nconst _require = createRequire(import.meta.url)\n\n// `typescript` is intentionally NOT a dependency of electron-builder — it is loaded lazily (same\n// pattern as js-yaml/json5/toml) and the feature degrades to manual steps when it is unavailable.\n// Types are kept loose (`any`) on purpose so no `typescript` types are required at compile time.\nlet tsModuleCache: any | null | undefined\nexport function loadTypeScript(): any | null {\n if (tsModuleCache !== undefined) {\n return tsModuleCache\n }\n try {\n tsModuleCache = _require(\"typescript\")\n } catch {\n tsModuleCache = null\n }\n return tsModuleCache\n}\n\nexport type ProgrammaticMigrationStatus = \"migrated\" | \"no-op\" | \"unsupported\"\n\nexport interface ProgrammaticMigrationResult {\n /** Rewritten source. Equal to the input when nothing changed or the config is unsupported. */\n readonly code: string\n readonly changes: MigrationChange[]\n readonly warnings: string[]\n readonly status: ProgrammaticMigrationStatus\n /** Set when status === \"unsupported\": why the config could not be auto-migrated. */\n readonly unsupportedReason?: string\n}\n\ninterface Edit {\n start: number\n end: number\n text: string\n}\n\n/**\n * Migrates a programmatic JS/TS electron-builder config (the same v26→v27 transforms as\n * {@link migrateConfig}) by surgically rewriting the source text. The TypeScript parser is used only\n * to locate node ranges; everything outside an edited range is preserved byte-for-byte, so comments,\n * imports, functions, and formatting are untouched.\n *\n * Pure: source string in, result out. No file I/O. Returns status \"unsupported\" (with the source\n * unchanged) when typescript is not installed or the config cannot be statically reduced to a single\n * object literal (function that builds the object dynamically, spreads, computed keys, …).\n */\nexport function migrateProgrammaticSource(sourceText: string, fileName: string): ProgrammaticMigrationResult {\n const ts = loadTypeScript()\n if (ts == null) {\n return { code: sourceText, changes: [], warnings: [], status: \"unsupported\", unsupportedReason: \"typescript-not-installed\" }\n }\n\n const scriptKind = scriptKindFor(ts, fileName)\n const sf = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, /* setParentNodes */ true, scriptKind)\n\n const codemod = new ConfigCodemod(ts, sf, sourceText)\n const located = codemod.locateConfigObject()\n if (located.objLit == null) {\n return { code: sourceText, changes: [], warnings: [], status: \"unsupported\", unsupportedReason: located.reason }\n }\n\n codemod.run(located.objLit)\n if (codemod.edits.length === 0) {\n return { code: sourceText, changes: codemod.changes, warnings: codemod.warnings, status: \"no-op\" }\n }\n return { code: codemod.apply(), changes: codemod.changes, warnings: codemod.warnings, status: \"migrated\" }\n}\n\nfunction scriptKindFor(ts: any, fileName: string): any {\n const ext = path.extname(fileName).toLowerCase()\n switch (ext) {\n case \".ts\":\n case \".cts\":\n case \".mts\":\n return ts.ScriptKind.TS\n case \".tsx\":\n return ts.ScriptKind.TSX\n case \".jsx\":\n return ts.ScriptKind.JSX\n default:\n return ts.ScriptKind.JS\n }\n}\n\nclass ConfigCodemod {\n readonly edits: Edit[] = []\n readonly changes: MigrationChange[] = []\n readonly warnings: string[] = []\n private indentUnit = \" \"\n\n constructor(\n private readonly ts: any,\n private readonly sf: any,\n private readonly text: string\n ) {}\n\n // ── Locate the config object literal ──────────────────────────────────────\n\n locateConfigObject(): { objLit?: any; reason?: string } {\n const ts = this.ts\n const candidates: any[] = []\n\n for (const stmt of this.sf.statements) {\n if (ts.isExportAssignment(stmt)) {\n // `export default <expr>` and `export = <expr>`\n candidates.push(stmt.expression)\n } else if (ts.isExpressionStatement(stmt) && ts.isBinaryExpression(stmt.expression) && stmt.expression.operatorToken.kind === ts.SyntaxKind.EqualsToken) {\n const lhs = stmt.expression.left\n if (this.isModuleExportsTarget(lhs)) {\n candidates.push(stmt.expression.right)\n }\n } else if (ts.isFunctionDeclaration(stmt) && this.hasDefaultExport(stmt)) {\n // `export default function () { return {...} }`\n const lit = this.literalFromFunctionLike(stmt)\n if (lit != null) {\n candidates.push(lit)\n }\n }\n }\n\n // Inline `build({ config: {...} })` form (programmatic-usage.md). Search the whole tree.\n this.forEachDescendant(this.sf, node => {\n const cfg = this.configArgOfBuildCall(node)\n if (cfg != null) {\n candidates.push(cfg)\n }\n })\n\n let reason = \"no electron-builder config object literal found (expected a default/module.exports object export or a build({ config }) call)\"\n for (const candidate of candidates) {\n const resolved = this.resolveToObjectLiteral(candidate, 0)\n if (resolved.objLit != null) {\n return { objLit: resolved.objLit }\n }\n if (resolved.reason != null) {\n reason = resolved.reason\n }\n }\n return { reason }\n }\n\n private isModuleExportsTarget(lhs: any): boolean {\n const ts = this.ts\n if (!ts.isPropertyAccessExpression(lhs)) {\n return false\n }\n // module.exports = ... OR exports.default = ...\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"module\" && lhs.name.text === \"exports\") {\n return true\n }\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"exports\" && lhs.name.text === \"default\") {\n return true\n }\n return false\n }\n\n private hasDefaultExport(node: any): boolean {\n const ts = this.ts\n const mods = node.modifiers\n if (mods == null) {\n return false\n }\n let hasExport = false\n let hasDefault = false\n for (const m of mods) {\n if (m.kind === ts.SyntaxKind.ExportKeyword) {\n hasExport = true\n }\n if (m.kind === ts.SyntaxKind.DefaultKeyword) {\n hasDefault = true\n }\n }\n return hasExport && hasDefault\n }\n\n private configArgOfBuildCall(node: any): any | null {\n const ts = this.ts\n if (!ts.isCallExpression(node)) {\n return null\n }\n const callee = node.expression\n const isBuild = (ts.isIdentifier(callee) && callee.text === \"build\") || (ts.isPropertyAccessExpression(callee) && callee.name.text === \"build\")\n if (!isBuild || node.arguments.length === 0) {\n return null\n }\n const arg0 = node.arguments[0]\n if (!ts.isObjectLiteralExpression(arg0)) {\n return null\n }\n const configProp = this.getProp(arg0, \"config\")\n return configProp != null && ts.isPropertyAssignment(configProp) ? configProp.initializer : null\n }\n\n private resolveToObjectLiteral(expr: any, depth: number): { objLit?: any; reason?: string } {\n const ts = this.ts\n if (depth > 6) {\n return { reason: \"config export could not be resolved (too many indirections)\" }\n }\n const node = this.unwrap(expr)\n if (ts.isObjectLiteralExpression(node)) {\n if (this.hasSpreadOrComputed(node)) {\n return { reason: \"config object uses a spread (`...`) or computed key, which cannot be migrated automatically\" }\n }\n return { objLit: node }\n }\n if (ts.isIdentifier(node)) {\n const init = this.findVariableInitializer(node.text)\n if (init == null) {\n return { reason: `config export references \"${node.text}\", which is not a local object literal` }\n }\n return this.resolveToObjectLiteral(init, depth + 1)\n }\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {\n const lit = this.literalFromFunctionLike(node)\n if (lit == null) {\n return { reason: \"config is a function that does not return a single object literal — migrate it manually\" }\n }\n return this.resolveToObjectLiteral(lit, depth + 1)\n }\n return { reason: \"config export is not an object literal — migrate it manually\" }\n }\n\n /** Unwraps parentheses and type-only wrappers (`as`, `satisfies`, `!`, `<T>x`) to the inner expression. */\n private unwrap(node: any): any {\n const ts = this.ts\n let n = node\n for (;;) {\n if (\n ts.isParenthesizedExpression(n) ||\n ts.isAsExpression(n) ||\n (ts.isSatisfiesExpression && ts.isSatisfiesExpression(n)) ||\n ts.isNonNullExpression(n) ||\n ts.isTypeAssertionExpression?.(n)\n ) {\n n = n.expression\n } else {\n return n\n }\n }\n }\n\n private hasSpreadOrComputed(objLit: any): boolean {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (ts.isSpreadAssignment(p)) {\n return true\n }\n if (p.name != null && ts.isComputedPropertyName(p.name)) {\n return true\n }\n }\n return false\n }\n\n private findVariableInitializer(name: string): any | null {\n const ts = this.ts\n for (const stmt of this.sf.statements) {\n if (!ts.isVariableStatement(stmt)) {\n continue\n }\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text === name && decl.initializer != null) {\n return decl.initializer\n }\n }\n }\n return null\n }\n\n /** Returns the single object-literal expression a function-like trivially yields, or null. */\n private literalFromFunctionLike(fn: any): any | null {\n const ts = this.ts\n const body = fn.body\n if (body == null) {\n return null\n }\n if (!ts.isBlock(body)) {\n // arrow expression body: `() => ({...})` / `() => obj`\n return body\n }\n const returns: any[] = []\n this.collectReturns(body, returns)\n if (returns.length !== 1 || returns[0].expression == null) {\n return null\n }\n return returns[0].expression\n }\n\n private collectReturns(node: any, out: any[]): void {\n const ts = this.ts\n const visit = (n: any): void => {\n // Don't descend into nested functions — their returns are not the config's.\n if (ts.isFunctionDeclaration(n) || ts.isFunctionExpression(n) || ts.isArrowFunction(n)) {\n return\n }\n if (ts.isReturnStatement(n)) {\n out.push(n)\n }\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n private forEachDescendant(node: any, cb: (n: any) => void): void {\n const visit = (n: any): void => {\n cb(n)\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n // ── Run all rules ─────────────────────────────────────────────────────────\n\n run(root: any): void {\n this.indentUnit = this.detectIndentUnit(root)\n this.ruleRemoveKeys(root, [\"electronCompile\"], \"removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)\")\n this.ruleRemoveKeys(root, [\"framework\", \"nodeVersion\", \"launchUiVersion\"], key => `removed ${key} (Electron is the only supported framework in v27)`)\n this.ruleNativeModules(root)\n this.ruleAsar(root)\n this.ruleAppImageSystemIntegration(root)\n this.rulePublish(root, \"publish\")\n for (const platform of [\"mac\", \"win\", \"linux\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.rulePublish(p, \"publish\", platform + \".\")\n }\n }\n this.ruleSnap(root)\n this.ruleHelperBundleId(root)\n this.ruleSquirrelNoMsi(root)\n this.ruleWinSign(root)\n for (const platform of [\"mac\", \"mas\", \"masDev\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.ruleMacSigning(p, platform)\n this.ruleMacUniversal(p, platform)\n }\n }\n this.ruleElectronDownload(root)\n }\n\n // ── Rules ───────────────────────────────────────────────────────────────\n\n private ruleRemoveKeys(obj: any, keys: string[], description: string | ((key: string) => string)): void {\n for (const key of keys) {\n const prop = this.getProp(obj, key)\n if (prop != null) {\n this.removeProp(prop)\n this.changes.push({ key, description: typeof description === \"function\" ? description(key) : description })\n }\n }\n }\n\n private ruleNativeModules(root: any): void {\n const sources: { prop: any; renameTo?: string }[] = []\n const extraEntries: string[] = []\n\n for (const key of [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\"]) {\n const prop = this.getProp(root, key)\n if (prop != null) {\n sources.push({ prop })\n this.changes.push({ key, description: `moved ${key} → nativeModules.${key}` })\n }\n }\n\n const nativeRebuilder = this.getProp(root, \"nativeRebuilder\")\n if (nativeRebuilder != null) {\n sources.push({ prop: nativeRebuilder, renameTo: \"rebuildMode\" })\n this.changes.push({ key: \"nativeRebuilder\", description: \"renamed nativeRebuilder → nativeModules.rebuildMode\" })\n }\n\n const npmSkip = this.getProp(root, \"npmSkipBuildFromSource\")\n if (npmSkip != null && this.ts.isPropertyAssignment(npmSkip)) {\n const hasBds = this.getProp(root, \"buildDependenciesFromSource\") != null\n if (!hasBds) {\n extraEntries.push(`buildDependenciesFromSource: ${this.negate(npmSkip.initializer)}`)\n }\n this.removeProp(npmSkip)\n this.changes.push({ key: \"npmSkipBuildFromSource\", description: \"renamed npmSkipBuildFromSource → buildDependenciesFromSource (then grouped under nativeModules)\" })\n }\n\n if (sources.length === 0 && extraEntries.length === 0) {\n return\n }\n const ok = this.moveInto(root, \"nativeModules\", sources, extraEntries)\n if (!ok) {\n this.warnings.push(\"nativeModules already exists but is not an object literal; move buildDependenciesFromSource/nodeGypRebuild/npmRebuild/rebuildMode into it manually.\")\n }\n }\n\n private ruleAsar(root: any): void {\n const ts = this.ts\n const asarProp = this.getProp(root, \"asar\")\n const asarVal = asarProp != null && ts.isPropertyAssignment(asarProp) ? this.unwrap(asarProp.initializer) : null\n const asarIsFalse = asarVal != null && asarVal.kind === ts.SyntaxKind.FalseKeyword\n const asarIsTrue = asarVal != null && asarVal.kind === ts.SyntaxKind.TrueKeyword\n const asarIsObject = asarVal != null && ts.isObjectLiteralExpression(asarVal)\n\n if (asarIsFalse) {\n if (this.getProp(root, \"asar-unpack\") != null || this.getProp(root, \"asar-unpack-dir\") != null || this.getProp(root, \"asarUnpack\") != null) {\n this.warnings.push(\"asar is false but asar-unpack/asarUnpack is also set. asar: false disables packaging entirely; remove the unpack keys or enable asar manually.\")\n }\n return\n }\n\n // Collect unpack sources (root-level hyphenated/camel + nested asar.unpackDir).\n const unpackSources: any[] = []\n const collectUnpack = (key: string, descKey: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n unpackSources.push(prop.initializer)\n this.removeProp(prop)\n this.changes.push({ key: descKey, description: desc })\n }\n }\n collectUnpack(\"asar-unpack\", \"asar-unpack\", \"renamed asar-unpack → asar.unpack\")\n collectUnpack(\"asar-unpack-dir\", \"asar-unpack-dir\", \"renamed asar-unpack-dir → asar.unpack\")\n collectUnpack(\"asarUnpack\", \"asarUnpack\", \"moved asarUnpack → asar.unpack\")\n\n if (asarIsObject) {\n const nestedUnpackDir = this.getProp(asarVal, \"unpackDir\")\n if (nestedUnpackDir != null && ts.isPropertyAssignment(nestedUnpackDir)) {\n unpackSources.push(nestedUnpackDir.initializer)\n this.removeProp(nestedUnpackDir)\n this.changes.push({ key: \"asar.unpackDir\", description: \"moved asar.unpackDir → asar.unpack\" })\n }\n }\n\n const childRenames: { renameTo: string; value: any }[] = []\n const collectChild = (key: string, renameTo: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n childRenames.push({ renameTo, value: prop.initializer })\n this.removeProp(prop)\n this.changes.push({ key, description: desc })\n }\n }\n collectChild(\"disableSanityCheckAsar\", \"disableSanityCheck\", \"moved disableSanityCheckAsar → asar.disableSanityCheck\")\n collectChild(\"disableAsarIntegrity\", \"disableIntegrity\", \"moved disableAsarIntegrity → asar.disableIntegrity\")\n\n if (unpackSources.length === 0 && childRenames.length === 0 && !asarIsTrue) {\n return\n }\n\n const buildEntries = (childIndent: string): string[] => {\n const out: string[] = []\n if (unpackSources.length === 1) {\n out.push(`unpack: ${this.valueText(unpackSources[0], childIndent)}`)\n } else if (unpackSources.length > 1) {\n out.push(`unpack: ${this.mergeArrays(unpackSources)}`)\n }\n for (const c of childRenames) {\n out.push(`${c.renameTo}: ${this.valueText(c.value, childIndent)}`)\n }\n return out\n }\n\n if (asarIsObject) {\n this.insertIntoObject(asarVal, buildEntries(this.propIndentFor(asarVal)))\n return\n }\n\n if (asarIsTrue) {\n const braceIndent = this.lineIndentAt(this.start(asarProp.initializer))\n const entries = buildEntries(braceIndent + this.indentUnit)\n if (entries.length === 0) {\n this.removeProp(asarProp)\n } else {\n this.replaceValue(asarProp.initializer, this.objectLiteralTextAt(entries, braceIndent))\n }\n this.changes.push({ key: \"asar\", description: \"replaced asar: true with asar object (true is no longer a valid value)\" })\n return\n }\n\n // No asar prop yet — create one on root.\n this.createChild(root, \"asar\", buildEntries(this.propIndentFor(root) + this.indentUnit))\n }\n\n private ruleAppImageSystemIntegration(root: any): void {\n const appImage = this.getObjectProp(root, \"appImage\")\n if (appImage == null) {\n return\n }\n const si = this.getProp(appImage, \"systemIntegration\")\n if (si == null) {\n return\n }\n const appImageProp = this.getProp(root, \"appImage\")\n if (appImage.properties.length === 1) {\n this.removeProp(appImageProp)\n } else {\n this.removeProp(si)\n }\n this.changes.push({ key: \"appImage.systemIntegration\", description: \"removed appImage.systemIntegration (handled automatically by AppImageLauncher in v27)\" })\n }\n\n private rulePublish(parent: any, key: string, prefix = \"\"): void {\n const ts = this.ts\n const prop = this.getProp(parent, key)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const value = this.unwrap(prop.initializer)\n const entries: any[] = ts.isArrayLiteralExpression(value) ? value.elements : [value]\n let changed = false\n for (const entry of entries) {\n const obj = this.unwrap(entry)\n if (!ts.isObjectLiteralExpression(obj)) {\n continue\n }\n const provider = this.stringLiteralValue(this.getProp(obj, \"provider\"))\n const vPrefixed = this.getProp(obj, \"vPrefixedTagName\")\n if (vPrefixed == null || !ts.isPropertyAssignment(vPrefixed)) {\n continue\n }\n if (provider === \"github\") {\n const isFalse = vPrefixed.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.replaceRange(this.start(vPrefixed), vPrefixed.end, `tagNamePrefix: ${isFalse ? '\"\"' : '\"v\"'}`)\n changed = true\n } else if (provider === \"gitlab\") {\n this.removeProp(vPrefixed)\n changed = true\n }\n }\n if (changed) {\n this.changes.push({\n key: `${prefix}${key}[].vPrefixedTagName`,\n description: \"replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries; removed from GitLab entries\",\n })\n }\n }\n\n private ruleSnap(root: any): void {\n const ts = this.ts\n const snapProp = this.getProp(root, \"snap\")\n if (snapProp == null || !ts.isPropertyAssignment(snapProp)) {\n return\n }\n const snap = this.unwrap(snapProp.initializer)\n if (!ts.isObjectLiteralExpression(snap)) {\n this.removeProp(snapProp)\n this.changes.push({ key: \"snap\", description: \"removed empty snap config (use snapcraft in v27)\" })\n return\n }\n\n const baseProp = this.getProp(snap, \"base\")\n let base = this.stringLiteralValue(baseProp)\n const restProps = snap.properties.filter((p: any) => p !== baseProp)\n\n if (base === \"custom\") {\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries = ['base: \"custom\"', ...restProps.map((p: any) => this.entryText(p, childIndent))]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: \"moved snap (base: custom) → snapcraft verbatim\" })\n return\n }\n\n let assumed = false\n if (base == null || !SNAP_BASES.has(base)) {\n if (base != null) {\n this.warnings.push(`snap config had an unrecognized base \"${base}\"; assumed \"core20\". Verify the snapcraft.base value (core18/core20/core22/core24/custom).`)\n } else {\n this.warnings.push('snap config had no \"base\"; assumed \"core20\" for snapcraft. Verify and adjust the base if needed (core18/core20/core22/core24).')\n }\n base = \"core20\"\n assumed = true\n }\n\n const baseChildIndent = this.propIndentFor(root) + this.indentUnit + this.indentUnit\n const nestedEntries = restProps.map((p: any) => this.entryText(p, baseChildIndent))\n const snapcraftChildIndent = this.propIndentFor(root) + this.indentUnit\n const nestedObject = nestedEntries.length > 0 ? this.objectLiteralTextAt(nestedEntries, snapcraftChildIndent) : \"{}\"\n const entries = [`base: \"${base}\"`, `${base}: ${nestedObject}`]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: `moved snap → snapcraft.${base}${assumed ? \" (base defaulted to core20)\" : \"\"}` })\n }\n\n private ruleHelperBundleId(root: any): void {\n const prop = this.getProp(root, \"helper-bundle-id\")\n if (prop == null || !this.ts.isPropertyAssignment(prop)) {\n return\n }\n const mac = this.getObjectProp(root, \"mac\")\n if (mac != null && this.getProp(mac, \"helperBundleId\") != null) {\n this.removeProp(prop)\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n return\n }\n const ok = this.moveInto(root, \"mac\", [{ prop, renameTo: \"helperBundleId\" }], [])\n if (ok) {\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n } else {\n this.warnings.push(\"mac already exists but is not an object literal; move helper-bundle-id → mac.helperBundleId manually.\")\n }\n }\n\n private ruleSquirrelNoMsi(root: any): void {\n const ts = this.ts\n const sq = this.getObjectProp(root, \"squirrelWindows\")\n if (sq == null) {\n return\n }\n const noMsi = this.getProp(sq, \"noMsi\")\n if (noMsi == null || !ts.isPropertyAssignment(noMsi)) {\n return\n }\n if (this.getProp(sq, \"msi\") != null) {\n this.removeProp(noMsi)\n } else {\n this.replaceRange(this.start(noMsi), noMsi.end, `msi: ${this.negate(noMsi.initializer)}`)\n }\n this.changes.push({ key: \"squirrelWindows.noMsi\", description: \"replaced squirrelWindows.noMsi → squirrelWindows.msi (inverted boolean)\" })\n }\n\n private ruleWinSign(root: any): void {\n const ts = this.ts\n const win = this.getObjectProp(root, \"win\")\n if (win == null) {\n return\n }\n\n let signSet = this.getProp(win, \"sign\") != null\n\n const signAndEdit = this.getProp(win, \"signAndEditExecutable\")\n if (signAndEdit != null && ts.isPropertyAssignment(signAndEdit)) {\n const isFalse = signAndEdit.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signAndEdit)\n if (isFalse) {\n this.warnings.push(\n \"win.signAndEditExecutable: false was used to skip both resource editing and signing. In v27, resource editing always runs. To skip signing only, set win.sign: false. There is no v27 equivalent that also skips resource editing — apply resources manually if needed.\"\n )\n } else {\n this.changes.push({ key: \"win.signAndEditExecutable\", description: \"removed win.signAndEditExecutable (resource editing always runs in v27; was the default)\" })\n }\n }\n\n const signExe = this.getProp(win, \"signExecutable\")\n if (signExe != null && ts.isPropertyAssignment(signExe)) {\n const isFalse = signExe.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signExe)\n if (isFalse && !signSet) {\n this.createChild(win, \"sign\", [], \"false\")\n signSet = true\n this.changes.push({ key: \"win.signExecutable\", description: \"replaced win.signExecutable: false with win.sign: false (disables signing; resource editing still runs)\" })\n } else {\n this.changes.push({ key: \"win.signExecutable\", description: \"removed win.signExecutable (signing is enabled by default when credentials are available)\" })\n }\n }\n\n const azure = this.getObjectProp(win, \"azureSignOptions\")\n const signtool = this.getObjectProp(win, \"signtoolOptions\")\n const hasAzure = azure != null\n const hasSigntool = signtool != null\n if (!hasAzure && !hasSigntool) {\n return\n }\n\n const originalSign = this.getProp(win, \"sign\")\n const signAlreadySet = signSet || (originalSign != null && ts.isPropertyAssignment(originalSign) && originalSign.initializer.kind !== ts.SyntaxKind.NullKeyword)\n if (signAlreadySet) {\n this.warnings.push(\n `win.sign is already set alongside ${hasAzure ? \"win.azureSignOptions\" : \"win.signtoolOptions\"}. Remove the legacy key manually after verifying win.sign is correct.`\n )\n return\n }\n\n if (hasAzure && hasSigntool) {\n this.warnings.push(\n \"Both win.azureSignOptions and win.signtoolOptions are set. win.signtoolOptions will be dropped and win.azureSignOptions will be migrated to win.sign: { type: 'azure', … } (Azure took priority in v26). Verify the migrated win.sign block is correct for your project.\"\n )\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n }\n\n if (hasAzure) {\n this.buildWinAzureSign(win, azure)\n this.removeProp(this.getProp(win, \"azureSignOptions\"))\n this.changes.push({ key: \"win.azureSignOptions\", description: 'moved win.azureSignOptions → win.sign: { type: \"azure\", … }' })\n } else {\n this.buildWinSigntoolSign(win, signtool)\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n this.changes.push({ key: \"win.signtoolOptions\", description: 'moved win.signtoolOptions → win.sign: { type: \"signtool\", … }' })\n }\n }\n\n private buildWinSigntoolSign(win: any, signtool: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const entries: string[] = []\n for (const p of signtool.properties) {\n if (ts.isPropertyAssignment(p) && this.propName(p) === \"type\") {\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n entries.push('type: \"signtool\"')\n this.createChild(win, \"sign\", entries)\n }\n\n private buildWinAzureSign(win: any, azure: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const metaIndent = childIndent + this.indentUnit\n\n const knownEntries: string[] = []\n const metaEntries: string[] = []\n const extraKeys: string[] = []\n let existingMeta: any = null\n\n for (const p of azure.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"type\") {\n continue\n }\n if (name === \"additionalMetadata\") {\n existingMeta = this.unwrap(p.initializer)\n continue\n }\n const isString = ts.isStringLiteral(p.initializer)\n if (AZURE_KNOWN_FIELDS.has(name!)) {\n knownEntries.push(this.entryText(p, childIndent))\n } else if (isString) {\n metaEntries.push(this.entryText(p, metaIndent))\n extraKeys.push(name!)\n } else {\n // Unknown non-string field — keep verbatim so nothing is silently dropped.\n knownEntries.push(this.entryText(p, childIndent))\n }\n }\n\n if (existingMeta != null && ts.isObjectLiteralExpression(existingMeta)) {\n for (const p of existingMeta.properties) {\n metaEntries.push(this.entryText(p, metaIndent))\n }\n }\n\n const signEntries = [...knownEntries]\n if (metaEntries.length > 0) {\n signEntries.push(`additionalMetadata: ${this.objectLiteralTextAt(metaEntries, childIndent)}`)\n this.changes.push({ key: \"win.azureSignOptions\", description: `moved extra keys [${extraKeys.join(\", \")}] into win.sign.additionalMetadata` })\n }\n signEntries.push('type: \"azure\"')\n this.createChild(win, \"sign\", signEntries)\n }\n\n private ruleMacSigning(platform: any, name: string): void {\n const ts = this.ts\n const present = MAC_SIGN_FIELDS.filter(f => this.getProp(platform, f) != null)\n const signIgnore = this.getProp(platform, \"signIgnore\")\n const hasSignIgnore = signIgnore != null\n const existingSignProp = this.getProp(platform, \"sign\")\n const existingSign = existingSignProp != null && ts.isPropertyAssignment(existingSignProp) ? this.unwrap(existingSignProp.initializer) : null\n const signIsCustom =\n existingSign != null && (ts.isStringLiteral(existingSign) || ts.isArrowFunction(existingSign) || ts.isFunctionExpression(existingSign) || ts.isIdentifier(existingSign))\n const signIsNull = existingSign != null && existingSign.kind === ts.SyntaxKind.NullKeyword\n\n if (present.length === 0 && !hasSignIgnore) {\n if (signIsNull) {\n this.removeProp(existingSignProp)\n this.changes.push({ key: `${name}.sign`, description: `removed ${name}.sign: null (v26 \"no custom signer\" = v27 default; sign: null now means skip signing)` })\n }\n return\n }\n\n if (signIsCustom) {\n const fields = [...present, ...(hasSignIgnore ? [\"signIgnore\"] : [])].join(\", \")\n this.warnings.push(\n `${name}.sign is a custom signing function/path, which cannot hold options. Move [${fields}] into an ElectronSignOptions object manually, or keep the custom signer and drop them.`\n )\n return\n }\n\n const sources: { prop: any; renameTo?: string }[] = []\n for (const f of present) {\n const prop = this.getProp(platform, f)\n sources.push({ prop })\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.sign.${f}` })\n }\n if (hasSignIgnore) {\n sources.push({ prop: signIgnore, renameTo: \"ignore\" })\n this.changes.push({ key: `${name}.signIgnore`, description: `renamed ${name}.signIgnore → ${name}.sign.ignore` })\n }\n\n // A bare `sign: null` should be dropped before we build the options object.\n if (signIsNull) {\n this.removeProp(existingSignProp)\n }\n this.moveInto(platform, \"sign\", sources, [], /* treatNullAsAbsent */ true)\n }\n\n private ruleMacUniversal(platform: any, name: string): void {\n const present = MAC_UNIVERSAL_FIELDS.filter(f => this.getProp(platform, f) != null)\n if (present.length === 0) {\n return\n }\n const sources = present.map(f => {\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.universal.${f}` })\n return { prop: this.getProp(platform, f) }\n })\n const ok = this.moveInto(platform, \"universal\", sources, [])\n if (!ok) {\n this.warnings.push(`${name}.universal already exists but is not an object literal; move ${present.join(\", \")} into it manually.`)\n }\n }\n\n private ruleElectronDownload(root: any): void {\n const ts = this.ts\n const prop = this.getProp(root, \"electronDownload\")\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const old = this.unwrap(prop.initializer)\n if (!ts.isObjectLiteralExpression(old)) {\n this.renameKey(prop, \"electronGet\")\n this.changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet\" })\n return\n }\n\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries: string[] = []\n const dropped: string[] = []\n let mirrorValueText: string | null = null\n let existingMirrorOptions: any = null\n\n for (const p of old.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"mirror\") {\n mirrorValueText = this.valueText(p.initializer, childIndent + this.indentUnit)\n continue\n }\n if (name === \"isVerifyChecksum\") {\n if (p.initializer.kind === ts.SyntaxKind.FalseKeyword) {\n entries.push(\"unsafelyDisableChecksums: true\")\n } else {\n this.warnings.push(\"electronGet: isVerifyChecksum had a non-false value; review electronGet.unsafelyDisableChecksums manually.\")\n }\n continue\n }\n if ((ELECTRON_DOWNLOAD_DROPPED as readonly string[]).includes(name!)) {\n dropped.push(name!)\n continue\n }\n if (name === \"mirrorOptions\") {\n existingMirrorOptions = this.unwrap(p.initializer)\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n\n if (mirrorValueText != null || existingMirrorOptions != null) {\n const moInner: string[] = []\n if (existingMirrorOptions != null && ts.isObjectLiteralExpression(existingMirrorOptions)) {\n for (const p of existingMirrorOptions.properties) {\n moInner.push(this.entryText(p, childIndent + this.indentUnit))\n }\n }\n if (mirrorValueText != null) {\n moInner.push(`mirror: ${mirrorValueText}`)\n }\n entries.push(`mirrorOptions: ${this.objectLiteralTextAt(moInner, childIndent)}`)\n }\n\n if (dropped.length > 0) {\n this.warnings.push(\n `electronGet (formerly electronDownload) dropped [${dropped.join(\", \")}] — these have no equivalent in @electron/get v5. Set a mirror via electronGet.mirrorOptions if needed.`\n )\n }\n\n this.removeProp(prop)\n this.createChild(root, \"electronGet\", entries)\n this.changes.push({\n key: \"electronDownload\",\n description: \"renamed electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\",\n })\n }\n\n // ── Edit primitives ───────────────────────────────────────────────────────\n\n /**\n * Moves `sources` properties into a child object `childKey` of `parent` (creating it when absent).\n * Returns false when the child exists but is not an object literal (caller should warn).\n */\n private moveInto(parent: any, childKey: string, sources: { prop: any; renameTo?: string }[], extraEntries: string[], treatNullAsAbsent = false): boolean {\n const ts = this.ts\n const existingProp = this.getProp(parent, childKey)\n let existingObj: any = null\n if (existingProp != null && ts.isPropertyAssignment(existingProp)) {\n const v = this.unwrap(existingProp.initializer)\n if (ts.isObjectLiteralExpression(v)) {\n existingObj = v\n } else if (!(treatNullAsAbsent && v.kind === ts.SyntaxKind.NullKeyword)) {\n return false\n }\n }\n\n if (existingObj != null) {\n const childIndent = this.propIndentFor(existingObj)\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.insertIntoObject(existingObj, entries)\n return true\n }\n\n const childIndent = this.propIndentFor(parent) + this.indentUnit\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.createChild(parent, childKey, entries)\n return true\n }\n\n /** Prepends `childKey: { entries }` (or `childKey: rawValue`) as the first property of `parent`. */\n private createChild(parent: any, childKey: string, entries: string[], rawValue?: string): void {\n const parentPropIndent = this.propIndentFor(parent)\n const value = rawValue != null ? rawValue : this.objectLiteralTextAt(entries, parentPropIndent)\n const braceEnd = this.start(parent) + 1\n this.insertEdit(braceEnd, `\\n${parentPropIndent}${childKey}: ${value},`)\n }\n\n /** Inserts already-built \"key: value\" entries as the first properties of `objLit`. */\n private insertIntoObject(objLit: any, entries: string[]): void {\n if (entries.length === 0) {\n return\n }\n const propIndent = this.propIndentFor(objLit)\n const braceEnd = this.start(objLit) + 1\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n if (objLit.properties.length > 0) {\n this.insertEdit(braceEnd, body)\n } else {\n const objLineIndent = this.lineIndentAt(this.start(objLit))\n this.insertEdit(braceEnd, body + `\\n${objLineIndent}`)\n }\n }\n\n /** Renders a multi-line object literal whose closing brace aligns to `braceIndent`. */\n private objectLiteralTextAt(entries: string[], braceIndent: string): string {\n if (entries.length === 0) {\n return \"{}\"\n }\n const propIndent = braceIndent + this.indentUnit\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n return `{${body}\\n${braceIndent}}`\n }\n\n private removeProp(prop: any): void {\n if (prop == null) {\n return\n }\n this.replaceRange(prop.pos, this.endWithTrailingComma(prop), \"\")\n }\n\n private renameKey(prop: any, newName: string): void {\n this.replaceRange(this.start(prop.name), prop.name.end, newName)\n }\n\n private replaceValue(valueNode: any, newText: string): void {\n this.replaceRange(this.start(valueNode), valueNode.end, newText)\n }\n\n /** \"key: value\" text for a property, re-indenting a multi-line value to `targetIndent`. */\n private entryText(prop: any, targetIndent: string, renameTo?: string): string {\n if (prop.name == null) {\n // Spread assignment (`...x`) or other nameless member — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n const keyText = renameTo != null ? renameTo : this.text.slice(this.start(prop.name), prop.name.end)\n if (this.ts.isPropertyAssignment(prop)) {\n return `${keyText}: ${this.valueText(prop.initializer, targetIndent)}`\n }\n if (this.ts.isShorthandPropertyAssignment(prop)) {\n return keyText\n }\n // Method / accessor — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n\n /** Source text of a value node, re-indenting continuation lines from its original to `targetIndent`. */\n private valueText(valueNode: any, targetIndent: string): string {\n const raw = this.text.slice(this.start(valueNode), valueNode.end)\n if (!raw.includes(\"\\n\")) {\n return raw\n }\n const fromIndent = this.lineIndentAt(this.start(valueNode))\n return this.reindent(raw, fromIndent, targetIndent)\n }\n\n private mergeArrays(valueNodes: any[]): string {\n const ts = this.ts\n const elems: string[] = []\n for (const v of valueNodes) {\n const node = this.unwrap(v)\n if (ts.isArrayLiteralExpression(node)) {\n for (const el of node.elements) {\n elems.push(this.text.slice(this.start(el), el.end))\n }\n } else {\n elems.push(this.text.slice(this.start(node), node.end))\n }\n }\n return `[${elems.join(\", \")}]`\n }\n\n private negate(valueNode: any): string {\n const ts = this.ts\n if (valueNode.kind === ts.SyntaxKind.TrueKeyword) {\n return \"false\"\n }\n if (valueNode.kind === ts.SyntaxKind.FalseKeyword) {\n return \"true\"\n }\n return `!(${this.text.slice(this.start(valueNode), valueNode.end)})`\n }\n\n // ── Low-level helpers ──────────────────────────────────────────────────────\n\n private start(node: any): number {\n return node.getStart(this.sf)\n }\n\n private getProp(objLit: any, name: string): any | null {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (p.name == null) {\n continue\n }\n let key: string | undefined\n if (ts.isIdentifier(p.name) || ts.isStringLiteral(p.name) || ts.isNumericLiteral(p.name)) {\n key = p.name.text\n } else {\n continue\n }\n if (key === name) {\n return p\n }\n }\n return null\n }\n\n private getObjectProp(objLit: any, name: string): any | null {\n const ts = this.ts\n const prop = this.getProp(objLit, name)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return null\n }\n const v = this.unwrap(prop.initializer)\n return ts.isObjectLiteralExpression(v) ? v : null\n }\n\n private propName(prop: any): string | undefined {\n const ts = this.ts\n if (prop.name != null && (ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name) || ts.isNumericLiteral(prop.name))) {\n return prop.name.text\n }\n return undefined\n }\n\n private stringLiteralValue(prop: any): string | undefined {\n const ts = this.ts\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return undefined\n }\n const v = this.unwrap(prop.initializer)\n return ts.isStringLiteral(v) ? v.text : undefined\n }\n\n private endWithTrailingComma(prop: any): number {\n let i = prop.end\n while (i < this.text.length && (this.text[i] === \" \" || this.text[i] === \"\\t\")) {\n i++\n }\n return this.text[i] === \",\" ? i + 1 : prop.end\n }\n\n private lineIndentAt(pos: number): string {\n let i = pos\n while (i > 0 && this.text[i - 1] !== \"\\n\") {\n i--\n }\n let j = i\n while (j < this.text.length && (this.text[j] === \" \" || this.text[j] === \"\\t\")) {\n j++\n }\n return this.text.slice(i, j)\n }\n\n private detectIndentUnit(root: any): string {\n const braceIndent = this.lineIndentAt(this.start(root))\n for (const p of root.properties) {\n const pi = this.lineIndentAt(this.start(p))\n if (pi.length > braceIndent.length) {\n return pi.slice(braceIndent.length)\n }\n }\n return \" \"\n }\n\n private propIndentFor(objLit: any): string {\n for (const p of objLit.properties) {\n return this.lineIndentAt(this.start(p))\n }\n return this.lineIndentAt(this.start(objLit)) + this.indentUnit\n }\n\n private reindent(text: string, fromIndent: string, toIndent: string): string {\n const delta = toIndent.length - fromIndent.length\n if (delta === 0) {\n return text\n }\n const lines = text.split(\"\\n\")\n return lines\n .map((line, idx) => {\n if (idx === 0) {\n return line\n }\n if (delta > 0) {\n return \" \".repeat(delta) + line\n }\n let removed = 0\n let k = 0\n while (k < line.length && removed < -delta && line[k] === \" \") {\n k++\n removed++\n }\n return line.slice(k)\n })\n .join(\"\\n\")\n }\n\n private replaceRange(start: number, end: number, text: string): void {\n this.edits.push({ start, end, text })\n }\n\n private insertEdit(pos: number, text: string): void {\n this.edits.push({ start: pos, end: pos, text })\n }\n\n apply(): string {\n const edits = [...this.edits].sort((a, b) => a.start - b.start || a.end - b.end)\n let out = \"\"\n let cursor = 0\n for (const e of edits) {\n if (e.start < cursor) {\n throw new Error(`overlapping edits at ${e.start} (cursor ${cursor})`)\n }\n out += this.text.slice(cursor, e.start) + e.text\n cursor = e.end\n }\n out += this.text.slice(cursor)\n return out\n }\n}\n"]}
1
+ {"version":3,"file":"migrate-schema-programmatic.js","sourceRoot":"","sources":["../../src/cli/migrate-schema-programmatic.ts"],"names":[],"mappings":"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","sourcesContent":["import { createRequire } from \"node:module\"\nimport * as path from \"path\"\nimport { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_UNIVERSAL_FIELDS, SNAP_BASES } from \"./migrate-schema.js\"\nimport type { MigrationChange } from \"./migrate-schema.js\"\n\nconst _require = createRequire(import.meta.url)\n\n// `typescript` is intentionally NOT a dependency of electron-builder — it is loaded lazily (same\n// pattern as js-yaml/json5/toml) and the feature degrades to manual steps when it is unavailable.\n// Types are kept loose (`any`) on purpose so no `typescript` types are required at compile time.\nlet tsModuleCache: any | null | undefined\nexport function loadTypeScript(): any | null {\n if (tsModuleCache !== undefined) {\n return tsModuleCache\n }\n try {\n tsModuleCache = _require(\"typescript\")\n } catch {\n tsModuleCache = null\n }\n return tsModuleCache\n}\n\nexport type ProgrammaticMigrationStatus = \"migrated\" | \"no-op\" | \"unsupported\"\n\nexport interface ProgrammaticMigrationResult {\n /** Rewritten source. Equal to the input when nothing changed or the config is unsupported. */\n readonly code: string\n readonly changes: MigrationChange[]\n readonly warnings: string[]\n readonly status: ProgrammaticMigrationStatus\n /** Set when status === \"unsupported\": why the config could not be auto-migrated. */\n readonly unsupportedReason?: string\n}\n\ninterface Edit {\n start: number\n end: number\n text: string\n}\n\n/**\n * Migrates a programmatic JS/TS electron-builder config (the same v26→v27 transforms as\n * {@link migrateConfig}) by surgically rewriting the source text. The TypeScript parser is used only\n * to locate node ranges; everything outside an edited range is preserved byte-for-byte, so comments,\n * imports, functions, and formatting are untouched.\n *\n * Pure: source string in, result out. No file I/O. Returns status \"unsupported\" (with the source\n * unchanged) when typescript is not installed or the config cannot be statically reduced to a single\n * object literal (function that builds the object dynamically, spreads, computed keys, …).\n */\nexport function migrateProgrammaticSource(sourceText: string, fileName: string): ProgrammaticMigrationResult {\n const ts = loadTypeScript()\n if (ts == null) {\n return { code: sourceText, changes: [], warnings: [], status: \"unsupported\", unsupportedReason: \"typescript-not-installed\" }\n }\n\n const scriptKind = scriptKindFor(ts, fileName)\n const sf = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, /* setParentNodes */ true, scriptKind)\n\n const codemod = new ConfigCodemod(ts, sf, sourceText)\n const located = codemod.locateConfigObject()\n if (located.objLit == null) {\n return { code: sourceText, changes: [], warnings: [], status: \"unsupported\", unsupportedReason: located.reason }\n }\n\n codemod.run(located.objLit)\n if (codemod.edits.length === 0) {\n return { code: sourceText, changes: codemod.changes, warnings: codemod.warnings, status: \"no-op\" }\n }\n return { code: codemod.apply(), changes: codemod.changes, warnings: codemod.warnings, status: \"migrated\" }\n}\n\nfunction scriptKindFor(ts: any, fileName: string): any {\n const ext = path.extname(fileName).toLowerCase()\n switch (ext) {\n case \".ts\":\n case \".cts\":\n case \".mts\":\n return ts.ScriptKind.TS\n case \".tsx\":\n return ts.ScriptKind.TSX\n case \".jsx\":\n return ts.ScriptKind.JSX\n default:\n return ts.ScriptKind.JS\n }\n}\n\nclass ConfigCodemod {\n readonly edits: Edit[] = []\n readonly changes: MigrationChange[] = []\n readonly warnings: string[] = []\n private indentUnit = \" \"\n\n constructor(\n private readonly ts: any,\n private readonly sf: any,\n private readonly text: string\n ) {}\n\n // ── Locate the config object literal ──────────────────────────────────────\n\n locateConfigObject(): { objLit?: any; reason?: string } {\n const ts = this.ts\n const candidates: any[] = []\n\n for (const stmt of this.sf.statements) {\n if (ts.isExportAssignment(stmt)) {\n // `export default <expr>` and `export = <expr>`\n candidates.push(stmt.expression)\n } else if (ts.isExpressionStatement(stmt) && ts.isBinaryExpression(stmt.expression) && stmt.expression.operatorToken.kind === ts.SyntaxKind.EqualsToken) {\n const lhs = stmt.expression.left\n if (this.isModuleExportsTarget(lhs)) {\n candidates.push(stmt.expression.right)\n }\n } else if (ts.isFunctionDeclaration(stmt) && this.hasDefaultExport(stmt)) {\n // `export default function () { return {...} }`\n const lit = this.literalFromFunctionLike(stmt)\n if (lit != null) {\n candidates.push(lit)\n }\n }\n }\n\n // Inline `build({ config: {...} })` form (programmatic-usage.md). Search the whole tree.\n this.forEachDescendant(this.sf, node => {\n const cfg = this.configArgOfBuildCall(node)\n if (cfg != null) {\n candidates.push(cfg)\n }\n })\n\n let reason = \"no electron-builder config object literal found (expected a default/module.exports object export or a build({ config }) call)\"\n for (const candidate of candidates) {\n const resolved = this.resolveToObjectLiteral(candidate, 0)\n if (resolved.objLit != null) {\n return { objLit: resolved.objLit }\n }\n if (resolved.reason != null) {\n reason = resolved.reason\n }\n }\n return { reason }\n }\n\n private isModuleExportsTarget(lhs: any): boolean {\n const ts = this.ts\n if (!ts.isPropertyAccessExpression(lhs)) {\n return false\n }\n // module.exports = ... OR exports.default = ...\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"module\" && lhs.name.text === \"exports\") {\n return true\n }\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"exports\" && lhs.name.text === \"default\") {\n return true\n }\n return false\n }\n\n private hasDefaultExport(node: any): boolean {\n const ts = this.ts\n const mods = node.modifiers\n if (mods == null) {\n return false\n }\n let hasExport = false\n let hasDefault = false\n for (const m of mods) {\n if (m.kind === ts.SyntaxKind.ExportKeyword) {\n hasExport = true\n }\n if (m.kind === ts.SyntaxKind.DefaultKeyword) {\n hasDefault = true\n }\n }\n return hasExport && hasDefault\n }\n\n private configArgOfBuildCall(node: any): any | null {\n const ts = this.ts\n if (!ts.isCallExpression(node)) {\n return null\n }\n const callee = node.expression\n const isBuild = (ts.isIdentifier(callee) && callee.text === \"build\") || (ts.isPropertyAccessExpression(callee) && callee.name.text === \"build\")\n if (!isBuild || node.arguments.length === 0) {\n return null\n }\n const arg0 = node.arguments[0]\n if (!ts.isObjectLiteralExpression(arg0)) {\n return null\n }\n const configProp = this.getProp(arg0, \"config\")\n return configProp != null && ts.isPropertyAssignment(configProp) ? configProp.initializer : null\n }\n\n private resolveToObjectLiteral(expr: any, depth: number): { objLit?: any; reason?: string } {\n const ts = this.ts\n if (depth > 6) {\n return { reason: \"config export could not be resolved (too many indirections)\" }\n }\n const node = this.unwrap(expr)\n if (ts.isObjectLiteralExpression(node)) {\n if (this.hasSpreadOrComputed(node)) {\n return { reason: \"config object uses a spread (`...`) or computed key, which cannot be migrated automatically\" }\n }\n return { objLit: node }\n }\n if (ts.isIdentifier(node)) {\n const init = this.findVariableInitializer(node.text)\n if (init == null) {\n return { reason: `config export references \"${node.text}\", which is not a local object literal` }\n }\n return this.resolveToObjectLiteral(init, depth + 1)\n }\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {\n const lit = this.literalFromFunctionLike(node)\n if (lit == null) {\n return { reason: \"config is a function that does not return a single object literal — migrate it manually\" }\n }\n return this.resolveToObjectLiteral(lit, depth + 1)\n }\n return { reason: \"config export is not an object literal — migrate it manually\" }\n }\n\n /** Unwraps parentheses and type-only wrappers (`as`, `satisfies`, `!`, `<T>x`) to the inner expression. */\n private unwrap(node: any): any {\n const ts = this.ts\n let n = node\n for (;;) {\n if (\n ts.isParenthesizedExpression(n) ||\n ts.isAsExpression(n) ||\n (ts.isSatisfiesExpression && ts.isSatisfiesExpression(n)) ||\n ts.isNonNullExpression(n) ||\n ts.isTypeAssertionExpression?.(n)\n ) {\n n = n.expression\n } else {\n return n\n }\n }\n }\n\n private hasSpreadOrComputed(objLit: any): boolean {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (ts.isSpreadAssignment(p)) {\n return true\n }\n if (p.name != null && ts.isComputedPropertyName(p.name)) {\n return true\n }\n }\n return false\n }\n\n private findVariableInitializer(name: string): any | null {\n const ts = this.ts\n for (const stmt of this.sf.statements) {\n if (!ts.isVariableStatement(stmt)) {\n continue\n }\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text === name && decl.initializer != null) {\n return decl.initializer\n }\n }\n }\n return null\n }\n\n /** Returns the single object-literal expression a function-like trivially yields, or null. */\n private literalFromFunctionLike(fn: any): any | null {\n const ts = this.ts\n const body = fn.body\n if (body == null) {\n return null\n }\n if (!ts.isBlock(body)) {\n // arrow expression body: `() => ({...})` / `() => obj`\n return body\n }\n const returns: any[] = []\n this.collectReturns(body, returns)\n if (returns.length !== 1 || returns[0].expression == null) {\n return null\n }\n return returns[0].expression\n }\n\n private collectReturns(node: any, out: any[]): void {\n const ts = this.ts\n const visit = (n: any): void => {\n // Don't descend into nested functions — their returns are not the config's.\n if (ts.isFunctionDeclaration(n) || ts.isFunctionExpression(n) || ts.isArrowFunction(n)) {\n return\n }\n if (ts.isReturnStatement(n)) {\n out.push(n)\n }\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n private forEachDescendant(node: any, cb: (n: any) => void): void {\n const visit = (n: any): void => {\n cb(n)\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n // ── Run all rules ─────────────────────────────────────────────────────────\n\n run(root: any): void {\n this.indentUnit = this.detectIndentUnit(root)\n this.ruleRemoveKeys(root, [\"electronCompile\"], \"removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)\")\n this.ruleRemoveKeys(root, [\"framework\", \"nodeVersion\", \"launchUiVersion\"], key => `removed ${key} (Electron is the only supported framework in v27)`)\n const disableDefaultIgnoredFilesDesc = \"removed disableDefaultIgnoredFiles (in v27, include a default-excluded file via an explicit `files` glob, e.g. `**/*.obj`)\"\n this.ruleRemoveKeys(root, [\"disableDefaultIgnoredFiles\"], disableDefaultIgnoredFilesDesc)\n // mas/masDev are MacConfiguration-derived, so they accept the (now-removed) key too.\n for (const platform of [\"mac\", \"mas\", \"masDev\", \"win\", \"linux\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.ruleRemoveKeys(p, [\"disableDefaultIgnoredFiles\"], disableDefaultIgnoredFilesDesc)\n }\n }\n this.ruleNativeModules(root)\n this.ruleAsar(root)\n this.ruleAppImageSystemIntegration(root)\n this.rulePublish(root, \"publish\")\n for (const platform of [\"mac\", \"win\", \"linux\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.rulePublish(p, \"publish\", platform + \".\")\n }\n }\n this.ruleSnap(root)\n this.ruleHelperBundleId(root)\n this.ruleSquirrelNoMsi(root)\n this.ruleWinSign(root)\n for (const platform of [\"mac\", \"mas\", \"masDev\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.ruleMacSigning(p, platform)\n this.ruleMacUniversal(p, platform)\n }\n }\n this.ruleElectronDownload(root)\n }\n\n // ── Rules ───────────────────────────────────────────────────────────────\n\n private ruleRemoveKeys(obj: any, keys: string[], description: string | ((key: string) => string)): void {\n for (const key of keys) {\n const prop = this.getProp(obj, key)\n if (prop != null) {\n this.removeProp(prop)\n this.changes.push({ key, description: typeof description === \"function\" ? description(key) : description })\n }\n }\n }\n\n private ruleNativeModules(root: any): void {\n const sources: { prop: any; renameTo?: string }[] = []\n const extraEntries: string[] = []\n\n for (const key of [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\"]) {\n const prop = this.getProp(root, key)\n if (prop != null) {\n sources.push({ prop })\n this.changes.push({ key, description: `moved ${key} → nativeModules.${key}` })\n }\n }\n\n const nativeRebuilder = this.getProp(root, \"nativeRebuilder\")\n if (nativeRebuilder != null) {\n sources.push({ prop: nativeRebuilder, renameTo: \"rebuildMode\" })\n this.changes.push({ key: \"nativeRebuilder\", description: \"renamed nativeRebuilder → nativeModules.rebuildMode\" })\n }\n\n const npmSkip = this.getProp(root, \"npmSkipBuildFromSource\")\n if (npmSkip != null && this.ts.isPropertyAssignment(npmSkip)) {\n const hasBds = this.getProp(root, \"buildDependenciesFromSource\") != null\n if (!hasBds) {\n extraEntries.push(`buildDependenciesFromSource: ${this.negate(npmSkip.initializer)}`)\n }\n this.removeProp(npmSkip)\n this.changes.push({ key: \"npmSkipBuildFromSource\", description: \"renamed npmSkipBuildFromSource → buildDependenciesFromSource (then grouped under nativeModules)\" })\n }\n\n if (sources.length === 0 && extraEntries.length === 0) {\n return\n }\n const ok = this.moveInto(root, \"nativeModules\", sources, extraEntries)\n if (!ok) {\n this.warnings.push(\"nativeModules already exists but is not an object literal; move buildDependenciesFromSource/nodeGypRebuild/npmRebuild/rebuildMode into it manually.\")\n }\n }\n\n private ruleAsar(root: any): void {\n const ts = this.ts\n const asarProp = this.getProp(root, \"asar\")\n const asarVal = asarProp != null && ts.isPropertyAssignment(asarProp) ? this.unwrap(asarProp.initializer) : null\n const asarIsFalse = asarVal != null && asarVal.kind === ts.SyntaxKind.FalseKeyword\n const asarIsTrue = asarVal != null && asarVal.kind === ts.SyntaxKind.TrueKeyword\n const asarIsObject = asarVal != null && ts.isObjectLiteralExpression(asarVal)\n\n if (asarIsFalse) {\n if (this.getProp(root, \"asar-unpack\") != null || this.getProp(root, \"asar-unpack-dir\") != null || this.getProp(root, \"asarUnpack\") != null) {\n this.warnings.push(\"asar is false but asar-unpack/asarUnpack is also set. asar: false disables packaging entirely; remove the unpack keys or enable asar manually.\")\n }\n return\n }\n\n // Collect unpack sources (root-level hyphenated/camel + nested asar.unpackDir).\n const unpackSources: any[] = []\n const collectUnpack = (key: string, descKey: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n unpackSources.push(prop.initializer)\n this.removeProp(prop)\n this.changes.push({ key: descKey, description: desc })\n }\n }\n collectUnpack(\"asar-unpack\", \"asar-unpack\", \"renamed asar-unpack → asar.unpack\")\n collectUnpack(\"asar-unpack-dir\", \"asar-unpack-dir\", \"renamed asar-unpack-dir → asar.unpack\")\n collectUnpack(\"asarUnpack\", \"asarUnpack\", \"moved asarUnpack → asar.unpack\")\n\n if (asarIsObject) {\n const nestedUnpackDir = this.getProp(asarVal, \"unpackDir\")\n if (nestedUnpackDir != null && ts.isPropertyAssignment(nestedUnpackDir)) {\n unpackSources.push(nestedUnpackDir.initializer)\n this.removeProp(nestedUnpackDir)\n this.changes.push({ key: \"asar.unpackDir\", description: \"moved asar.unpackDir → asar.unpack\" })\n }\n }\n\n const childRenames: { renameTo: string; value: any }[] = []\n const collectChild = (key: string, renameTo: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n childRenames.push({ renameTo, value: prop.initializer })\n this.removeProp(prop)\n this.changes.push({ key, description: desc })\n }\n }\n collectChild(\"disableSanityCheckAsar\", \"disableSanityCheck\", \"moved disableSanityCheckAsar → asar.disableSanityCheck\")\n collectChild(\"disableAsarIntegrity\", \"disableIntegrity\", \"moved disableAsarIntegrity → asar.disableIntegrity\")\n\n if (unpackSources.length === 0 && childRenames.length === 0 && !asarIsTrue) {\n return\n }\n\n const buildEntries = (childIndent: string): string[] => {\n const out: string[] = []\n if (unpackSources.length === 1) {\n out.push(`unpack: ${this.valueText(unpackSources[0], childIndent)}`)\n } else if (unpackSources.length > 1) {\n out.push(`unpack: ${this.mergeArrays(unpackSources)}`)\n }\n for (const c of childRenames) {\n out.push(`${c.renameTo}: ${this.valueText(c.value, childIndent)}`)\n }\n return out\n }\n\n if (asarIsObject) {\n this.insertIntoObject(asarVal, buildEntries(this.propIndentFor(asarVal)))\n return\n }\n\n if (asarIsTrue) {\n const braceIndent = this.lineIndentAt(this.start(asarProp.initializer))\n const entries = buildEntries(braceIndent + this.indentUnit)\n if (entries.length === 0) {\n this.removeProp(asarProp)\n } else {\n this.replaceValue(asarProp.initializer, this.objectLiteralTextAt(entries, braceIndent))\n }\n this.changes.push({ key: \"asar\", description: \"replaced asar: true with asar object (true is no longer a valid value)\" })\n return\n }\n\n // No asar prop yet — create one on root.\n this.createChild(root, \"asar\", buildEntries(this.propIndentFor(root) + this.indentUnit))\n }\n\n private ruleAppImageSystemIntegration(root: any): void {\n const appImage = this.getObjectProp(root, \"appImage\")\n if (appImage == null) {\n return\n }\n const si = this.getProp(appImage, \"systemIntegration\")\n if (si == null) {\n return\n }\n const appImageProp = this.getProp(root, \"appImage\")\n if (appImage.properties.length === 1) {\n this.removeProp(appImageProp)\n } else {\n this.removeProp(si)\n }\n this.changes.push({ key: \"appImage.systemIntegration\", description: \"removed appImage.systemIntegration (handled automatically by AppImageLauncher in v27)\" })\n }\n\n private rulePublish(parent: any, key: string, prefix = \"\"): void {\n const ts = this.ts\n const prop = this.getProp(parent, key)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const value = this.unwrap(prop.initializer)\n const entries: any[] = ts.isArrayLiteralExpression(value) ? value.elements : [value]\n let changed = false\n for (const entry of entries) {\n const obj = this.unwrap(entry)\n if (!ts.isObjectLiteralExpression(obj)) {\n continue\n }\n const provider = this.stringLiteralValue(this.getProp(obj, \"provider\"))\n const vPrefixed = this.getProp(obj, \"vPrefixedTagName\")\n if (vPrefixed == null || !ts.isPropertyAssignment(vPrefixed)) {\n continue\n }\n if (provider === \"github\") {\n const isFalse = vPrefixed.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.replaceRange(this.start(vPrefixed), vPrefixed.end, `tagNamePrefix: ${isFalse ? '\"\"' : '\"v\"'}`)\n changed = true\n }\n // GitLab keeps vPrefixedTagName in v27 (no tagNamePrefix equivalent) — leave it untouched.\n }\n if (changed) {\n this.changes.push({\n key: `${prefix}${key}[].vPrefixedTagName`,\n description: \"replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries\",\n })\n }\n }\n\n private ruleSnap(root: any): void {\n const ts = this.ts\n const snapProp = this.getProp(root, \"snap\")\n if (snapProp == null || !ts.isPropertyAssignment(snapProp)) {\n return\n }\n const snap = this.unwrap(snapProp.initializer)\n if (!ts.isObjectLiteralExpression(snap)) {\n this.removeProp(snapProp)\n this.changes.push({ key: \"snap\", description: \"removed empty snap config (use snapcraft in v27)\" })\n return\n }\n\n const baseProp = this.getProp(snap, \"base\")\n let base = this.stringLiteralValue(baseProp)\n const restProps = snap.properties.filter((p: any) => p !== baseProp)\n\n if (base === \"custom\") {\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries = ['base: \"custom\"', ...restProps.map((p: any) => this.entryText(p, childIndent))]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: \"moved snap (base: custom) → snapcraft verbatim\" })\n return\n }\n\n let assumed = false\n if (base == null || !SNAP_BASES.has(base)) {\n if (base != null) {\n this.warnings.push(`snap config had an unrecognized base \"${base}\"; assumed \"core20\". Verify the snapcraft.base value (core18/core20/core22/core24/custom).`)\n } else {\n this.warnings.push('snap config had no \"base\"; assumed \"core20\" for snapcraft. Verify and adjust the base if needed (core18/core20/core22/core24).')\n }\n base = \"core20\"\n assumed = true\n }\n\n const baseChildIndent = this.propIndentFor(root) + this.indentUnit + this.indentUnit\n const nestedEntries = restProps.map((p: any) => this.entryText(p, baseChildIndent))\n const snapcraftChildIndent = this.propIndentFor(root) + this.indentUnit\n const nestedObject = nestedEntries.length > 0 ? this.objectLiteralTextAt(nestedEntries, snapcraftChildIndent) : \"{}\"\n const entries = [`base: \"${base}\"`, `${base}: ${nestedObject}`]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: `moved snap → snapcraft.${base}${assumed ? \" (base defaulted to core20)\" : \"\"}` })\n }\n\n private ruleHelperBundleId(root: any): void {\n const prop = this.getProp(root, \"helper-bundle-id\")\n if (prop == null || !this.ts.isPropertyAssignment(prop)) {\n return\n }\n const mac = this.getObjectProp(root, \"mac\")\n if (mac != null && this.getProp(mac, \"helperBundleId\") != null) {\n this.removeProp(prop)\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n return\n }\n const ok = this.moveInto(root, \"mac\", [{ prop, renameTo: \"helperBundleId\" }], [])\n if (ok) {\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n } else {\n this.warnings.push(\"mac already exists but is not an object literal; move helper-bundle-id → mac.helperBundleId manually.\")\n }\n }\n\n private ruleSquirrelNoMsi(root: any): void {\n const ts = this.ts\n const sq = this.getObjectProp(root, \"squirrelWindows\")\n if (sq == null) {\n return\n }\n const noMsi = this.getProp(sq, \"noMsi\")\n if (noMsi == null || !ts.isPropertyAssignment(noMsi)) {\n return\n }\n if (this.getProp(sq, \"msi\") != null) {\n this.removeProp(noMsi)\n } else {\n this.replaceRange(this.start(noMsi), noMsi.end, `msi: ${this.negate(noMsi.initializer)}`)\n }\n this.changes.push({ key: \"squirrelWindows.noMsi\", description: \"replaced squirrelWindows.noMsi → squirrelWindows.msi (inverted boolean)\" })\n }\n\n private ruleWinSign(root: any): void {\n const ts = this.ts\n const win = this.getObjectProp(root, \"win\")\n if (win == null) {\n return\n }\n\n let signSet = this.getProp(win, \"sign\") != null\n\n const signAndEdit = this.getProp(win, \"signAndEditExecutable\")\n if (signAndEdit != null && ts.isPropertyAssignment(signAndEdit)) {\n const isFalse = signAndEdit.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signAndEdit)\n if (isFalse) {\n this.warnings.push(\n \"win.signAndEditExecutable: false was used to skip both resource editing and signing. In v27, resource editing always runs. To skip signing only, set win.sign: false. There is no v27 equivalent that also skips resource editing — apply resources manually if needed.\"\n )\n } else {\n this.changes.push({ key: \"win.signAndEditExecutable\", description: \"removed win.signAndEditExecutable (resource editing always runs in v27; was the default)\" })\n }\n }\n\n const signExe = this.getProp(win, \"signExecutable\")\n if (signExe != null && ts.isPropertyAssignment(signExe)) {\n const isFalse = signExe.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signExe)\n if (isFalse && !signSet) {\n this.createChild(win, \"sign\", [], \"false\")\n signSet = true\n this.changes.push({ key: \"win.signExecutable\", description: \"replaced win.signExecutable: false with win.sign: false (disables signing; resource editing still runs)\" })\n } else {\n this.changes.push({ key: \"win.signExecutable\", description: \"removed win.signExecutable (signing is enabled by default when credentials are available)\" })\n }\n }\n\n const azure = this.getObjectProp(win, \"azureSignOptions\")\n const signtool = this.getObjectProp(win, \"signtoolOptions\")\n const hasAzure = azure != null\n const hasSigntool = signtool != null\n if (!hasAzure && !hasSigntool) {\n return\n }\n\n const originalSign = this.getProp(win, \"sign\")\n const signAlreadySet = signSet || (originalSign != null && ts.isPropertyAssignment(originalSign) && originalSign.initializer.kind !== ts.SyntaxKind.NullKeyword)\n if (signAlreadySet) {\n this.warnings.push(\n `win.sign is already set alongside ${hasAzure ? \"win.azureSignOptions\" : \"win.signtoolOptions\"}. Remove the legacy key manually after verifying win.sign is correct.`\n )\n return\n }\n\n if (hasAzure && hasSigntool) {\n this.warnings.push(\n \"Both win.azureSignOptions and win.signtoolOptions are set. win.signtoolOptions will be dropped and win.azureSignOptions will be migrated to win.sign: { type: 'azure', … } (Azure took priority in v26). Verify the migrated win.sign block is correct for your project.\"\n )\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n }\n\n if (hasAzure) {\n this.buildWinAzureSign(win, azure)\n this.removeProp(this.getProp(win, \"azureSignOptions\"))\n this.changes.push({ key: \"win.azureSignOptions\", description: 'moved win.azureSignOptions → win.sign: { type: \"azure\", … }' })\n } else {\n this.buildWinSigntoolSign(win, signtool)\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n this.changes.push({ key: \"win.signtoolOptions\", description: 'moved win.signtoolOptions → win.sign: { type: \"signtool\", … }' })\n }\n }\n\n private buildWinSigntoolSign(win: any, signtool: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const entries: string[] = []\n for (const p of signtool.properties) {\n if (ts.isPropertyAssignment(p) && this.propName(p) === \"type\") {\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n entries.push('type: \"signtool\"')\n this.createChild(win, \"sign\", entries)\n }\n\n private buildWinAzureSign(win: any, azure: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const metaIndent = childIndent + this.indentUnit\n\n const knownEntries: string[] = []\n const metaEntries: string[] = []\n const extraKeys: string[] = []\n let existingMeta: any = null\n\n for (const p of azure.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"type\") {\n continue\n }\n if (name === \"additionalMetadata\") {\n existingMeta = this.unwrap(p.initializer)\n continue\n }\n const isString = ts.isStringLiteral(p.initializer)\n if (AZURE_KNOWN_FIELDS.has(name!)) {\n knownEntries.push(this.entryText(p, childIndent))\n } else if (isString) {\n metaEntries.push(this.entryText(p, metaIndent))\n extraKeys.push(name!)\n } else {\n // Unknown non-string field — keep verbatim so nothing is silently dropped.\n knownEntries.push(this.entryText(p, childIndent))\n }\n }\n\n if (existingMeta != null && ts.isObjectLiteralExpression(existingMeta)) {\n for (const p of existingMeta.properties) {\n metaEntries.push(this.entryText(p, metaIndent))\n }\n }\n\n const signEntries = [...knownEntries]\n if (metaEntries.length > 0) {\n signEntries.push(`additionalMetadata: ${this.objectLiteralTextAt(metaEntries, childIndent)}`)\n this.changes.push({ key: \"win.azureSignOptions\", description: `moved extra keys [${extraKeys.join(\", \")}] into win.sign.additionalMetadata` })\n }\n signEntries.push('type: \"azure\"')\n this.createChild(win, \"sign\", signEntries)\n }\n\n private ruleMacSigning(platform: any, name: string): void {\n const ts = this.ts\n const present = MAC_SIGN_FIELDS.filter(f => this.getProp(platform, f) != null)\n const signIgnore = this.getProp(platform, \"signIgnore\")\n const hasSignIgnore = signIgnore != null\n const existingSignProp = this.getProp(platform, \"sign\")\n const existingSign = existingSignProp != null && ts.isPropertyAssignment(existingSignProp) ? this.unwrap(existingSignProp.initializer) : null\n const signIsCustom =\n existingSign != null && (ts.isStringLiteral(existingSign) || ts.isArrowFunction(existingSign) || ts.isFunctionExpression(existingSign) || ts.isIdentifier(existingSign))\n const signIsNull = existingSign != null && existingSign.kind === ts.SyntaxKind.NullKeyword\n\n if (present.length === 0 && !hasSignIgnore) {\n if (signIsNull) {\n this.removeProp(existingSignProp)\n this.changes.push({ key: `${name}.sign`, description: `removed ${name}.sign: null (v26 \"no custom signer\" = v27 default; sign: null now means skip signing)` })\n }\n return\n }\n\n if (signIsCustom) {\n const fields = [...present, ...(hasSignIgnore ? [\"signIgnore\"] : [])].join(\", \")\n this.warnings.push(\n `${name}.sign is a custom signing function/path, which cannot hold options. Move [${fields}] into an ElectronSignOptions object manually, or keep the custom signer and drop them.`\n )\n return\n }\n\n const sources: { prop: any; renameTo?: string }[] = []\n for (const f of present) {\n const prop = this.getProp(platform, f)\n sources.push({ prop })\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.sign.${f}` })\n }\n if (hasSignIgnore) {\n sources.push({ prop: signIgnore, renameTo: \"ignore\" })\n this.changes.push({ key: `${name}.signIgnore`, description: `renamed ${name}.signIgnore → ${name}.sign.ignore` })\n }\n\n // A bare `sign: null` should be dropped before we build the options object.\n if (signIsNull) {\n this.removeProp(existingSignProp)\n }\n this.moveInto(platform, \"sign\", sources, [], /* treatNullAsAbsent */ true)\n }\n\n private ruleMacUniversal(platform: any, name: string): void {\n const present = MAC_UNIVERSAL_FIELDS.filter(f => this.getProp(platform, f) != null)\n if (present.length === 0) {\n return\n }\n const sources = present.map(f => {\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.universal.${f}` })\n return { prop: this.getProp(platform, f) }\n })\n const ok = this.moveInto(platform, \"universal\", sources, [])\n if (!ok) {\n this.warnings.push(`${name}.universal already exists but is not an object literal; move ${present.join(\", \")} into it manually.`)\n }\n }\n\n private ruleElectronDownload(root: any): void {\n const ts = this.ts\n const prop = this.getProp(root, \"electronDownload\")\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const old = this.unwrap(prop.initializer)\n if (!ts.isObjectLiteralExpression(old)) {\n this.renameKey(prop, \"electronGet\")\n this.changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet\" })\n return\n }\n\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries: string[] = []\n const dropped: string[] = []\n let mirrorValueText: string | null = null\n let existingMirrorOptions: any = null\n\n for (const p of old.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"mirror\") {\n mirrorValueText = this.valueText(p.initializer, childIndent + this.indentUnit)\n continue\n }\n if (name === \"isVerifyChecksum\") {\n if (p.initializer.kind === ts.SyntaxKind.FalseKeyword) {\n entries.push(\"unsafelyDisableChecksums: true\")\n } else {\n this.warnings.push(\"electronGet: isVerifyChecksum had a non-false value; review electronGet.unsafelyDisableChecksums manually.\")\n }\n continue\n }\n if ((ELECTRON_DOWNLOAD_DROPPED as readonly string[]).includes(name!)) {\n dropped.push(name!)\n continue\n }\n if (name === \"mirrorOptions\") {\n existingMirrorOptions = this.unwrap(p.initializer)\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n\n if (mirrorValueText != null || existingMirrorOptions != null) {\n const moInner: string[] = []\n if (existingMirrorOptions != null && ts.isObjectLiteralExpression(existingMirrorOptions)) {\n for (const p of existingMirrorOptions.properties) {\n moInner.push(this.entryText(p, childIndent + this.indentUnit))\n }\n }\n if (mirrorValueText != null) {\n moInner.push(`mirror: ${mirrorValueText}`)\n }\n entries.push(`mirrorOptions: ${this.objectLiteralTextAt(moInner, childIndent)}`)\n }\n\n if (dropped.length > 0) {\n this.warnings.push(\n `electronGet (formerly electronDownload) dropped [${dropped.join(\", \")}] — these have no equivalent in @electron/get v5. Set a mirror via electronGet.mirrorOptions if needed.`\n )\n }\n\n this.removeProp(prop)\n this.createChild(root, \"electronGet\", entries)\n this.changes.push({\n key: \"electronDownload\",\n description: \"renamed electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\",\n })\n }\n\n // ── Edit primitives ───────────────────────────────────────────────────────\n\n /**\n * Moves `sources` properties into a child object `childKey` of `parent` (creating it when absent).\n * Returns false when the child exists but is not an object literal (caller should warn).\n */\n private moveInto(parent: any, childKey: string, sources: { prop: any; renameTo?: string }[], extraEntries: string[], treatNullAsAbsent = false): boolean {\n const ts = this.ts\n const existingProp = this.getProp(parent, childKey)\n let existingObj: any = null\n if (existingProp != null && ts.isPropertyAssignment(existingProp)) {\n const v = this.unwrap(existingProp.initializer)\n if (ts.isObjectLiteralExpression(v)) {\n existingObj = v\n } else if (!(treatNullAsAbsent && v.kind === ts.SyntaxKind.NullKeyword)) {\n return false\n }\n }\n\n if (existingObj != null) {\n const childIndent = this.propIndentFor(existingObj)\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.insertIntoObject(existingObj, entries)\n return true\n }\n\n const childIndent = this.propIndentFor(parent) + this.indentUnit\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.createChild(parent, childKey, entries)\n return true\n }\n\n /** Prepends `childKey: { entries }` (or `childKey: rawValue`) as the first property of `parent`. */\n private createChild(parent: any, childKey: string, entries: string[], rawValue?: string): void {\n const parentPropIndent = this.propIndentFor(parent)\n const value = rawValue != null ? rawValue : this.objectLiteralTextAt(entries, parentPropIndent)\n const braceEnd = this.start(parent) + 1\n this.insertEdit(braceEnd, `\\n${parentPropIndent}${childKey}: ${value},`)\n }\n\n /** Inserts already-built \"key: value\" entries as the first properties of `objLit`. */\n private insertIntoObject(objLit: any, entries: string[]): void {\n if (entries.length === 0) {\n return\n }\n const propIndent = this.propIndentFor(objLit)\n const braceEnd = this.start(objLit) + 1\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n if (objLit.properties.length > 0) {\n this.insertEdit(braceEnd, body)\n } else {\n const objLineIndent = this.lineIndentAt(this.start(objLit))\n this.insertEdit(braceEnd, body + `\\n${objLineIndent}`)\n }\n }\n\n /** Renders a multi-line object literal whose closing brace aligns to `braceIndent`. */\n private objectLiteralTextAt(entries: string[], braceIndent: string): string {\n if (entries.length === 0) {\n return \"{}\"\n }\n const propIndent = braceIndent + this.indentUnit\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n return `{${body}\\n${braceIndent}}`\n }\n\n private removeProp(prop: any): void {\n if (prop == null) {\n return\n }\n this.replaceRange(prop.pos, this.endWithTrailingComma(prop), \"\")\n }\n\n private renameKey(prop: any, newName: string): void {\n this.replaceRange(this.start(prop.name), prop.name.end, newName)\n }\n\n private replaceValue(valueNode: any, newText: string): void {\n this.replaceRange(this.start(valueNode), valueNode.end, newText)\n }\n\n /** \"key: value\" text for a property, re-indenting a multi-line value to `targetIndent`. */\n private entryText(prop: any, targetIndent: string, renameTo?: string): string {\n if (prop.name == null) {\n // Spread assignment (`...x`) or other nameless member — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n const keyText = renameTo != null ? renameTo : this.text.slice(this.start(prop.name), prop.name.end)\n if (this.ts.isPropertyAssignment(prop)) {\n return `${keyText}: ${this.valueText(prop.initializer, targetIndent)}`\n }\n if (this.ts.isShorthandPropertyAssignment(prop)) {\n return keyText\n }\n // Method / accessor — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n\n /** Source text of a value node, re-indenting continuation lines from its original to `targetIndent`. */\n private valueText(valueNode: any, targetIndent: string): string {\n const raw = this.text.slice(this.start(valueNode), valueNode.end)\n if (!raw.includes(\"\\n\")) {\n return raw\n }\n const fromIndent = this.lineIndentAt(this.start(valueNode))\n return this.reindent(raw, fromIndent, targetIndent)\n }\n\n private mergeArrays(valueNodes: any[]): string {\n const ts = this.ts\n const elems: string[] = []\n for (const v of valueNodes) {\n const node = this.unwrap(v)\n if (ts.isArrayLiteralExpression(node)) {\n for (const el of node.elements) {\n elems.push(this.text.slice(this.start(el), el.end))\n }\n } else {\n elems.push(this.text.slice(this.start(node), node.end))\n }\n }\n return `[${elems.join(\", \")}]`\n }\n\n private negate(valueNode: any): string {\n const ts = this.ts\n if (valueNode.kind === ts.SyntaxKind.TrueKeyword) {\n return \"false\"\n }\n if (valueNode.kind === ts.SyntaxKind.FalseKeyword) {\n return \"true\"\n }\n return `!(${this.text.slice(this.start(valueNode), valueNode.end)})`\n }\n\n // ── Low-level helpers ──────────────────────────────────────────────────────\n\n private start(node: any): number {\n return node.getStart(this.sf)\n }\n\n private getProp(objLit: any, name: string): any | null {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (p.name == null) {\n continue\n }\n let key: string | undefined\n if (ts.isIdentifier(p.name) || ts.isStringLiteral(p.name) || ts.isNumericLiteral(p.name)) {\n key = p.name.text\n } else {\n continue\n }\n if (key === name) {\n return p\n }\n }\n return null\n }\n\n private getObjectProp(objLit: any, name: string): any | null {\n const ts = this.ts\n const prop = this.getProp(objLit, name)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return null\n }\n const v = this.unwrap(prop.initializer)\n return ts.isObjectLiteralExpression(v) ? v : null\n }\n\n private propName(prop: any): string | undefined {\n const ts = this.ts\n if (prop.name != null && (ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name) || ts.isNumericLiteral(prop.name))) {\n return prop.name.text\n }\n return undefined\n }\n\n private stringLiteralValue(prop: any): string | undefined {\n const ts = this.ts\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return undefined\n }\n const v = this.unwrap(prop.initializer)\n return ts.isStringLiteral(v) ? v.text : undefined\n }\n\n private endWithTrailingComma(prop: any): number {\n let i = prop.end\n while (i < this.text.length && (this.text[i] === \" \" || this.text[i] === \"\\t\")) {\n i++\n }\n return this.text[i] === \",\" ? i + 1 : prop.end\n }\n\n private lineIndentAt(pos: number): string {\n let i = pos\n while (i > 0 && this.text[i - 1] !== \"\\n\") {\n i--\n }\n let j = i\n while (j < this.text.length && (this.text[j] === \" \" || this.text[j] === \"\\t\")) {\n j++\n }\n return this.text.slice(i, j)\n }\n\n private detectIndentUnit(root: any): string {\n const braceIndent = this.lineIndentAt(this.start(root))\n for (const p of root.properties) {\n const pi = this.lineIndentAt(this.start(p))\n if (pi.length > braceIndent.length) {\n return pi.slice(braceIndent.length)\n }\n }\n return \" \"\n }\n\n private propIndentFor(objLit: any): string {\n for (const p of objLit.properties) {\n return this.lineIndentAt(this.start(p))\n }\n return this.lineIndentAt(this.start(objLit)) + this.indentUnit\n }\n\n private reindent(text: string, fromIndent: string, toIndent: string): string {\n const delta = toIndent.length - fromIndent.length\n if (delta === 0) {\n return text\n }\n const lines = text.split(\"\\n\")\n return lines\n .map((line, idx) => {\n if (idx === 0) {\n return line\n }\n if (delta > 0) {\n return \" \".repeat(delta) + line\n }\n let removed = 0\n let k = 0\n while (k < line.length && removed < -delta && line[k] === \" \") {\n k++\n removed++\n }\n return line.slice(k)\n })\n .join(\"\\n\")\n }\n\n private replaceRange(start: number, end: number, text: string): void {\n this.edits.push({ start, end, text })\n }\n\n private insertEdit(pos: number, text: string): void {\n this.edits.push({ start: pos, end: pos, text })\n }\n\n apply(): string {\n const edits = [...this.edits].sort((a, b) => a.start - b.start || a.end - b.end)\n let out = \"\"\n let cursor = 0\n for (const e of edits) {\n if (e.start < cursor) {\n throw new Error(`overlapping edits at ${e.start} (cursor ${cursor})`)\n }\n out += this.text.slice(cursor, e.start) + e.text\n cursor = e.end\n }\n out += this.text.slice(cursor)\n return out\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-schema.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAOjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAMD,eAAO,MAAM,kBAAkB,aAU7B,CAAA;AAIF,eAAO,MAAM,eAAe,sQAelB,CAAA;AAGV,eAAO,MAAM,oBAAoB,4DAA6D,CAAA;AAE9F;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,eAAe,CAwPvE;AA8DD,eAAO,MAAM,yBAAyB,+FAAgG,CAAA;AAyEtI,eAAO,MAAM,UAAU,aAA8D,CAAA;AAgLrF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAkB/D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D5D"}
1
+ {"version":3,"file":"migrate-schema.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAOjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAMD,eAAO,MAAM,kBAAkB,aAU7B,CAAA;AAIF,eAAO,MAAM,eAAe,sQAelB,CAAA;AAGV,eAAO,MAAM,oBAAoB,4DAA6D,CAAA;AAE9F;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,eAAe,CAoQvE;AA8DD,eAAO,MAAM,yBAAyB,+FAAgG,CAAA;AAuEtI,eAAO,MAAM,UAAU,aAA8D,CAAA;AAgLrF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAkB/D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D5D"}
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module";
2
- import { log } from "builder-util";
2
+ import { log, orNullIfFileNotExist } from "builder-util";
3
3
  import { promises as fs } from "fs";
4
4
  import * as path from "path";
5
5
  import { loadTypeScript, migrateProgrammaticSource } from "./migrate-schema-programmatic.js";
@@ -58,6 +58,17 @@ export function migrateConfig(raw) {
58
58
  changes.push({ key, description: `removed ${key} (Electron is the only supported framework in v27)` });
59
59
  }
60
60
  }
61
+ // ── 2b. disableDefaultIgnoredFiles removed (root + platform configs) ──────
62
+ // mas/masDev are MacConfiguration-derived, so they accept the (now-removed) key too.
63
+ for (const obj of [c, c.mac, c.mas, c.masDev, c.win, c.linux]) {
64
+ if (obj != null && typeof obj === "object" && "disableDefaultIgnoredFiles" in obj) {
65
+ delete obj.disableDefaultIgnoredFiles;
66
+ changes.push({
67
+ key: "disableDefaultIgnoredFiles",
68
+ description: "removed disableDefaultIgnoredFiles (in v27, include a default-excluded file via an explicit `files` glob, e.g. `**/*.obj`)",
69
+ });
70
+ }
71
+ }
61
72
  // ── 3. npmSkipBuildFromSource → buildDependenciesFromSource ───────────────
62
73
  if ("npmSkipBuildFromSource" in c) {
63
74
  // will be picked up by the nativeModules step below
@@ -374,13 +385,11 @@ function migratePublishEntries(parent, key, changes) {
374
385
  delete entry.vPrefixedTagName;
375
386
  changed = true;
376
387
  }
377
- if (entry != null && entry.provider === "gitlab" && "vPrefixedTagName" in entry) {
378
- delete entry.vPrefixedTagName;
379
- changed = true;
380
- }
388
+ // GitLab keeps vPrefixedTagName in v27 — it remains in the type, scheme, and runtime
389
+ // (gitlabPublisher honors it) and has no tagNamePrefix equivalent, so leave it untouched.
381
390
  }
382
391
  if (changed) {
383
- changes.push({ key: `${key}[].vPrefixedTagName`, description: "replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries; removed from GitLab entries" });
392
+ changes.push({ key: `${key}[].vPrefixedTagName`, description: "replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries" });
384
393
  }
385
394
  }
386
395
  // snap bases recognized by the v27 snapcraft config. "custom" uses an inline/path yaml
@@ -509,7 +518,7 @@ function parseConfig(text, format) {
509
518
  return JSON.parse(text);
510
519
  }
511
520
  async function readFileSafe(p) {
512
- return fs.readFile(p, "utf8").catch(e => (e.code === "ENOENT" || e.code === "ENOTDIR" ? null : Promise.reject(e)));
521
+ return orNullIfFileNotExist(fs.readFile(p, "utf8"));
513
522
  }
514
523
  async function writeBackConfig(found, migrated, projectDir) {
515
524
  if (found.isPackageJson) {
@@ -651,7 +660,8 @@ function printManualSteps() {
651
660
  "• Move root-level package.json directories → build.directories",
652
661
  "",
653
662
  "• For programmatic configs (JS/TS/MJS/CJS), apply the above changes manually to your config object",
654
- "• For additional guidance, check the migration guide: https://www.electron.build/docs/migration/v26-to-v27",
663
+ "• For additional guidance, check the migration walkthrough: https://www.electron.build/docs/migration/v26-to-v27",
664
+ "• Full list of breaking changes: https://www.electron.build/docs/migration/v27-breaking-changes",
655
665
  ];
656
666
  for (const step of steps) {
657
667
  process.stdout.write(` ${step}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-schema.js","sourceRoot":"","sources":["../../src/cli/migrate-schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { createRequire } from \"node:module\"\nimport { log } from \"builder-util\"\nimport { promises as fs } from \"fs\"\nimport * as path from \"path\"\nimport type { Argv } from \"yargs\"\nimport { loadTypeScript, migrateProgrammaticSource } from \"./migrate-schema-programmatic.js\"\n\nconst _require = createRequire(import.meta.url)\n\n// ─── Public types ─────────────────────────────────────────────────────────────\n\nexport interface MigrationChange {\n readonly key: string\n readonly description: string\n}\n\nexport interface MigrationResult {\n readonly migrated: Record<string, any>\n readonly changes: MigrationChange[]\n readonly warnings: string[]\n readonly modified: boolean\n}\n\n// ─── Pure migration logic ─────────────────────────────────────────────────────\n\n// Azure Trusted Signing typed fields in v27 (everything else is an extra key → additionalMetadata).\n// \"type\" is included so it is not mistakenly moved to additionalMetadata if already present.\nexport const AZURE_KNOWN_FIELDS = new Set([\n \"type\",\n \"endpoint\",\n \"codeSigningAccountName\",\n \"certificateProfileName\",\n \"publisherName\",\n \"fileDigest\",\n \"timestampRfc3161\",\n \"timestampDigest\",\n \"additionalMetadata\",\n])\n\n// macOS signing fields that moved from the platform root into the `sign` (ElectronSignOptions) bag.\n// `signIgnore` is renamed to `sign.ignore` separately (the @electron/osx-sign canonical name).\nexport const MAC_SIGN_FIELDS = [\n \"identity\",\n \"entitlements\",\n \"entitlementsInherit\",\n \"entitlementsLoginHelper\",\n \"provisioningProfile\",\n \"type\",\n \"binaries\",\n \"requirements\",\n \"hardenedRuntime\",\n \"gatekeeperAssess\",\n \"strictVerify\",\n \"preAutoEntitlements\",\n \"timestamp\",\n \"additionalArguments\",\n] as const\n\n// Universal-build fields that moved from the platform root into the `universal` (ElectronUniversalOptions) bag.\nexport const MAC_UNIVERSAL_FIELDS = [\"mergeASARs\", \"singleArchFiles\", \"x64ArchFiles\"] as const\n\n/**\n * Applies all v26→v27 config transformations to a parsed config object.\n * Pure function — no I/O, safe to call in tests.\n */\nexport function migrateConfig(raw: Record<string, any>): MigrationResult {\n const c: Record<string, any> = JSON.parse(JSON.stringify(raw))\n const changes: MigrationChange[] = []\n const warnings: string[] = []\n\n // ── 1. electronCompile ────────────────────────────────────────────────────\n if (\"electronCompile\" in c) {\n delete c.electronCompile\n changes.push({ key: \"electronCompile\", description: \"removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)\" })\n }\n\n // ── 2. Removed framework fields ──────────────────────────────────────────\n for (const key of [\"framework\", \"nodeVersion\", \"launchUiVersion\"] as const) {\n if (key in c) {\n delete c[key]\n changes.push({ key, description: `removed ${key} (Electron is the only supported framework in v27)` })\n }\n }\n\n // ── 3. npmSkipBuildFromSource → buildDependenciesFromSource ───────────────\n if (\"npmSkipBuildFromSource\" in c) {\n // will be picked up by the nativeModules step below\n if (!(\"buildDependenciesFromSource\" in c)) {\n c.buildDependenciesFromSource = !c.npmSkipBuildFromSource\n }\n delete c.npmSkipBuildFromSource\n changes.push({ key: \"npmSkipBuildFromSource\", description: \"renamed npmSkipBuildFromSource → buildDependenciesFromSource (then grouped under nativeModules)\" })\n }\n\n // ── 4. nativeModules grouping ─────────────────────────────────────────────\n const rootNativeKeys = [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\", \"nativeRebuilder\"] as const\n if (rootNativeKeys.some(k => k in c)) {\n const sub: Record<string, any> = { ...(c.nativeModules ?? {}) }\n for (const key of [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\"] as const) {\n if (key in c) {\n sub[key] = c[key]\n delete c[key]\n changes.push({ key, description: `moved ${key} → nativeModules.${key}` })\n }\n }\n if (\"nativeRebuilder\" in c) {\n sub.rebuildMode = c.nativeRebuilder\n delete c.nativeRebuilder\n changes.push({ key: \"nativeRebuilder\", description: \"renamed nativeRebuilder → nativeModules.rebuildMode\" })\n }\n c.nativeModules = sub\n }\n\n // ── 5. Legacy asar keys → asarUnpack ─────────────────────────────────────\n // Hyphenated root-level variants\n for (const old of [\"asar-unpack\", \"asar-unpack-dir\"] as const) {\n if (old in c) {\n c.asarUnpack = mergeAsarUnpack(c.asarUnpack, c[old])\n delete c[old]\n changes.push({ key: old, description: `renamed ${old} → asarUnpack` })\n }\n }\n // Nested asar.unpackDir (legacy pre-v26; asar.unpack is now the canonical location, handled in step 11)\n if (c.asar != null && typeof c.asar === \"object\") {\n if (\"unpackDir\" in c.asar) {\n c.asarUnpack = mergeAsarUnpack(c.asarUnpack, c.asar.unpackDir)\n delete c.asar.unpackDir\n changes.push({ key: \"asar.unpackDir\", description: \"moved asar.unpackDir → asarUnpack\" })\n }\n if (Object.keys(c.asar).length === 0) {\n delete c.asar\n }\n }\n\n // ── 6. appImage.systemIntegration removed ────────────────────────────────\n if (c.appImage != null && \"systemIntegration\" in c.appImage) {\n delete c.appImage.systemIntegration\n changes.push({ key: \"appImage.systemIntegration\", description: \"removed appImage.systemIntegration (handled automatically by AppImageLauncher in v27)\" })\n if (Object.keys(c.appImage).length === 0) {\n delete c.appImage\n }\n }\n\n // ── 7. GithubOptions.vPrefixedTagName → tagNamePrefix ─────────────────────\n if (c.publish != null) {\n migratePublishEntries(c, \"publish\", changes)\n }\n // Also handle publish nested inside mac/win/linux\n for (const platform of [\"mac\", \"win\", \"linux\"] as const) {\n if (c[platform]?.publish != null) {\n migratePublishEntries(c[platform], \"publish\", changes)\n }\n }\n\n // ── 8. snap → snapcraft restructuring ─────────────────────────────────────\n if (\"snap\" in c) {\n migrateSnap(c, changes, warnings)\n }\n\n // ── 9. helper-bundle-id → mac.helperBundleId ──────────────────────────────\n if (\"helper-bundle-id\" in c) {\n const mac: Record<string, any> = { ...(c.mac ?? {}) }\n if (!(\"helperBundleId\" in mac)) {\n mac.helperBundleId = c[\"helper-bundle-id\"]\n }\n delete c[\"helper-bundle-id\"]\n c.mac = mac\n changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n }\n\n // ── 10. squirrelWindows.noMsi → squirrelWindows.msi (inverted) ────────────\n if (c.squirrelWindows != null && typeof c.squirrelWindows === \"object\" && \"noMsi\" in c.squirrelWindows) {\n const sq: Record<string, any> = c.squirrelWindows\n if (!(\"msi\" in sq)) {\n sq.msi = !sq.noMsi\n }\n delete sq.noMsi\n changes.push({ key: \"squirrelWindows.noMsi\", description: \"replaced squirrelWindows.noMsi → squirrelWindows.msi (inverted boolean)\" })\n }\n\n // ── 11. asar consolidation ───────────────────────────────────────────────\n // Move root-level asarUnpack / disableSanityCheckAsar / disableAsarIntegrity\n // into the asar object. Skip entirely when asar === false (all would be no-ops).\n if (c.asar !== false) {\n const asarSub: Record<string, any> = typeof c.asar === \"object\" && c.asar != null ? { ...c.asar } : {}\n if (\"asarUnpack\" in c) {\n asarSub.unpack = mergeAsarUnpack(asarSub.unpack, c.asarUnpack)\n delete c.asarUnpack\n changes.push({ key: \"asarUnpack\", description: \"moved asarUnpack → asar.unpack\" })\n }\n if (\"disableSanityCheckAsar\" in c) {\n asarSub.disableSanityCheck = c.disableSanityCheckAsar\n delete c.disableSanityCheckAsar\n changes.push({ key: \"disableSanityCheckAsar\", description: \"moved disableSanityCheckAsar → asar.disableSanityCheck\" })\n }\n if (\"disableAsarIntegrity\" in c) {\n asarSub.disableIntegrity = c.disableAsarIntegrity\n delete c.disableAsarIntegrity\n changes.push({ key: \"disableAsarIntegrity\", description: \"moved disableAsarIntegrity → asar.disableIntegrity\" })\n }\n if (c.asar === true) {\n if (Object.keys(asarSub).length > 0) {\n c.asar = asarSub\n } else {\n delete c.asar\n }\n changes.push({ key: \"asar\", description: \"replaced asar: true with asar object (true is no longer a valid value)\" })\n } else if (Object.keys(asarSub).length > 0) {\n c.asar = asarSub\n }\n }\n\n // ── 12. win.sign unification ───────────────────────────────────────────────\n // win.signtoolOptions → win.sign: { type: \"signtool\", … }\n // win.azureSignOptions → win.sign: { type: \"azure\", … } (extra keys → additionalMetadata)\n // win.signAndEditExecutable / win.signExecutable removed\n if (c.win != null && typeof c.win === \"object\") {\n const win: Record<string, any> = c.win\n\n // Remove defunct flags — signAndEditExecutable/signExecutable no longer exist in v27.\n if (\"signAndEditExecutable\" in win) {\n const val = win.signAndEditExecutable\n delete win.signAndEditExecutable\n if (val === false) {\n warnings.push(\n \"win.signAndEditExecutable: false was used to skip both resource editing and signing. \" +\n \"In v27, resource editing always runs. To skip signing only, set win.sign: false. \" +\n \"There is no v27 equivalent that also skips resource editing — apply resources manually if needed.\"\n )\n } else {\n changes.push({ key: \"win.signAndEditExecutable\", description: \"removed win.signAndEditExecutable (resource editing always runs in v27; was the default)\" })\n }\n }\n if (\"signExecutable\" in win) {\n const val = win.signExecutable\n delete win.signExecutable\n if (val === false && !(\"sign\" in win)) {\n win.sign = false\n changes.push({ key: \"win.signExecutable\", description: \"replaced win.signExecutable: false with win.sign: false (disables signing; resource editing still runs)\" })\n } else {\n changes.push({ key: \"win.signExecutable\", description: \"removed win.signExecutable (signing is enabled by default when credentials are available)\" })\n }\n }\n\n const hasAzure = win.azureSignOptions != null\n const hasSigntool = win.signtoolOptions != null\n\n if (hasAzure || hasSigntool) {\n const signAlreadySet = \"sign\" in win && win.sign !== null && win.sign !== undefined\n\n if (signAlreadySet) {\n warnings.push(\n \"win.sign is already set alongside \" +\n (hasAzure ? \"win.azureSignOptions\" : \"win.signtoolOptions\") +\n \". Remove the legacy key manually after verifying win.sign is correct.\"\n )\n } else {\n if (hasAzure && hasSigntool) {\n warnings.push(\n \"Both win.azureSignOptions and win.signtoolOptions are set. \" +\n \"win.signtoolOptions will be dropped and win.azureSignOptions will be migrated to win.sign: { type: 'azure', … } (Azure took priority in v26). \" +\n \"Verify the migrated win.sign block is correct for your project.\"\n )\n delete win.signtoolOptions\n }\n\n if (hasAzure) {\n const azure: Record<string, any> = { ...win.azureSignOptions }\n delete win.azureSignOptions\n\n // Move extra (untyped) keys into additionalMetadata\n const extra: Record<string, string> = {}\n for (const [k, v] of Object.entries(azure)) {\n if (!AZURE_KNOWN_FIELDS.has(k) && typeof v === \"string\") {\n extra[k] = v\n delete azure[k]\n }\n }\n if (Object.keys(extra).length > 0) {\n azure.additionalMetadata = { ...(azure.additionalMetadata ?? {}), ...extra }\n changes.push({\n key: \"win.azureSignOptions\",\n description: `moved extra keys [${Object.keys(extra).join(\", \")}] into win.sign.additionalMetadata`,\n })\n }\n\n win.sign = { ...azure, type: \"azure\" }\n changes.push({ key: \"win.azureSignOptions\", description: 'moved win.azureSignOptions → win.sign: { type: \"azure\", … }' })\n } else {\n const signtool: Record<string, any> = { ...win.signtoolOptions }\n delete win.signtoolOptions\n win.sign = { ...signtool, type: \"signtool\" }\n changes.push({ key: \"win.signtoolOptions\", description: 'moved win.signtoolOptions → win.sign: { type: \"signtool\", … }' })\n }\n }\n }\n }\n\n // ── 13. mac/mas/masDev signing + universal consolidation ──────────────────\n // Signing fields (incl. identity) move into `sign`; mergeASARs/singleArchFiles/x64ArchFiles into `universal`.\n for (const platform of [\"mac\", \"mas\", \"masDev\"] as const) {\n if (c[platform] != null && typeof c[platform] === \"object\") {\n migrateMacSigning(c[platform], platform, changes, warnings)\n migrateMacUniversal(c[platform], platform, changes)\n }\n }\n\n // ── 14. electronDownload → electronGet ────────────────────────────────────\n if (\"electronDownload\" in c) {\n migrateElectronDownload(c, changes, warnings)\n }\n\n return { migrated: c, changes, warnings, modified: changes.length > 0 || warnings.length > 0 }\n}\n\n/**\n * Moves macOS signing fields from a platform config (mac/mas/masDev) into the `sign` bag and\n * renames `signIgnore` → `sign.ignore`. In v26 `sign` was only a custom-signer (string path / module id),\n * so a non-object `sign` cannot absorb these options — that case is warned about, not clobbered.\n * A bare `sign: null` (v26 \"no custom signer\") is dropped so it does not flip to v27's \"skip signing\".\n */\nfunction migrateMacSigning(platform: Record<string, any>, name: string, changes: MigrationChange[], warnings: string[]) {\n const present = MAC_SIGN_FIELDS.filter(f => f in platform)\n const hasSignIgnore = \"signIgnore\" in platform\n const existingSign = platform.sign\n const signIsCustom = typeof existingSign === \"string\" || typeof existingSign === \"function\"\n\n if (present.length === 0 && !hasSignIgnore) {\n // Only thing to fix is a semantically-flipped bare null\n if (existingSign === null) {\n delete platform.sign\n changes.push({ key: `${name}.sign`, description: `removed ${name}.sign: null (v26 \"no custom signer\" = v27 default; sign: null now means skip signing)` })\n }\n return\n }\n\n if (signIsCustom) {\n const fields = [...present, ...(hasSignIgnore ? [\"signIgnore\"] : [])].join(\", \")\n warnings.push(\n `${name}.sign is a custom signing function/path, which cannot hold options. Move [${fields}] into an ElectronSignOptions object manually, or keep the custom signer and drop them.`\n )\n return\n }\n\n // existingSign is null/undefined or already an object → build the merged options bag\n const signObj: Record<string, any> = existingSign != null && typeof existingSign === \"object\" ? { ...existingSign } : {}\n for (const f of present) {\n signObj[f] = platform[f]\n delete platform[f]\n changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.sign.${f}` })\n }\n if (hasSignIgnore) {\n signObj.ignore = platform.signIgnore\n delete platform.signIgnore\n changes.push({ key: `${name}.signIgnore`, description: `renamed ${name}.signIgnore → ${name}.sign.ignore` })\n }\n platform.sign = signObj\n}\n\n/** Moves universal-build fields from a platform config into the `universal` bag. */\nfunction migrateMacUniversal(platform: Record<string, any>, name: string, changes: MigrationChange[]) {\n const present = MAC_UNIVERSAL_FIELDS.filter(f => f in platform)\n if (present.length === 0) {\n return\n }\n const universalObj: Record<string, any> = platform.universal != null && typeof platform.universal === \"object\" ? { ...platform.universal } : {}\n for (const f of present) {\n universalObj[f] = platform[f]\n delete platform[f]\n changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.universal.${f}` })\n }\n platform.universal = universalObj\n}\n\n// electronDownload fields with no equivalent in the v27 ElectronGetOptions (@electron/get v5) shape.\nexport const ELECTRON_DOWNLOAD_DROPPED = [\"cache\", \"customDir\", \"customFilename\", \"strictSSL\", \"platform\", \"arch\", \"version\"] as const\n\n/**\n * Renames `electronDownload` → `electronGet` and reshapes it to ElectronGetOptions.\n * `mirror` → `mirrorOptions.mirror`, `isVerifyChecksum: false` → `unsafelyDisableChecksums: true`.\n * Fields with no v5 equivalent are dropped with a warning.\n */\nfunction migrateElectronDownload(c: Record<string, any>, changes: MigrationChange[], warnings: string[]) {\n const old = c.electronDownload\n delete c.electronDownload\n\n if (old == null || typeof old !== \"object\") {\n changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet\" })\n if (old != null) {\n c.electronGet = old\n }\n return\n }\n\n const next: Record<string, any> = { ...(c.electronGet ?? {}) }\n if (\"mirror\" in old && old.mirror != null) {\n next.mirrorOptions = { ...(next.mirrorOptions ?? {}), mirror: old.mirror }\n }\n if (old.isVerifyChecksum === false) {\n next.unsafelyDisableChecksums = true\n }\n // Carry over any already-valid ElectronGetOptions fields (mirrorOptions, unsafelyDisableChecksums, force, etc.)\n for (const [k, v] of Object.entries(old)) {\n if (k !== \"mirror\" && k !== \"isVerifyChecksum\" && !ELECTRON_DOWNLOAD_DROPPED.includes(k as any)) {\n next[k] = v\n }\n }\n\n const dropped = ELECTRON_DOWNLOAD_DROPPED.filter(k => k in old)\n if (dropped.length > 0) {\n warnings.push(\n `electronGet (formerly electronDownload) dropped [${dropped.join(\", \")}] — these have no equivalent in @electron/get v5. Set a mirror via electronGet.mirrorOptions if needed.`\n )\n }\n\n c.electronGet = next\n changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\" })\n}\n\nfunction mergeAsarUnpack(existing: string | string[] | undefined, incoming: string | string[]): string | string[] {\n if (existing == null) {\n return incoming\n }\n const arr = (Array.isArray(existing) ? existing : [existing]).concat(Array.isArray(incoming) ? incoming : [incoming])\n return arr.length === 1 ? arr[0] : arr\n}\n\nfunction migratePublishEntries(parent: Record<string, any>, key: string, changes: MigrationChange[]) {\n const entries: any[] = Array.isArray(parent[key]) ? parent[key] : [parent[key]]\n let changed = false\n for (const entry of entries) {\n if (entry != null && entry.provider === \"github\" && \"vPrefixedTagName\" in entry) {\n entry.tagNamePrefix = entry.vPrefixedTagName === false ? \"\" : \"v\"\n delete entry.vPrefixedTagName\n changed = true\n }\n if (entry != null && entry.provider === \"gitlab\" && \"vPrefixedTagName\" in entry) {\n delete entry.vPrefixedTagName\n changed = true\n }\n }\n if (changed) {\n changes.push({ key: `${key}[].vPrefixedTagName`, description: \"replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries; removed from GitLab entries\" })\n }\n}\n\n// snap bases recognized by the v27 snapcraft config. \"custom\" uses an inline/path yaml\n// and must be moved verbatim rather than nested under a per-base sub-key.\nexport const SNAP_BASES = new Set([\"core18\", \"core20\", \"core22\", \"core24\", \"custom\"])\n\n/**\n * Migrates the removed flat `snap` config into the v27 `snapcraft` shape:\n * { snapcraft: { base, [base]: { ...rest } } }\n * When no `base` is present, defaults to \"core20\" (the v27 1-to-1 migration target) and warns.\n */\nfunction migrateSnap(c: Record<string, any>, changes: MigrationChange[], warnings: string[]) {\n const snap = c.snap\n delete c.snap\n\n if (snap == null || typeof snap !== \"object\") {\n changes.push({ key: \"snap\", description: \"removed empty snap config (use snapcraft in v27)\" })\n return\n }\n\n const snapcraft: Record<string, any> = { ...(c.snapcraft ?? {}) }\n const rest: Record<string, any> = { ...snap }\n let base: string | undefined = rest.base\n delete rest.base\n\n if (base === \"custom\") {\n // base: custom carries yamlPath / inline yaml — move verbatim, no per-base nesting\n snapcraft.base = \"custom\"\n Object.assign(snapcraft, rest)\n c.snapcraft = snapcraft\n changes.push({ key: \"snap\", description: \"moved snap (base: custom) → snapcraft verbatim\" })\n return\n }\n\n let assumed = false\n if (base == null || !SNAP_BASES.has(base)) {\n if (base != null) {\n warnings.push(`snap config had an unrecognized base \"${base}\"; assumed \"core20\". Verify the snapcraft.base value (core18/core20/core22/core24/custom).`)\n }\n base = \"core20\"\n assumed = true\n }\n\n snapcraft.base = base\n snapcraft[base] = { ...(snapcraft[base] ?? {}), ...rest }\n c.snapcraft = snapcraft\n changes.push({ key: \"snap\", description: `moved snap → snapcraft.${base}${assumed ? \" (base defaulted to core20)\" : \"\"}` })\n if (assumed && warnings.every(w => !w.includes(\"unrecognized base\"))) {\n warnings.push('snap config had no \"base\"; assumed \"core20\" for snapcraft. Verify and adjust the base if needed (core18/core20/core22/core24).')\n }\n}\n\n// ─── File I/O ─────────────────────────────────────────────────────────────────\n\ntype ConfigFormat = \"json\" | \"json5\" | \"yaml\" | \"toml\" | \"js\"\n\nfunction formatFromPath(p: string): ConfigFormat {\n const ext = path.extname(p).toLowerCase()\n if (ext === \".json\") {\n return \"json\"\n }\n if (ext === \".json5\") {\n return \"json5\"\n }\n if (ext === \".yml\" || ext === \".yaml\") {\n return \"yaml\"\n }\n if (ext === \".toml\") {\n return \"toml\"\n }\n return \"js\"\n}\n\nfunction serializeConfig(content: Record<string, any>, format: ConfigFormat, originalText: string): string {\n if (format === \"yaml\") {\n const yaml = _require(\"js-yaml\") as { dump(obj: unknown, opts?: { lineWidth?: number; quotingType?: string; forceQuotes?: boolean }): string }\n return yaml.dump(content, { lineWidth: 120, quotingType: '\"', forceQuotes: false })\n }\n // JSON and JSON5: detect original indent level\n const indentMatch = originalText.match(/^{\\s*\\n( +)/m)\n const indent = indentMatch ? indentMatch[1].length : 2\n return JSON.stringify(content, null, indent) + \"\\n\"\n}\n\ninterface FoundConfig {\n /** Absolute path to the file, or null when config is in package.json */\n readonly configFile: string | null\n readonly isPackageJson: boolean\n readonly format: ConfigFormat\n readonly rawText: string\n readonly parsed: Record<string, any>\n /** package.json only: a root-level `directories` key was folded into `build.directories` */\n readonly rootDirectoriesMoved?: boolean\n}\n\nasync function findAndLoadConfig(projectDir: string, explicitConfigPath?: string | null): Promise<FoundConfig | null> {\n if (explicitConfigPath != null) {\n const abs = path.resolve(projectDir, explicitConfigPath)\n const text = await readFileSafe(abs)\n if (text == null) {\n log.error({ configFile: abs }, \"config file not found\")\n return null\n }\n const format = formatFromPath(abs)\n return { configFile: abs, isPackageJson: false, format, rawText: text, parsed: parseConfig(text, format) }\n }\n\n // Check package.json build key first\n const pkgPath = path.join(projectDir, \"package.json\")\n const pkgText = await readFileSafe(pkgPath)\n if (pkgText != null) {\n const pkg = JSON.parse(pkgText)\n if (pkg.build != null && typeof pkg.build === \"object\") {\n const build: Record<string, any> = pkg.build\n let rootDirectoriesMoved = false\n if (pkg.directories != null && build.directories == null) {\n build.directories = pkg.directories\n rootDirectoriesMoved = true\n }\n return { configFile: null, isPackageJson: true, format: \"json\", rawText: pkgText, parsed: build, rootDirectoriesMoved }\n }\n }\n\n // Standalone config files\n const candidates = [\".yml\", \".yaml\", \".json\", \".json5\", \".toml\", \".js\", \".cjs\", \".mjs\", \".ts\"].map(ext => path.join(projectDir, `electron-builder${ext}`))\n for (const candidate of candidates) {\n const text = await readFileSafe(candidate)\n if (text != null) {\n const format = formatFromPath(candidate)\n return { configFile: candidate, isPackageJson: false, format, rawText: text, parsed: parseConfig(text, format) }\n }\n }\n\n return null\n}\n\nfunction parseConfig(text: string, format: ConfigFormat): Record<string, any> {\n if (format === \"js\") {\n // Programmatic configs (JS/TS/MJS/CJS) can't be parsed; migrateSchema will bail with manual steps\n return {}\n }\n if (format === \"yaml\") {\n const yaml = _require(\"js-yaml\") as { load(text: string): unknown }\n return yaml.load(text) as Record<string, any>\n }\n if (format === \"json5\") {\n const json5 = _require(\"json5\") as { parse(text: string): any }\n return json5.parse(text)\n }\n if (format === \"toml\") {\n const toml = _require(\"toml\") as { parse(text: string): any }\n return toml.parse(text)\n }\n return JSON.parse(text)\n}\n\nasync function readFileSafe(p: string): Promise<string | null> {\n return fs.readFile(p, \"utf8\").catch(e => (e.code === \"ENOENT\" || e.code === \"ENOTDIR\" ? null : Promise.reject(e)))\n}\n\nasync function writeBackConfig(found: FoundConfig, migrated: Record<string, any>, projectDir: string): Promise<string> {\n if (found.isPackageJson) {\n const pkgPath = path.join(projectDir, \"package.json\")\n const pkg = JSON.parse(found.rawText)\n pkg.build = migrated\n if (found.rootDirectoriesMoved) {\n delete pkg.directories\n }\n const indentMatch = found.rawText.match(/^{\\s*\\n( +)/m)\n const indent = indentMatch ? indentMatch[1].length : 2\n await fs.writeFile(pkgPath, JSON.stringify(pkg, null, indent) + \"\\n\", \"utf8\")\n return \"package.json\"\n }\n const serialized = serializeConfig(migrated, found.format, found.rawText)\n await fs.writeFile(found.configFile!, serialized, \"utf8\")\n return path.relative(projectDir, found.configFile!)\n}\n\n// ─── CLI command ──────────────────────────────────────────────────────────────\n\nexport function configureMigrateSchemaCommand(yargs: Argv): Argv {\n return yargs\n .option(\"config\", {\n alias: \"c\",\n type: \"string\",\n description: \"Path to config file (auto-detected if omitted)\",\n })\n .option(\"project-dir\", {\n type: \"string\",\n description: \"Project root directory\",\n default: process.cwd(),\n })\n .option(\"dry-run\", {\n alias: \"n\",\n type: \"boolean\",\n default: false,\n description: \"Print what would change without writing\",\n })\n}\n\nexport async function migrateSchema(args: any): Promise<void> {\n const projectDir: string = path.resolve((args[\"project-dir\"] as string | undefined) ?? process.cwd())\n const configPath: string | null = (args.config as string | undefined) ?? null\n const dryRun: boolean = (args[\"dry-run\"] as boolean | undefined) ?? false\n\n const found = await findAndLoadConfig(projectDir, configPath)\n if (found == null) {\n log.error(null, \"no config found — checked package.json build key and electron-builder.{yml,yaml,json,json5,toml,js,cjs,ts}\")\n process.exit(1)\n }\n\n const location = found.isPackageJson ? 'package.json (\"build\" key)' : path.relative(projectDir, found.configFile!)\n log.info({ file: location }, \"loaded config\")\n\n // Programmatic formats (JS/TS) are rewritten surgically via an AST-located text codemod.\n if (found.format === \"js\") {\n await migrateProgrammaticConfigFile(found, location, dryRun)\n return\n }\n\n // TOML: can parse but not serialize (toml lib is read-only)\n const isToml = found.format === \"toml\"\n\n const result = migrateConfig(found.parsed)\n const { migrated, warnings } = result\n const changes = [...result.changes]\n if (found.rootDirectoriesMoved) {\n changes.push({ key: \"directories\", description: \"moved package.json root-level directories → build.directories\" })\n }\n const modified = result.modified || found.rootDirectoriesMoved === true\n\n if (!modified) {\n log.info(null, \"config is already up to date — no changes needed\")\n return\n }\n\n for (const change of changes) {\n log.info({ key: change.key }, change.description)\n }\n for (const warning of warnings) {\n log.warn(null, warning)\n }\n\n if (isToml) {\n log.warn({ file: location }, \"TOML configs cannot be automatically rewritten; apply the changes above manually\")\n return\n }\n\n if (dryRun) {\n log.info(null, \"dry run — no files written\")\n return\n }\n\n const written = await writeBackConfig(found, migrated, projectDir)\n log.info({ file: written }, \"wrote migrated config\")\n\n if (found.format === \"json5\") {\n log.warn(null, \"JSON5 was re-serialized as JSON — comments were not preserved\")\n }\n}\n\nasync function migrateProgrammaticConfigFile(found: FoundConfig, location: string, dryRun: boolean): Promise<void> {\n if (loadTypeScript() == null) {\n log.warn(\n { file: location },\n \"auto-migration of programmatic configs requires the 'typescript' package, which was not found. Install it (e.g. `npm i -D typescript`) or apply these changes manually:\"\n )\n printManualSteps()\n return\n }\n\n const result = migrateProgrammaticSource(found.rawText, found.configFile!)\n\n if (result.status === \"unsupported\") {\n log.warn({ file: location, reason: result.unsupportedReason }, \"this programmatic config could not be auto-migrated; apply these changes manually:\")\n printManualSteps()\n return\n }\n\n if (result.status === \"no-op\") {\n log.info(null, \"config is already up to date — no changes needed\")\n return\n }\n\n for (const change of result.changes) {\n log.info({ key: change.key }, change.description)\n }\n for (const warning of result.warnings) {\n log.warn(null, warning)\n }\n\n if (dryRun) {\n log.info(null, \"dry run — no files written\")\n return\n }\n\n await fs.writeFile(found.configFile!, result.code, \"utf8\")\n log.info({ file: location }, \"wrote migrated config\")\n}\n\nfunction printManualSteps() {\n const steps = [\n \"\",\n \"• Remove electronCompile\",\n \"• Remove framework, nodeVersion, launchUiVersion\",\n \"• Rename npmSkipBuildFromSource → buildDependenciesFromSource\",\n \"• Move buildDependenciesFromSource, nodeGypRebuild, npmRebuild, nativeRebuilder into nativeModules (rename nativeRebuilder → rebuildMode)\",\n \"• Rename asar-unpack / asar-unpack-dir / asar.unpack / asar.unpackDir → asarUnpack; then move asarUnpack → asar.unpack\",\n \"• Move disableSanityCheckAsar → asar.disableSanityCheck\",\n \"• Move disableAsarIntegrity → asar.disableIntegrity\",\n \"• Replace asar: true with an asar object (e.g. asar: {} or omit entirely - asar is enabled by default)\",\n \"• Remove appImage.systemIntegration\",\n \"• Rename snap → snapcraft; nest options under a base-named sub-key (default base: core20)\",\n \"• Replace vPrefixedTagName with tagNamePrefix on GitHub publish entries ('v' is the default prefix - just like before - but can now be customized with tagNamePrefix)\",\n \"• Move win.signtoolOptions → win.sign: { type: 'signtool', ...fields }\",\n \"• Move win.azureSignOptions → win.sign: { type: 'azure', ...fields }; move untyped extra keys into win.sign.additionalMetadata\",\n \"• Remove win.signAndEditExecutable (resource editing always runs in v27); replace win.signExecutable: false with win.sign: false\",\n \"• Move helper-bundle-id → mac.helperBundleId\",\n \"• Replace squirrelWindows.noMsi with squirrelWindows.msi (inverted)\",\n \"• Move mac/mas/masDev signing fields (identity, entitlements, hardenedRuntime, type, requirements, timestamp, binaries, gatekeeperAssess, strictVerify, preAutoEntitlements, provisioningProfile, additionalArguments) into the `sign` object; rename signIgnore → sign.ignore\",\n \"• Move mac/mas/masDev mergeASARs / singleArchFiles / x64ArchFiles into the `universal` object\",\n \"• Rename electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum:false → unsafelyDisableChecksums:true)\",\n \"• Move root-level package.json directories → build.directories\",\n \"\",\n \"• For programmatic configs (JS/TS/MJS/CJS), apply the above changes manually to your config object\",\n \"• For additional guidance, check the migration guide: https://www.electron.build/docs/migration/v26-to-v27\",\n ]\n for (const step of steps) {\n process.stdout.write(` ${step}\\n`)\n }\n}\n"]}
1
+ {"version":3,"file":"migrate-schema.js","sourceRoot":"","sources":["../../src/cli/migrate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAE5F,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAgB/C,iFAAiF;AAEjF,oGAAoG;AACpG,6FAA6F;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACxC,MAAM;IACN,UAAU;IACV,wBAAwB;IACxB,wBAAwB;IACxB,eAAe;IACf,YAAY;IACZ,kBAAkB;IAClB,iBAAiB;IACjB,oBAAoB;CACrB,CAAC,CAAA;AAEF,oGAAoG;AACpG,+FAA+F;AAC/F,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU;IACV,cAAc;IACd,qBAAqB;IACrB,yBAAyB;IACzB,qBAAqB;IACrB,MAAM;IACN,UAAU;IACV,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,cAAc;IACd,qBAAqB;IACrB,WAAW;IACX,qBAAqB;CACb,CAAA;AAEV,gHAAgH;AAChH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,cAAc,CAAU,CAAA;AAE9F;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAwB;IACpD,MAAM,CAAC,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,MAAM,OAAO,GAAsB,EAAE,CAAA;IACrC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,6EAA6E;IAC7E,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,eAAe,CAAA;QACxB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,gGAAgG,EAAE,CAAC,CAAA;IACzJ,CAAC;IAED,4EAA4E;IAC5E,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,iBAAiB,CAAU,EAAE,CAAC;QAC3E,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAG,oDAAoD,EAAE,CAAC,CAAA;QACxG,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,qFAAqF;IACrF,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,4BAA4B,IAAI,GAAG,EAAE,CAAC;YAClF,OAAO,GAAG,CAAC,0BAA0B,CAAA;YACrC,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,EAAE,4BAA4B;gBACjC,WAAW,EAAE,4HAA4H;aAC1I,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,wBAAwB,IAAI,CAAC,EAAE,CAAC;QAClC,oDAAoD;QACpD,IAAI,CAAC,CAAC,6BAA6B,IAAI,CAAC,CAAC,EAAE,CAAC;YAC1C,CAAC,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAA;QAC3D,CAAC;QACD,OAAO,CAAC,CAAC,sBAAsB,CAAA;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,wBAAwB,EAAE,WAAW,EAAE,iGAAiG,EAAE,CAAC,CAAA;IACjK,CAAC;IAED,6EAA6E;IAC7E,MAAM,cAAc,GAAG,CAAC,6BAA6B,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,CAAU,CAAA;IAClH,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAwB,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAA;QAC/D,KAAK,MAAM,GAAG,IAAI,CAAC,6BAA6B,EAAE,gBAAgB,EAAE,YAAY,CAAU,EAAE,CAAC;YAC3F,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;gBACjB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;gBACb,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,GAAG,oBAAoB,GAAG,EAAE,EAAE,CAAC,CAAA;YAC3E,CAAC;QACH,CAAC;QACD,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,eAAe,CAAA;YACnC,OAAO,CAAC,CAAC,eAAe,CAAA;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC,CAAA;QAC9G,CAAC;QACD,CAAC,CAAC,aAAa,GAAG,GAAG,CAAA;IACvB,CAAC;IAED,4EAA4E;IAC5E,iCAAiC;IACjC,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAU,EAAE,CAAC;QAC9D,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACpD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAG,eAAe,EAAE,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IACD,wGAAwG;IACxG,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjD,IAAI,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC9D,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;YACvB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,CAAA;QAC3F,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,CAAC,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,mBAAmB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5D,OAAO,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAA;QACnC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,4BAA4B,EAAE,WAAW,EAAE,uFAAuF,EAAE,CAAC,CAAA;QACzJ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,CAAC,QAAQ,CAAA;QACnB,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;QACtB,qBAAqB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IACD,kDAAkD;IAClD,KAAK,MAAM,QAAQ,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAU,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;YACjC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,6EAA6E;IAC7E,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAwB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAA;QACrD,IAAI,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAA;QAC5B,CAAC,CAAC,GAAG,GAAG,GAAG,CAAA;QACX,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,6CAA6C,EAAE,CAAC,CAAA;IACvG,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,CAAC,eAAe,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;QACvG,MAAM,EAAE,GAAwB,CAAC,CAAC,eAAe,CAAA;QACjD,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACnB,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAA;QACpB,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,CAAA;QACf,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,WAAW,EAAE,yEAAyE,EAAE,CAAC,CAAA;IACxI,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,iFAAiF;IACjF,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,GAAwB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACtG,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;YAC9D,OAAO,CAAC,CAAC,UAAU,CAAA;YACnB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC,CAAA;QACpF,CAAC;QACD,IAAI,wBAAwB,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC,sBAAsB,CAAA;YACrD,OAAO,CAAC,CAAC,sBAAsB,CAAA;YAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,wBAAwB,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC,CAAA;QACxH,CAAC;QACD,IAAI,sBAAsB,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,oBAAoB,CAAA;YACjD,OAAO,CAAC,CAAC,oBAAoB,CAAA;YAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAAA;QAClH,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC,IAAI,CAAA;YACf,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,wEAAwE,EAAE,CAAC,CAAA;QACtH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,CAAC,CAAC,IAAI,GAAG,OAAO,CAAA;QAClB,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,0DAA0D;IAC1D,2FAA2F;IAC3F,yDAAyD;IACzD,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAwB,CAAC,CAAC,GAAG,CAAA;QAEtC,sFAAsF;QACtF,IAAI,uBAAuB,IAAI,GAAG,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,GAAG,CAAC,qBAAqB,CAAA;YACrC,OAAO,GAAG,CAAC,qBAAqB,CAAA;YAChC,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CACX,uFAAuF;oBACrF,mFAAmF;oBACnF,mGAAmG,CACtG,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,2BAA2B,EAAE,WAAW,EAAE,0FAA0F,EAAE,CAAC,CAAA;YAC7J,CAAC;QACH,CAAC;QACD,IAAI,gBAAgB,IAAI,GAAG,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAA;YAC9B,OAAO,GAAG,CAAC,cAAc,CAAA;YACzB,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAA;gBAChB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,WAAW,EAAE,yGAAyG,EAAE,CAAC,CAAA;YACrK,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,WAAW,EAAE,2FAA2F,EAAE,CAAC,CAAA;YACvJ,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAA;QAC7C,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,IAAI,IAAI,CAAA;QAE/C,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,cAAc,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAA;YAEnF,IAAI,cAAc,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CACX,oCAAoC;oBAClC,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC;oBAC3D,uEAAuE,CAC1E,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;oBAC5B,QAAQ,CAAC,IAAI,CACX,6DAA6D;wBAC3D,gJAAgJ;wBAChJ,iEAAiE,CACpE,CAAA;oBACD,OAAO,GAAG,CAAC,eAAe,CAAA;gBAC5B,CAAC;gBAED,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,KAAK,GAAwB,EAAE,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAA;oBAC9D,OAAO,GAAG,CAAC,gBAAgB,CAAA;oBAE3B,oDAAoD;oBACpD,MAAM,KAAK,GAA2B,EAAE,CAAA;oBACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;4BACxD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;4BACZ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;wBACjB,CAAC;oBACH,CAAC;oBACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClC,KAAK,CAAC,kBAAkB,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAA;wBAC5E,OAAO,CAAC,IAAI,CAAC;4BACX,GAAG,EAAE,sBAAsB;4BAC3B,WAAW,EAAE,qBAAqB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC;yBACpG,CAAC,CAAA;oBACJ,CAAC;oBAED,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;oBACtC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,WAAW,EAAE,6DAA6D,EAAE,CAAC,CAAA;gBAC3H,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,GAAwB,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAA;oBAChE,OAAO,GAAG,CAAC,eAAe,CAAA;oBAC1B,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;oBAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,+DAA+D,EAAE,CAAC,CAAA;gBAC5H,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,8GAA8G;IAC9G,KAAK,MAAM,QAAQ,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAU,EAAE,CAAC;QACzD,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3D,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;YAC3D,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,kBAAkB,IAAI,CAAC,EAAE,CAAC;QAC5B,uBAAuB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAA;AAChG,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,QAA6B,EAAE,IAAY,EAAE,OAA0B,EAAE,QAAkB;IACpH,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAA;IAC1D,MAAM,aAAa,GAAG,YAAY,IAAI,QAAQ,CAAA;IAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAA;IAClC,MAAM,YAAY,GAAG,OAAO,YAAY,KAAK,QAAQ,IAAI,OAAO,YAAY,KAAK,UAAU,CAAA;IAE3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,wDAAwD;QACxD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,IAAI,CAAA;YACpB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,uFAAuF,EAAE,CAAC,CAAA;QAC5J,CAAC;QACD,OAAM;IACR,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChF,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,6EAA6E,MAAM,yFAAyF,CACpL,CAAA;QACD,OAAM;IACR,CAAC;IAED,qFAAqF;IACrF,MAAM,OAAO,GAAwB,YAAY,IAAI,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACxH,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9F,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAA;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,aAAa,EAAE,WAAW,EAAE,WAAW,IAAI,iBAAiB,IAAI,cAAc,EAAE,CAAC,CAAA;IAC9G,CAAC;IACD,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAA;AACzB,CAAC;AAED,oFAAoF;AACpF,SAAS,mBAAmB,CAAC,QAA6B,EAAE,IAAY,EAAE,OAA0B;IAClG,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAA;IAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAM;IACR,CAAC;IACD,MAAM,YAAY,GAAwB,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC/I,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC7B,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC,CAAA;IACnG,CAAC;IACD,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAA;AACnC,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAU,CAAA;AAEtI;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,CAAsB,EAAE,OAA0B,EAAE,QAAkB;IACrG,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAA;IAC9B,OAAO,CAAC,CAAC,gBAAgB,CAAA;IAEzB,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC,CAAA;QAChG,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC,WAAW,GAAG,GAAG,CAAA;QACrB,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAwB,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAA;IAC9D,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAA;IAC5E,CAAC;IACD,IAAI,GAAG,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAA;IACtC,CAAC;IACD,gHAAgH;IAChH,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,kBAAkB,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAQ,CAAC,EAAE,CAAC;YAChG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACb,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CACX,oDAAoD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yGAAyG,CAChL,CAAA;IACH,CAAC;IAED,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,qHAAqH,EAAE,CAAC,CAAA;AAC/K,CAAC;AAED,SAAS,eAAe,CAAC,QAAuC,EAAE,QAA2B;IAC3F,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrH,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AACxC,CAAC;AAED,SAAS,qBAAqB,CAAC,MAA2B,EAAE,GAAW,EAAE,OAA0B;IACjG,MAAM,OAAO,GAAU,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/E,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,kBAAkB,IAAI,KAAK,EAAE,CAAC;YAChF,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;YACjE,OAAO,KAAK,CAAC,gBAAgB,CAAA;YAC7B,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;QACD,qFAAqF;QACrF,0FAA0F;IAC5F,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,qBAAqB,EAAE,WAAW,EAAE,wEAAwE,EAAE,CAAC,CAAA;IAC3I,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAErF;;;;GAIG;AACH,SAAS,WAAW,CAAC,CAAsB,EAAE,OAA0B,EAAE,QAAkB;IACzF,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;IACnB,OAAO,CAAC,CAAC,IAAI,CAAA;IAEb,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC,CAAA;QAC9F,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAwB,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAA;IACjE,MAAM,IAAI,GAAwB,EAAE,GAAG,IAAI,EAAE,CAAA;IAC7C,IAAI,IAAI,GAAuB,IAAI,CAAC,IAAI,CAAA;IACxC,OAAO,IAAI,CAAC,IAAI,CAAA;IAEhB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,mFAAmF;QACnF,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAA;QACzB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QAC9B,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC,CAAA;QAC5F,OAAM;IACR,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,yCAAyC,IAAI,4FAA4F,CAAC,CAAA;QAC1J,CAAC;QACD,IAAI,GAAG,QAAQ,CAAA;QACf,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;IAED,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA;IACrB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAA;IACzD,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA;IACvB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3H,IAAI,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC,gIAAgI,CAAC,CAAA;IACjJ,CAAC;AACH,CAAC;AAMD,SAAS,cAAc,CAAC,CAAS;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACzC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,eAAe,CAAC,OAA4B,EAAE,MAAoB,EAAE,YAAoB;IAC/F,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAA+G,CAAA;QAC9I,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,+CAA+C;IAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;AACrD,CAAC;AAaD,KAAK,UAAU,iBAAiB,CAAC,UAAkB,EAAE,kBAAkC;IACrF,IAAI,kBAAkB,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;QACxD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAA;YACvD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QAClC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAA;IAC5G,CAAC;IAED,qCAAqC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC/B,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,KAAK,GAAwB,GAAG,CAAC,KAAK,CAAA;YAC5C,IAAI,oBAAoB,GAAG,KAAK,CAAA;YAChC,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;gBACzD,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;gBACnC,oBAAoB,GAAG,IAAI,CAAA;YAC7B,CAAC;YACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAA;QACzH,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1J,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;YACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAA;QAClH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,MAAoB;IACrD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,kGAAkG;QAClG,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAoC,CAAA;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAwB,CAAA;IAC/C,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAiC,CAAA;QAC/D,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAiC,CAAA;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,CAAS;IACnC,OAAO,oBAAoB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;AACrD,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAAkB,EAAE,QAA6B,EAAE,UAAkB;IAClG,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAA;QACpB,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,WAAW,CAAA;QACxB,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;QAC7E,OAAO,cAAc,CAAA;IACvB,CAAC;IACD,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACzE,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;IACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,UAAW,CAAC,CAAA;AACrD,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,6BAA6B,CAAC,KAAW;IACvD,OAAO,KAAK;SACT,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gDAAgD;KAC9D,CAAC;SACD,MAAM,CAAC,aAAa,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;KACvB,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,yCAAyC;KACvD,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAS;IAC3C,MAAM,UAAU,GAAW,IAAI,CAAC,OAAO,CAAE,IAAI,CAAC,aAAa,CAAwB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACrG,MAAM,UAAU,GAAmB,IAAI,CAAC,MAA6B,IAAI,IAAI,CAAA;IAC7E,MAAM,MAAM,GAAa,IAAI,CAAC,SAAS,CAAyB,IAAI,KAAK,CAAA;IAEzE,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAC7D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,4GAA4G,CAAC,CAAA;QAC7H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,UAAW,CAAC,CAAA;IAClH,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,CAAA;IAE7C,yFAAyF;IACzF,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC5D,OAAM;IACR,CAAC;IAED,4DAA4D;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAA;IAEtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IACrC,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IACnC,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,+DAA+D,EAAE,CAAC,CAAA;IACpH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,oBAAoB,KAAK,IAAI,CAAA;IAEvE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kDAAkD,CAAC,CAAA;QAClE,OAAM;IACR,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,kFAAkF,CAAC,CAAA;QAChH,OAAM;IACR,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAA;QAC5C,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;IAClE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAA;IAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,+DAA+D,CAAC,CAAA;IACjF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,6BAA6B,CAAC,KAAkB,EAAE,QAAgB,EAAE,MAAe;IAChG,IAAI,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CACN,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB,yKAAyK,CAC1K,CAAA;QACD,gBAAgB,EAAE,CAAA;QAClB,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,UAAW,CAAC,CAAA;IAE1E,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,oFAAoF,CAAC,CAAA;QACpJ,gBAAgB,EAAE,CAAA;QAClB,OAAM;IACR,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kDAAkD,CAAC,CAAA;QAClE,OAAM;IACR,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAA;QAC5C,OAAM;IACR,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAW,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,CAAA;AACvD,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,0BAA0B;QAC1B,kDAAkD;QAClD,+DAA+D;QAC/D,2IAA2I;QAC3I,wHAAwH;QACxH,yDAAyD;QACzD,qDAAqD;QACrD,wGAAwG;QACxG,qCAAqC;QACrC,2FAA2F;QAC3F,uKAAuK;QACvK,wEAAwE;QACxE,gIAAgI;QAChI,kIAAkI;QAClI,8CAA8C;QAC9C,qEAAqE;QACrE,gRAAgR;QAChR,+FAA+F;QAC/F,iIAAiI;QACjI,gEAAgE;QAChE,EAAE;QACF,oGAAoG;QACpG,kHAAkH;QAClH,iGAAiG;KAClG,CAAA;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;IACrC,CAAC;AACH,CAAC","sourcesContent":["import { createRequire } from \"node:module\"\nimport { log, orNullIfFileNotExist } from \"builder-util\"\nimport { promises as fs } from \"fs\"\nimport * as path from \"path\"\nimport type { Argv } from \"yargs\"\nimport { loadTypeScript, migrateProgrammaticSource } from \"./migrate-schema-programmatic.js\"\n\nconst _require = createRequire(import.meta.url)\n\n// ─── Public types ─────────────────────────────────────────────────────────────\n\nexport interface MigrationChange {\n readonly key: string\n readonly description: string\n}\n\nexport interface MigrationResult {\n readonly migrated: Record<string, any>\n readonly changes: MigrationChange[]\n readonly warnings: string[]\n readonly modified: boolean\n}\n\n// ─── Pure migration logic ─────────────────────────────────────────────────────\n\n// Azure Trusted Signing typed fields in v27 (everything else is an extra key → additionalMetadata).\n// \"type\" is included so it is not mistakenly moved to additionalMetadata if already present.\nexport const AZURE_KNOWN_FIELDS = new Set([\n \"type\",\n \"endpoint\",\n \"codeSigningAccountName\",\n \"certificateProfileName\",\n \"publisherName\",\n \"fileDigest\",\n \"timestampRfc3161\",\n \"timestampDigest\",\n \"additionalMetadata\",\n])\n\n// macOS signing fields that moved from the platform root into the `sign` (ElectronSignOptions) bag.\n// `signIgnore` is renamed to `sign.ignore` separately (the @electron/osx-sign canonical name).\nexport const MAC_SIGN_FIELDS = [\n \"identity\",\n \"entitlements\",\n \"entitlementsInherit\",\n \"entitlementsLoginHelper\",\n \"provisioningProfile\",\n \"type\",\n \"binaries\",\n \"requirements\",\n \"hardenedRuntime\",\n \"gatekeeperAssess\",\n \"strictVerify\",\n \"preAutoEntitlements\",\n \"timestamp\",\n \"additionalArguments\",\n] as const\n\n// Universal-build fields that moved from the platform root into the `universal` (ElectronUniversalOptions) bag.\nexport const MAC_UNIVERSAL_FIELDS = [\"mergeASARs\", \"singleArchFiles\", \"x64ArchFiles\"] as const\n\n/**\n * Applies all v26→v27 config transformations to a parsed config object.\n * Pure function — no I/O, safe to call in tests.\n */\nexport function migrateConfig(raw: Record<string, any>): MigrationResult {\n const c: Record<string, any> = JSON.parse(JSON.stringify(raw))\n const changes: MigrationChange[] = []\n const warnings: string[] = []\n\n // ── 1. electronCompile ────────────────────────────────────────────────────\n if (\"electronCompile\" in c) {\n delete c.electronCompile\n changes.push({ key: \"electronCompile\", description: \"removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)\" })\n }\n\n // ── 2. Removed framework fields ──────────────────────────────────────────\n for (const key of [\"framework\", \"nodeVersion\", \"launchUiVersion\"] as const) {\n if (key in c) {\n delete c[key]\n changes.push({ key, description: `removed ${key} (Electron is the only supported framework in v27)` })\n }\n }\n\n // ── 2b. disableDefaultIgnoredFiles removed (root + platform configs) ──────\n // mas/masDev are MacConfiguration-derived, so they accept the (now-removed) key too.\n for (const obj of [c, c.mac, c.mas, c.masDev, c.win, c.linux]) {\n if (obj != null && typeof obj === \"object\" && \"disableDefaultIgnoredFiles\" in obj) {\n delete obj.disableDefaultIgnoredFiles\n changes.push({\n key: \"disableDefaultIgnoredFiles\",\n description: \"removed disableDefaultIgnoredFiles (in v27, include a default-excluded file via an explicit `files` glob, e.g. `**/*.obj`)\",\n })\n }\n }\n\n // ── 3. npmSkipBuildFromSource → buildDependenciesFromSource ───────────────\n if (\"npmSkipBuildFromSource\" in c) {\n // will be picked up by the nativeModules step below\n if (!(\"buildDependenciesFromSource\" in c)) {\n c.buildDependenciesFromSource = !c.npmSkipBuildFromSource\n }\n delete c.npmSkipBuildFromSource\n changes.push({ key: \"npmSkipBuildFromSource\", description: \"renamed npmSkipBuildFromSource → buildDependenciesFromSource (then grouped under nativeModules)\" })\n }\n\n // ── 4. nativeModules grouping ─────────────────────────────────────────────\n const rootNativeKeys = [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\", \"nativeRebuilder\"] as const\n if (rootNativeKeys.some(k => k in c)) {\n const sub: Record<string, any> = { ...(c.nativeModules ?? {}) }\n for (const key of [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\"] as const) {\n if (key in c) {\n sub[key] = c[key]\n delete c[key]\n changes.push({ key, description: `moved ${key} → nativeModules.${key}` })\n }\n }\n if (\"nativeRebuilder\" in c) {\n sub.rebuildMode = c.nativeRebuilder\n delete c.nativeRebuilder\n changes.push({ key: \"nativeRebuilder\", description: \"renamed nativeRebuilder → nativeModules.rebuildMode\" })\n }\n c.nativeModules = sub\n }\n\n // ── 5. Legacy asar keys → asarUnpack ─────────────────────────────────────\n // Hyphenated root-level variants\n for (const old of [\"asar-unpack\", \"asar-unpack-dir\"] as const) {\n if (old in c) {\n c.asarUnpack = mergeAsarUnpack(c.asarUnpack, c[old])\n delete c[old]\n changes.push({ key: old, description: `renamed ${old} → asarUnpack` })\n }\n }\n // Nested asar.unpackDir (legacy pre-v26; asar.unpack is now the canonical location, handled in step 11)\n if (c.asar != null && typeof c.asar === \"object\") {\n if (\"unpackDir\" in c.asar) {\n c.asarUnpack = mergeAsarUnpack(c.asarUnpack, c.asar.unpackDir)\n delete c.asar.unpackDir\n changes.push({ key: \"asar.unpackDir\", description: \"moved asar.unpackDir → asarUnpack\" })\n }\n if (Object.keys(c.asar).length === 0) {\n delete c.asar\n }\n }\n\n // ── 6. appImage.systemIntegration removed ────────────────────────────────\n if (c.appImage != null && \"systemIntegration\" in c.appImage) {\n delete c.appImage.systemIntegration\n changes.push({ key: \"appImage.systemIntegration\", description: \"removed appImage.systemIntegration (handled automatically by AppImageLauncher in v27)\" })\n if (Object.keys(c.appImage).length === 0) {\n delete c.appImage\n }\n }\n\n // ── 7. GithubOptions.vPrefixedTagName → tagNamePrefix ─────────────────────\n if (c.publish != null) {\n migratePublishEntries(c, \"publish\", changes)\n }\n // Also handle publish nested inside mac/win/linux\n for (const platform of [\"mac\", \"win\", \"linux\"] as const) {\n if (c[platform]?.publish != null) {\n migratePublishEntries(c[platform], \"publish\", changes)\n }\n }\n\n // ── 8. snap → snapcraft restructuring ─────────────────────────────────────\n if (\"snap\" in c) {\n migrateSnap(c, changes, warnings)\n }\n\n // ── 9. helper-bundle-id → mac.helperBundleId ──────────────────────────────\n if (\"helper-bundle-id\" in c) {\n const mac: Record<string, any> = { ...(c.mac ?? {}) }\n if (!(\"helperBundleId\" in mac)) {\n mac.helperBundleId = c[\"helper-bundle-id\"]\n }\n delete c[\"helper-bundle-id\"]\n c.mac = mac\n changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n }\n\n // ── 10. squirrelWindows.noMsi → squirrelWindows.msi (inverted) ────────────\n if (c.squirrelWindows != null && typeof c.squirrelWindows === \"object\" && \"noMsi\" in c.squirrelWindows) {\n const sq: Record<string, any> = c.squirrelWindows\n if (!(\"msi\" in sq)) {\n sq.msi = !sq.noMsi\n }\n delete sq.noMsi\n changes.push({ key: \"squirrelWindows.noMsi\", description: \"replaced squirrelWindows.noMsi → squirrelWindows.msi (inverted boolean)\" })\n }\n\n // ── 11. asar consolidation ───────────────────────────────────────────────\n // Move root-level asarUnpack / disableSanityCheckAsar / disableAsarIntegrity\n // into the asar object. Skip entirely when asar === false (all would be no-ops).\n if (c.asar !== false) {\n const asarSub: Record<string, any> = typeof c.asar === \"object\" && c.asar != null ? { ...c.asar } : {}\n if (\"asarUnpack\" in c) {\n asarSub.unpack = mergeAsarUnpack(asarSub.unpack, c.asarUnpack)\n delete c.asarUnpack\n changes.push({ key: \"asarUnpack\", description: \"moved asarUnpack → asar.unpack\" })\n }\n if (\"disableSanityCheckAsar\" in c) {\n asarSub.disableSanityCheck = c.disableSanityCheckAsar\n delete c.disableSanityCheckAsar\n changes.push({ key: \"disableSanityCheckAsar\", description: \"moved disableSanityCheckAsar → asar.disableSanityCheck\" })\n }\n if (\"disableAsarIntegrity\" in c) {\n asarSub.disableIntegrity = c.disableAsarIntegrity\n delete c.disableAsarIntegrity\n changes.push({ key: \"disableAsarIntegrity\", description: \"moved disableAsarIntegrity → asar.disableIntegrity\" })\n }\n if (c.asar === true) {\n if (Object.keys(asarSub).length > 0) {\n c.asar = asarSub\n } else {\n delete c.asar\n }\n changes.push({ key: \"asar\", description: \"replaced asar: true with asar object (true is no longer a valid value)\" })\n } else if (Object.keys(asarSub).length > 0) {\n c.asar = asarSub\n }\n }\n\n // ── 12. win.sign unification ───────────────────────────────────────────────\n // win.signtoolOptions → win.sign: { type: \"signtool\", … }\n // win.azureSignOptions → win.sign: { type: \"azure\", … } (extra keys → additionalMetadata)\n // win.signAndEditExecutable / win.signExecutable removed\n if (c.win != null && typeof c.win === \"object\") {\n const win: Record<string, any> = c.win\n\n // Remove defunct flags — signAndEditExecutable/signExecutable no longer exist in v27.\n if (\"signAndEditExecutable\" in win) {\n const val = win.signAndEditExecutable\n delete win.signAndEditExecutable\n if (val === false) {\n warnings.push(\n \"win.signAndEditExecutable: false was used to skip both resource editing and signing. \" +\n \"In v27, resource editing always runs. To skip signing only, set win.sign: false. \" +\n \"There is no v27 equivalent that also skips resource editing — apply resources manually if needed.\"\n )\n } else {\n changes.push({ key: \"win.signAndEditExecutable\", description: \"removed win.signAndEditExecutable (resource editing always runs in v27; was the default)\" })\n }\n }\n if (\"signExecutable\" in win) {\n const val = win.signExecutable\n delete win.signExecutable\n if (val === false && !(\"sign\" in win)) {\n win.sign = false\n changes.push({ key: \"win.signExecutable\", description: \"replaced win.signExecutable: false with win.sign: false (disables signing; resource editing still runs)\" })\n } else {\n changes.push({ key: \"win.signExecutable\", description: \"removed win.signExecutable (signing is enabled by default when credentials are available)\" })\n }\n }\n\n const hasAzure = win.azureSignOptions != null\n const hasSigntool = win.signtoolOptions != null\n\n if (hasAzure || hasSigntool) {\n const signAlreadySet = \"sign\" in win && win.sign !== null && win.sign !== undefined\n\n if (signAlreadySet) {\n warnings.push(\n \"win.sign is already set alongside \" +\n (hasAzure ? \"win.azureSignOptions\" : \"win.signtoolOptions\") +\n \". Remove the legacy key manually after verifying win.sign is correct.\"\n )\n } else {\n if (hasAzure && hasSigntool) {\n warnings.push(\n \"Both win.azureSignOptions and win.signtoolOptions are set. \" +\n \"win.signtoolOptions will be dropped and win.azureSignOptions will be migrated to win.sign: { type: 'azure', … } (Azure took priority in v26). \" +\n \"Verify the migrated win.sign block is correct for your project.\"\n )\n delete win.signtoolOptions\n }\n\n if (hasAzure) {\n const azure: Record<string, any> = { ...win.azureSignOptions }\n delete win.azureSignOptions\n\n // Move extra (untyped) keys into additionalMetadata\n const extra: Record<string, string> = {}\n for (const [k, v] of Object.entries(azure)) {\n if (!AZURE_KNOWN_FIELDS.has(k) && typeof v === \"string\") {\n extra[k] = v\n delete azure[k]\n }\n }\n if (Object.keys(extra).length > 0) {\n azure.additionalMetadata = { ...(azure.additionalMetadata ?? {}), ...extra }\n changes.push({\n key: \"win.azureSignOptions\",\n description: `moved extra keys [${Object.keys(extra).join(\", \")}] into win.sign.additionalMetadata`,\n })\n }\n\n win.sign = { ...azure, type: \"azure\" }\n changes.push({ key: \"win.azureSignOptions\", description: 'moved win.azureSignOptions → win.sign: { type: \"azure\", … }' })\n } else {\n const signtool: Record<string, any> = { ...win.signtoolOptions }\n delete win.signtoolOptions\n win.sign = { ...signtool, type: \"signtool\" }\n changes.push({ key: \"win.signtoolOptions\", description: 'moved win.signtoolOptions → win.sign: { type: \"signtool\", … }' })\n }\n }\n }\n }\n\n // ── 13. mac/mas/masDev signing + universal consolidation ──────────────────\n // Signing fields (incl. identity) move into `sign`; mergeASARs/singleArchFiles/x64ArchFiles into `universal`.\n for (const platform of [\"mac\", \"mas\", \"masDev\"] as const) {\n if (c[platform] != null && typeof c[platform] === \"object\") {\n migrateMacSigning(c[platform], platform, changes, warnings)\n migrateMacUniversal(c[platform], platform, changes)\n }\n }\n\n // ── 14. electronDownload → electronGet ────────────────────────────────────\n if (\"electronDownload\" in c) {\n migrateElectronDownload(c, changes, warnings)\n }\n\n return { migrated: c, changes, warnings, modified: changes.length > 0 || warnings.length > 0 }\n}\n\n/**\n * Moves macOS signing fields from a platform config (mac/mas/masDev) into the `sign` bag and\n * renames `signIgnore` → `sign.ignore`. In v26 `sign` was only a custom-signer (string path / module id),\n * so a non-object `sign` cannot absorb these options — that case is warned about, not clobbered.\n * A bare `sign: null` (v26 \"no custom signer\") is dropped so it does not flip to v27's \"skip signing\".\n */\nfunction migrateMacSigning(platform: Record<string, any>, name: string, changes: MigrationChange[], warnings: string[]) {\n const present = MAC_SIGN_FIELDS.filter(f => f in platform)\n const hasSignIgnore = \"signIgnore\" in platform\n const existingSign = platform.sign\n const signIsCustom = typeof existingSign === \"string\" || typeof existingSign === \"function\"\n\n if (present.length === 0 && !hasSignIgnore) {\n // Only thing to fix is a semantically-flipped bare null\n if (existingSign === null) {\n delete platform.sign\n changes.push({ key: `${name}.sign`, description: `removed ${name}.sign: null (v26 \"no custom signer\" = v27 default; sign: null now means skip signing)` })\n }\n return\n }\n\n if (signIsCustom) {\n const fields = [...present, ...(hasSignIgnore ? [\"signIgnore\"] : [])].join(\", \")\n warnings.push(\n `${name}.sign is a custom signing function/path, which cannot hold options. Move [${fields}] into an ElectronSignOptions object manually, or keep the custom signer and drop them.`\n )\n return\n }\n\n // existingSign is null/undefined or already an object → build the merged options bag\n const signObj: Record<string, any> = existingSign != null && typeof existingSign === \"object\" ? { ...existingSign } : {}\n for (const f of present) {\n signObj[f] = platform[f]\n delete platform[f]\n changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.sign.${f}` })\n }\n if (hasSignIgnore) {\n signObj.ignore = platform.signIgnore\n delete platform.signIgnore\n changes.push({ key: `${name}.signIgnore`, description: `renamed ${name}.signIgnore → ${name}.sign.ignore` })\n }\n platform.sign = signObj\n}\n\n/** Moves universal-build fields from a platform config into the `universal` bag. */\nfunction migrateMacUniversal(platform: Record<string, any>, name: string, changes: MigrationChange[]) {\n const present = MAC_UNIVERSAL_FIELDS.filter(f => f in platform)\n if (present.length === 0) {\n return\n }\n const universalObj: Record<string, any> = platform.universal != null && typeof platform.universal === \"object\" ? { ...platform.universal } : {}\n for (const f of present) {\n universalObj[f] = platform[f]\n delete platform[f]\n changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.universal.${f}` })\n }\n platform.universal = universalObj\n}\n\n// electronDownload fields with no equivalent in the v27 ElectronGetOptions (@electron/get v5) shape.\nexport const ELECTRON_DOWNLOAD_DROPPED = [\"cache\", \"customDir\", \"customFilename\", \"strictSSL\", \"platform\", \"arch\", \"version\"] as const\n\n/**\n * Renames `electronDownload` → `electronGet` and reshapes it to ElectronGetOptions.\n * `mirror` → `mirrorOptions.mirror`, `isVerifyChecksum: false` → `unsafelyDisableChecksums: true`.\n * Fields with no v5 equivalent are dropped with a warning.\n */\nfunction migrateElectronDownload(c: Record<string, any>, changes: MigrationChange[], warnings: string[]) {\n const old = c.electronDownload\n delete c.electronDownload\n\n if (old == null || typeof old !== \"object\") {\n changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet\" })\n if (old != null) {\n c.electronGet = old\n }\n return\n }\n\n const next: Record<string, any> = { ...(c.electronGet ?? {}) }\n if (\"mirror\" in old && old.mirror != null) {\n next.mirrorOptions = { ...(next.mirrorOptions ?? {}), mirror: old.mirror }\n }\n if (old.isVerifyChecksum === false) {\n next.unsafelyDisableChecksums = true\n }\n // Carry over any already-valid ElectronGetOptions fields (mirrorOptions, unsafelyDisableChecksums, force, etc.)\n for (const [k, v] of Object.entries(old)) {\n if (k !== \"mirror\" && k !== \"isVerifyChecksum\" && !ELECTRON_DOWNLOAD_DROPPED.includes(k as any)) {\n next[k] = v\n }\n }\n\n const dropped = ELECTRON_DOWNLOAD_DROPPED.filter(k => k in old)\n if (dropped.length > 0) {\n warnings.push(\n `electronGet (formerly electronDownload) dropped [${dropped.join(\", \")}] — these have no equivalent in @electron/get v5. Set a mirror via electronGet.mirrorOptions if needed.`\n )\n }\n\n c.electronGet = next\n changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\" })\n}\n\nfunction mergeAsarUnpack(existing: string | string[] | undefined, incoming: string | string[]): string | string[] {\n if (existing == null) {\n return incoming\n }\n const arr = (Array.isArray(existing) ? existing : [existing]).concat(Array.isArray(incoming) ? incoming : [incoming])\n return arr.length === 1 ? arr[0] : arr\n}\n\nfunction migratePublishEntries(parent: Record<string, any>, key: string, changes: MigrationChange[]) {\n const entries: any[] = Array.isArray(parent[key]) ? parent[key] : [parent[key]]\n let changed = false\n for (const entry of entries) {\n if (entry != null && entry.provider === \"github\" && \"vPrefixedTagName\" in entry) {\n entry.tagNamePrefix = entry.vPrefixedTagName === false ? \"\" : \"v\"\n delete entry.vPrefixedTagName\n changed = true\n }\n // GitLab keeps vPrefixedTagName in v27 — it remains in the type, scheme, and runtime\n // (gitlabPublisher honors it) and has no tagNamePrefix equivalent, so leave it untouched.\n }\n if (changed) {\n changes.push({ key: `${key}[].vPrefixedTagName`, description: \"replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries\" })\n }\n}\n\n// snap bases recognized by the v27 snapcraft config. \"custom\" uses an inline/path yaml\n// and must be moved verbatim rather than nested under a per-base sub-key.\nexport const SNAP_BASES = new Set([\"core18\", \"core20\", \"core22\", \"core24\", \"custom\"])\n\n/**\n * Migrates the removed flat `snap` config into the v27 `snapcraft` shape:\n * { snapcraft: { base, [base]: { ...rest } } }\n * When no `base` is present, defaults to \"core20\" (the v27 1-to-1 migration target) and warns.\n */\nfunction migrateSnap(c: Record<string, any>, changes: MigrationChange[], warnings: string[]) {\n const snap = c.snap\n delete c.snap\n\n if (snap == null || typeof snap !== \"object\") {\n changes.push({ key: \"snap\", description: \"removed empty snap config (use snapcraft in v27)\" })\n return\n }\n\n const snapcraft: Record<string, any> = { ...(c.snapcraft ?? {}) }\n const rest: Record<string, any> = { ...snap }\n let base: string | undefined = rest.base\n delete rest.base\n\n if (base === \"custom\") {\n // base: custom carries yamlPath / inline yaml — move verbatim, no per-base nesting\n snapcraft.base = \"custom\"\n Object.assign(snapcraft, rest)\n c.snapcraft = snapcraft\n changes.push({ key: \"snap\", description: \"moved snap (base: custom) → snapcraft verbatim\" })\n return\n }\n\n let assumed = false\n if (base == null || !SNAP_BASES.has(base)) {\n if (base != null) {\n warnings.push(`snap config had an unrecognized base \"${base}\"; assumed \"core20\". Verify the snapcraft.base value (core18/core20/core22/core24/custom).`)\n }\n base = \"core20\"\n assumed = true\n }\n\n snapcraft.base = base\n snapcraft[base] = { ...(snapcraft[base] ?? {}), ...rest }\n c.snapcraft = snapcraft\n changes.push({ key: \"snap\", description: `moved snap → snapcraft.${base}${assumed ? \" (base defaulted to core20)\" : \"\"}` })\n if (assumed && warnings.every(w => !w.includes(\"unrecognized base\"))) {\n warnings.push('snap config had no \"base\"; assumed \"core20\" for snapcraft. Verify and adjust the base if needed (core18/core20/core22/core24).')\n }\n}\n\n// ─── File I/O ─────────────────────────────────────────────────────────────────\n\ntype ConfigFormat = \"json\" | \"json5\" | \"yaml\" | \"toml\" | \"js\"\n\nfunction formatFromPath(p: string): ConfigFormat {\n const ext = path.extname(p).toLowerCase()\n if (ext === \".json\") {\n return \"json\"\n }\n if (ext === \".json5\") {\n return \"json5\"\n }\n if (ext === \".yml\" || ext === \".yaml\") {\n return \"yaml\"\n }\n if (ext === \".toml\") {\n return \"toml\"\n }\n return \"js\"\n}\n\nfunction serializeConfig(content: Record<string, any>, format: ConfigFormat, originalText: string): string {\n if (format === \"yaml\") {\n const yaml = _require(\"js-yaml\") as { dump(obj: unknown, opts?: { lineWidth?: number; quotingType?: string; forceQuotes?: boolean }): string }\n return yaml.dump(content, { lineWidth: 120, quotingType: '\"', forceQuotes: false })\n }\n // JSON and JSON5: detect original indent level\n const indentMatch = originalText.match(/^{\\s*\\n( +)/m)\n const indent = indentMatch ? indentMatch[1].length : 2\n return JSON.stringify(content, null, indent) + \"\\n\"\n}\n\ninterface FoundConfig {\n /** Absolute path to the file, or null when config is in package.json */\n readonly configFile: string | null\n readonly isPackageJson: boolean\n readonly format: ConfigFormat\n readonly rawText: string\n readonly parsed: Record<string, any>\n /** package.json only: a root-level `directories` key was folded into `build.directories` */\n readonly rootDirectoriesMoved?: boolean\n}\n\nasync function findAndLoadConfig(projectDir: string, explicitConfigPath?: string | null): Promise<FoundConfig | null> {\n if (explicitConfigPath != null) {\n const abs = path.resolve(projectDir, explicitConfigPath)\n const text = await readFileSafe(abs)\n if (text == null) {\n log.error({ configFile: abs }, \"config file not found\")\n return null\n }\n const format = formatFromPath(abs)\n return { configFile: abs, isPackageJson: false, format, rawText: text, parsed: parseConfig(text, format) }\n }\n\n // Check package.json build key first\n const pkgPath = path.join(projectDir, \"package.json\")\n const pkgText = await readFileSafe(pkgPath)\n if (pkgText != null) {\n const pkg = JSON.parse(pkgText)\n if (pkg.build != null && typeof pkg.build === \"object\") {\n const build: Record<string, any> = pkg.build\n let rootDirectoriesMoved = false\n if (pkg.directories != null && build.directories == null) {\n build.directories = pkg.directories\n rootDirectoriesMoved = true\n }\n return { configFile: null, isPackageJson: true, format: \"json\", rawText: pkgText, parsed: build, rootDirectoriesMoved }\n }\n }\n\n // Standalone config files\n const candidates = [\".yml\", \".yaml\", \".json\", \".json5\", \".toml\", \".js\", \".cjs\", \".mjs\", \".ts\"].map(ext => path.join(projectDir, `electron-builder${ext}`))\n for (const candidate of candidates) {\n const text = await readFileSafe(candidate)\n if (text != null) {\n const format = formatFromPath(candidate)\n return { configFile: candidate, isPackageJson: false, format, rawText: text, parsed: parseConfig(text, format) }\n }\n }\n\n return null\n}\n\nfunction parseConfig(text: string, format: ConfigFormat): Record<string, any> {\n if (format === \"js\") {\n // Programmatic configs (JS/TS/MJS/CJS) can't be parsed; migrateSchema will bail with manual steps\n return {}\n }\n if (format === \"yaml\") {\n const yaml = _require(\"js-yaml\") as { load(text: string): unknown }\n return yaml.load(text) as Record<string, any>\n }\n if (format === \"json5\") {\n const json5 = _require(\"json5\") as { parse(text: string): any }\n return json5.parse(text)\n }\n if (format === \"toml\") {\n const toml = _require(\"toml\") as { parse(text: string): any }\n return toml.parse(text)\n }\n return JSON.parse(text)\n}\n\nasync function readFileSafe(p: string): Promise<string | null> {\n return orNullIfFileNotExist(fs.readFile(p, \"utf8\"))\n}\n\nasync function writeBackConfig(found: FoundConfig, migrated: Record<string, any>, projectDir: string): Promise<string> {\n if (found.isPackageJson) {\n const pkgPath = path.join(projectDir, \"package.json\")\n const pkg = JSON.parse(found.rawText)\n pkg.build = migrated\n if (found.rootDirectoriesMoved) {\n delete pkg.directories\n }\n const indentMatch = found.rawText.match(/^{\\s*\\n( +)/m)\n const indent = indentMatch ? indentMatch[1].length : 2\n await fs.writeFile(pkgPath, JSON.stringify(pkg, null, indent) + \"\\n\", \"utf8\")\n return \"package.json\"\n }\n const serialized = serializeConfig(migrated, found.format, found.rawText)\n await fs.writeFile(found.configFile!, serialized, \"utf8\")\n return path.relative(projectDir, found.configFile!)\n}\n\n// ─── CLI command ──────────────────────────────────────────────────────────────\n\nexport function configureMigrateSchemaCommand(yargs: Argv): Argv {\n return yargs\n .option(\"config\", {\n alias: \"c\",\n type: \"string\",\n description: \"Path to config file (auto-detected if omitted)\",\n })\n .option(\"project-dir\", {\n type: \"string\",\n description: \"Project root directory\",\n default: process.cwd(),\n })\n .option(\"dry-run\", {\n alias: \"n\",\n type: \"boolean\",\n default: false,\n description: \"Print what would change without writing\",\n })\n}\n\nexport async function migrateSchema(args: any): Promise<void> {\n const projectDir: string = path.resolve((args[\"project-dir\"] as string | undefined) ?? process.cwd())\n const configPath: string | null = (args.config as string | undefined) ?? null\n const dryRun: boolean = (args[\"dry-run\"] as boolean | undefined) ?? false\n\n const found = await findAndLoadConfig(projectDir, configPath)\n if (found == null) {\n log.error(null, \"no config found — checked package.json build key and electron-builder.{yml,yaml,json,json5,toml,js,cjs,ts}\")\n process.exit(1)\n }\n\n const location = found.isPackageJson ? 'package.json (\"build\" key)' : path.relative(projectDir, found.configFile!)\n log.info({ file: location }, \"loaded config\")\n\n // Programmatic formats (JS/TS) are rewritten surgically via an AST-located text codemod.\n if (found.format === \"js\") {\n await migrateProgrammaticConfigFile(found, location, dryRun)\n return\n }\n\n // TOML: can parse but not serialize (toml lib is read-only)\n const isToml = found.format === \"toml\"\n\n const result = migrateConfig(found.parsed)\n const { migrated, warnings } = result\n const changes = [...result.changes]\n if (found.rootDirectoriesMoved) {\n changes.push({ key: \"directories\", description: \"moved package.json root-level directories → build.directories\" })\n }\n const modified = result.modified || found.rootDirectoriesMoved === true\n\n if (!modified) {\n log.info(null, \"config is already up to date — no changes needed\")\n return\n }\n\n for (const change of changes) {\n log.info({ key: change.key }, change.description)\n }\n for (const warning of warnings) {\n log.warn(null, warning)\n }\n\n if (isToml) {\n log.warn({ file: location }, \"TOML configs cannot be automatically rewritten; apply the changes above manually\")\n return\n }\n\n if (dryRun) {\n log.info(null, \"dry run — no files written\")\n return\n }\n\n const written = await writeBackConfig(found, migrated, projectDir)\n log.info({ file: written }, \"wrote migrated config\")\n\n if (found.format === \"json5\") {\n log.warn(null, \"JSON5 was re-serialized as JSON — comments were not preserved\")\n }\n}\n\nasync function migrateProgrammaticConfigFile(found: FoundConfig, location: string, dryRun: boolean): Promise<void> {\n if (loadTypeScript() == null) {\n log.warn(\n { file: location },\n \"auto-migration of programmatic configs requires the 'typescript' package, which was not found. Install it (e.g. `npm i -D typescript`) or apply these changes manually:\"\n )\n printManualSteps()\n return\n }\n\n const result = migrateProgrammaticSource(found.rawText, found.configFile!)\n\n if (result.status === \"unsupported\") {\n log.warn({ file: location, reason: result.unsupportedReason }, \"this programmatic config could not be auto-migrated; apply these changes manually:\")\n printManualSteps()\n return\n }\n\n if (result.status === \"no-op\") {\n log.info(null, \"config is already up to date — no changes needed\")\n return\n }\n\n for (const change of result.changes) {\n log.info({ key: change.key }, change.description)\n }\n for (const warning of result.warnings) {\n log.warn(null, warning)\n }\n\n if (dryRun) {\n log.info(null, \"dry run — no files written\")\n return\n }\n\n await fs.writeFile(found.configFile!, result.code, \"utf8\")\n log.info({ file: location }, \"wrote migrated config\")\n}\n\nfunction printManualSteps() {\n const steps = [\n \"\",\n \"• Remove electronCompile\",\n \"• Remove framework, nodeVersion, launchUiVersion\",\n \"• Rename npmSkipBuildFromSource → buildDependenciesFromSource\",\n \"• Move buildDependenciesFromSource, nodeGypRebuild, npmRebuild, nativeRebuilder into nativeModules (rename nativeRebuilder → rebuildMode)\",\n \"• Rename asar-unpack / asar-unpack-dir / asar.unpack / asar.unpackDir → asarUnpack; then move asarUnpack → asar.unpack\",\n \"• Move disableSanityCheckAsar → asar.disableSanityCheck\",\n \"• Move disableAsarIntegrity → asar.disableIntegrity\",\n \"• Replace asar: true with an asar object (e.g. asar: {} or omit entirely - asar is enabled by default)\",\n \"• Remove appImage.systemIntegration\",\n \"• Rename snap → snapcraft; nest options under a base-named sub-key (default base: core20)\",\n \"• Replace vPrefixedTagName with tagNamePrefix on GitHub publish entries ('v' is the default prefix - just like before - but can now be customized with tagNamePrefix)\",\n \"• Move win.signtoolOptions → win.sign: { type: 'signtool', ...fields }\",\n \"• Move win.azureSignOptions → win.sign: { type: 'azure', ...fields }; move untyped extra keys into win.sign.additionalMetadata\",\n \"• Remove win.signAndEditExecutable (resource editing always runs in v27); replace win.signExecutable: false with win.sign: false\",\n \"• Move helper-bundle-id → mac.helperBundleId\",\n \"• Replace squirrelWindows.noMsi with squirrelWindows.msi (inverted)\",\n \"• Move mac/mas/masDev signing fields (identity, entitlements, hardenedRuntime, type, requirements, timestamp, binaries, gatekeeperAssess, strictVerify, preAutoEntitlements, provisioningProfile, additionalArguments) into the `sign` object; rename signIgnore → sign.ignore\",\n \"• Move mac/mas/masDev mergeASARs / singleArchFiles / x64ArchFiles into the `universal` object\",\n \"• Rename electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum:false → unsafelyDisableChecksums:true)\",\n \"• Move root-level package.json directories → build.directories\",\n \"\",\n \"• For programmatic configs (JS/TS/MJS/CJS), apply the above changes manually to your config object\",\n \"• For additional guidance, check the migration walkthrough: https://www.electron.build/docs/migration/v26-to-v27\",\n \"• Full list of breaking changes: https://www.electron.build/docs/migration/v27-breaking-changes\",\n ]\n for (const step of steps) {\n process.stdout.write(` ${step}\\n`)\n }\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "electron-builder",
3
3
  "description": "A complete solution to package and build a ready for distribution Electron app for MacOS, Windows and Linux with “auto update” support out of the box",
4
- "version": "27.0.0-alpha.4",
4
+ "version": "27.0.0-alpha.5",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "exports": {
@@ -69,14 +69,13 @@
69
69
  "chalk": "^4.1.2",
70
70
  "ci-info": "^4.2.0",
71
71
  "fs-extra": "^11.3.0",
72
- "lazy-val": "^1.0.5",
73
72
  "simple-update-notifier": "2.0.0",
74
73
  "yargs": "^17.6.2",
75
- "app-builder-lib": "27.0.0-alpha.4",
76
- "builder-util": "27.0.0-alpha.4",
77
- "builder-util-runtime": "10.0.0-alpha.3",
78
- "dmg-builder": "27.0.0-alpha.4",
79
- "electron-publish": "27.0.0-alpha.4"
74
+ "app-builder-lib": "27.0.0-alpha.5",
75
+ "dmg-builder": "27.0.0-alpha.5",
76
+ "electron-publish": "27.0.0-alpha.5",
77
+ "builder-util-runtime": "10.0.0-alpha.4",
78
+ "builder-util": "27.0.0-alpha.5"
80
79
  },
81
80
  "devDependencies": {
82
81
  "@types/fs-extra": "9.0.13",