electron-builder 27.0.0-alpha.8 → 27.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assert-node-version.js +39 -0
- package/cli.js +5 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +19 -1
- package/dist/builder.js.map +1 -1
- package/dist/cli/cli.js +7 -0
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/create-update-key.d.ts +2 -0
- package/dist/cli/create-update-key.d.ts.map +1 -0
- package/dist/cli/create-update-key.js +34 -0
- package/dist/cli/create-update-key.js.map +1 -0
- package/dist/cli/migrate-schema-programmatic.d.ts.map +1 -1
- package/dist/cli/migrate-schema-programmatic.js +326 -44
- package/dist/cli/migrate-schema-programmatic.js.map +1 -1
- package/dist/cli/migrate-schema.d.ts +14 -4
- package/dist/cli/migrate-schema.d.ts.map +1 -1
- package/dist/cli/migrate-schema.js +330 -77
- package/dist/cli/migrate-schema.js.map +1 -1
- package/dist/publish.js +27 -17
- package/dist/publish.js.map +1 -1
- package/install-app-deps.js +5 -1
- package/package.json +7 -6
|
@@ -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, 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 /** Informational notices that are not config changes — they never flip `modified` or trigger a file write. */\n readonly advisories: 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// Advisory surfaced (informational only — never rewrites the config) when a project builds an nsis-web target. As of v27,\n// AppUpdater.disableWebInstaller defaults to true, so the auto-updater no longer downloads web-installer packages unless the app opts in at runtime.\nexport const NSIS_WEB_ADVISORY =\n \"nsis-web target detected. In v27, autoUpdater.disableWebInstaller defaults to true, so NSIS web-installer packages are not downloaded by default. \" +\n \"If your app relies on nsis-web installers for auto-updates, set autoUpdater.disableWebInstaller = false in your main process (this is an electron-updater runtime setting, not a build-config key).\"\n\n/** True when `target` (a string, a `{ target }` object, or an array of either) selects the nsis-web target. */\nfunction hasNsisWebTarget(target: any): boolean {\n if (target == null) {\n return false\n }\n if (typeof target === \"string\") {\n return target === \"nsis-web\"\n }\n if (Array.isArray(target)) {\n return target.some(hasNsisWebTarget)\n }\n if (typeof target === \"object\") {\n return target.target === \"nsis-web\"\n }\n return false\n}\n\n/** True when the build config produces an nsis-web installer (via win.target or the global target). */\nfunction detectNsisWebTarget(config: Record<string, any>): boolean {\n return hasNsisWebTarget(config.win?.target) || hasNsisWebTarget(config.target)\n}\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 const advisories: 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 // ── 2c. linux.syncDesktopName removed (always-on in v27) ──────────────────\n // The flag is gone from the type; the behaviour it gated (deriving the installed .desktop filename\n // from desktopName) is now always on. Leaving the key would fail v27 schema validation (noExtraProps).\n if (c.linux != null && typeof c.linux === \"object\" && \"syncDesktopName\" in c.linux) {\n const wasDisabled = c.linux.syncDesktopName === false\n delete c.linux.syncDesktopName\n changes.push({\n key: \"linux.syncDesktopName\",\n description: \"removed linux.syncDesktopName (the installed .desktop filename is always synced from desktopName in v27)\",\n })\n if (wasDisabled) {\n warnings.push(\n \"linux.syncDesktopName: false disabled desktop-name syncing in v26. In v27 the installed .desktop filename is always derived from `desktopName` \" +\n \"(falling back to executableName). If you relied on the old filename, set `desktopName` explicitly to control it.\"\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 // Advisory (not a config change): nsis-web builders must opt back into web installers at runtime as of v27.\n if (detectNsisWebTarget(c)) {\n advisories.push(NSIS_WEB_ADVISORY)\n }\n\n return { migrated: c, changes, warnings, advisories, 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, advisories } = 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 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 // Advisories are informational and surface even when nothing changed; they never cause a rewrite.\n for (const advisory of advisories) {\n log.warn(null, advisory)\n }\n\n if (!modified) {\n if (advisories.length === 0) {\n log.info(null, \"config is already up to date — no changes needed\")\n }\n return\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 const printAdvisories = () => {\n for (const advisory of result.advisories) {\n log.warn(null, advisory)\n }\n }\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 printAdvisories()\n return\n }\n\n if (result.status === \"no-op\") {\n if (result.advisories.length === 0) {\n log.info(null, \"config is already up to date — no changes needed\")\n }\n printAdvisories()\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 printAdvisories()\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 \"• Remove linux.syncDesktopName (the installed .desktop filename is always synced from desktopName in v27)\",\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"]}
|
|
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 { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_SIGN_REMOVED_FIELDS, MAC_UNIVERSAL_FIELDS } from \"app-builder-lib/internal\"\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 /** Informational notices that are not config changes — they never flip `modified` or trigger a file write. */\n readonly advisories: string[]\n readonly modified: boolean\n}\n\n// ─── Pure migration logic ─────────────────────────────────────────────────────\n\n// The v26 -> v27 key mapping is owned by app-builder-lib so the runtime guard\n// (`checkLegacyConfiguration`) and this migrator cannot drift apart. Re-exported here because these\n// names are part of this module's existing public surface.\nexport { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_SIGN_REMOVED_FIELDS, MAC_UNIVERSAL_FIELDS } from \"app-builder-lib/internal\"\n\n// Advisory surfaced (informational only — never rewrites the config) when a project builds an nsis-web target. As of v27,\n// AppUpdater.disableWebInstaller defaults to true, so the auto-updater no longer downloads web-installer packages unless the app opts in at runtime.\nexport const NSIS_WEB_ADVISORY =\n \"nsis-web target detected. In v27, autoUpdater.disableWebInstaller defaults to true, so NSIS web-installer packages are not downloaded by default. \" +\n \"If your app relies on nsis-web installers for auto-updates, set autoUpdater.disableWebInstaller = false in your main process (this is an electron-updater runtime setting, not a build-config key).\"\n\n// Advisory surfaced when a mac/mas/masDev config does not name its own entitlements file. v27 stopped granting\n// allow-unsigned-executable-memory and disable-library-validation in the bundled default, which only fails at runtime.\nexport const MAC_ENTITLEMENTS_ADVISORY =\n \"In v27 the bundled default macOS entitlements grant only com.apple.security.cs.allow-jit (allow-unsigned-executable-memory and disable-library-validation are no longer granted). \" +\n \"If you rely on the default (no mac.sign.entitlements and no build/entitlements.mac.plist) and your app loads native modules, frameworks, or plugins signed by another Team ID (or unsigned), \" +\n \"add those entitlements back in build/entitlements.mac.plist. See https://www.electron.build/docs/migration/v27-breaking-changes#macos-default-entitlements-tightened\"\n\n/**\n * macOS signing/universal fields that v26 accepted as `null` (meaning \"unset\") but whose v27 type has no `null`\n * branch, so a moved `null` would fail validation. They are dropped instead of moved. `identity: null` is not in\n * this list — it means \"skip signing\" and `sign.identity` still accepts it.\n */\nexport const MAC_NULL_MEANS_UNSET_FIELDS: ReadonlySet<string> = new Set([\"type\", \"provisioningProfile\", \"binaries\", \"signIgnore\", \"singleArchFiles\", \"x64ArchFiles\"])\n\n/** Platform keys that accepted a platform-level `asarUnpack` in v26. */\nexport const ASAR_PLATFORM_KEYS = [\"mac\", \"mas\", \"masDev\", \"win\", \"linux\"] as const\n\n/** v26 `snap` options that the v27 `snapcraft.core24` shape does not accept (core24 uses the snapcraft CLI directly). */\nexport const SNAP_CORE24_UNSUPPORTED = [\"allowNativeWayland\", \"useTemplateApp\"] as const\n\n/** True when `target` (a string, a `{ target }` object, or an array of either) selects the nsis-web target. */\nfunction hasNsisWebTarget(target: any): boolean {\n if (target == null) {\n return false\n }\n if (typeof target === \"string\") {\n return target === \"nsis-web\"\n }\n if (Array.isArray(target)) {\n return target.some(hasNsisWebTarget)\n }\n if (typeof target === \"object\") {\n return target.target === \"nsis-web\"\n }\n return false\n}\n\n/** True when the build config produces an nsis-web installer (via win.target or the global target). */\nfunction detectNsisWebTarget(config: Record<string, any>): boolean {\n return hasNsisWebTarget(config.win?.target) || hasNsisWebTarget(config.target)\n}\n\n/**\n * True when a mac/mas/masDev section signs with electron-builder's defaults without naming its own entitlements\n * file. A custom signer (string/function `sign`) or `sign.identity: null` (skip signing) bypasses the defaults.\n */\nfunction detectDefaultMacEntitlements(config: Record<string, any>): boolean {\n return ([\"mac\", \"mas\", \"masDev\"] as const).some(p => {\n const platform = config[p]\n if (!isPlainObject(platform)) {\n return false\n }\n const sign = platform.sign\n if (typeof sign === \"string\" || typeof sign === \"function\") {\n return false\n }\n return !(isPlainObject(sign) && (sign.entitlements != null || sign.identity === null))\n })\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, any> {\n return value != null && typeof value === \"object\" && !Array.isArray(value)\n}\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 const advisories: 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 // ── 2c. linux.syncDesktopName removed (always-on in v27) ──────────────────\n // The flag is gone from the type; the behaviour it gated (deriving the installed .desktop filename\n // from desktopName) is now always on. Leaving the key would fail v27 schema validation (noExtraProps).\n if (c.linux != null && typeof c.linux === \"object\" && \"syncDesktopName\" in c.linux) {\n const wasDisabled = c.linux.syncDesktopName === false\n delete c.linux.syncDesktopName\n changes.push({\n key: \"linux.syncDesktopName\",\n description: \"removed linux.syncDesktopName (the installed .desktop filename is always synced from desktopName in v27)\",\n })\n if (wasDisabled) {\n warnings.push(\n \"linux.syncDesktopName: false disabled desktop-name syncing in v26. In v27 the installed .desktop filename is always derived from `desktopName` \" +\n \"(falling back to executableName). If you relied on the old filename, set `desktopName` explicitly to control it.\"\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 if (c.nativeRebuilder === \"legacy\") {\n // v27 dropped the app-builder binary rebuilder; rebuildMode only selects @electron/rebuild's mode.\n warnings.push(\n 'nativeRebuilder: \"legacy\" (the app-builder binary rebuilder) was removed in v27 — native modules are always rebuilt with @electron/rebuild. ' +\n 'The value was dropped, so the default nativeModules.rebuildMode (\"sequential\") applies.'\n )\n } else {\n sub.rebuildMode = c.nativeRebuilder\n }\n delete c.nativeRebuilder\n changes.push({ key: \"nativeRebuilder\", description: \"renamed nativeRebuilder → nativeModules.rebuildMode\" })\n }\n if (Object.keys(sub).length > 0 || c.nativeModules != null) {\n c.nativeModules = sub\n }\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, warnings)\n }\n // Also handle publish nested inside any platform/target section (mac, win, nsis, dmg, snap, …)\n for (const value of Object.values(c)) {\n if (isPlainObject(value) && value.publish != null) {\n migratePublishEntries(value, \"publish\", changes, warnings)\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 // ── 10b. squirrelWindows.customSquirrelVendorDir removed (not auto-migrated) ──\n // The v27 replacement (a toolsets.squirrel ToolsetCustom bundle) needs a different directory layout, so the\n // key is left in place: the build then fails with a targeted message instead of silently switching the\n // vendored Squirrel binaries back to the default bundle.\n if (isPlainObject(c.squirrelWindows) && \"customSquirrelVendorDir\" in c.squirrelWindows) {\n warnings.push(\n \"squirrelWindows.customSquirrelVendorDir was removed in v27 and cannot be migrated automatically. \" +\n 'Supply the custom bundle via toolsets.squirrel: { url: \"file:///abs/path\" } — the bundle must contain an electron-winstaller/vendor/ subtree ' +\n \"(customSquirrelVendorDir pointed at the vendor files directly) — or remove the key to use the default Squirrel bundle.\"\n )\n }\n\n // ── 11. asar consolidation ───────────────────────────────────────────────\n // Move root-level asarUnpack / disableSanityCheckAsar / disableAsarIntegrity\n // into the asar object. In v26 these applied to every platform independently of `asar`; in v27 they live\n // inside it, and a platform-level `asar` replaces the root one wholesale — so capture them first for step 11b.\n const rootAsarValue = c.asar\n const rootFlatAsar: Record<string, any> = {}\n if (\"asarUnpack\" in c) {\n rootFlatAsar.unpack = c.asarUnpack\n }\n if (\"disableSanityCheckAsar\" in c) {\n rootFlatAsar.disableSanityCheck = c.disableSanityCheckAsar\n }\n if (\"disableAsarIntegrity\" in c) {\n rootFlatAsar.disableIntegrity = c.disableAsarIntegrity\n }\n if (c.asar === false) {\n // No effect on the root build; step 11b still carries them into any platform that re-enables asar.\n for (const key of [\"asarUnpack\", \"disableSanityCheckAsar\", \"disableAsarIntegrity\"] as const) {\n if (key in c) {\n delete c[key]\n changes.push({ key, description: `removed ${key} (no effect with asar: false)` })\n }\n }\n } else {\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 changes.push({ key: \"asar\", description: `replaced asar: true with an asar object carrying ${Object.keys(asarSub).join(\", \")}` })\n } else {\n delete c.asar\n changes.push({ key: \"asar\", description: \"removed redundant asar: true (asar is enabled by default; the explicit `true` is not needed)\" })\n }\n } else if (Object.keys(asarSub).length > 0) {\n c.asar = asarSub\n }\n }\n\n // ── 11b. platform-level asar ──────────────────────────────────────────────\n for (const platform of ASAR_PLATFORM_KEYS) {\n if (isPlainObject(c[platform])) {\n migratePlatformAsar(c, platform, rootAsarValue, rootFlatAsar, changes)\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. Either one set to\n // false skipped ALL signing in v26, so both map to win.sign: false (signAndEditExecutable also skipped\n // resource editing, which always runs in v27 — that part has no equivalent).\n const signingDisabled = win.signExecutable === false || win.signAndEditExecutable === false\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; signing is still skipped via win.sign: false. \" +\n \"There is no v27 equivalent that also skips resource editing — apply resources manually if needed.\"\n )\n }\n changes.push({ key: \"win.signAndEditExecutable\", description: \"removed win.signAndEditExecutable (resource editing always runs in v27)\" })\n }\n if (\"signExecutable\" in win) {\n delete win.signExecutable\n changes.push({ key: \"win.signExecutable\", description: \"removed win.signExecutable (signing is enabled by default when credentials are available)\" })\n }\n if (signingDisabled && win.sign == null) {\n win.sign = false\n changes.push({ key: \"win.sign\", description: \"set win.sign: false (v26 signExecutable/signAndEditExecutable: false disabled signing; resource editing still runs)\" })\n }\n\n if (win.sign === false && (win.azureSignOptions != null || win.signtoolOptions != null)) {\n // Signing was switched off, so the legacy options never applied. Only their key names are reported —\n // the values can hold certificate passwords.\n const dropped = ([\"signtoolOptions\", \"azureSignOptions\"] as const).filter(k => win[k] != null)\n for (const k of dropped) {\n delete win[k]\n changes.push({ key: `win.${k}`, description: `removed win.${k} (signing is disabled with win.sign: false)` })\n }\n warnings.push(\n `win.sign is false (signing disabled), so [${dropped.map(k => `win.${k}`).join(\", \")}] had no effect and ${dropped.length === 1 ? \"was\" : \"were\"} removed. ` +\n 'To sign in v27, replace win.sign: false with win.sign: { type: \"signtool\" | \"azure\", … } carrying those options.'\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, \"electronDownload\", changes, warnings)\n } else if (isPlainObject(c.electronGet) && Object.keys(c.electronGet).some(isLegacyElectronDownloadKey)) {\n // A hand-renamed `electronGet` that still carries the v26 shape.\n migrateElectronDownload(c, \"electronGet\", changes, warnings)\n }\n\n // ── 15. toolsets ──────────────────────────────────────────────────────────\n if (isPlainObject(c.toolsets)) {\n migrateToolsets(c.toolsets, changes)\n }\n\n // Advisories (not config changes): runtime defaults that changed in v27 and only surface after the build.\n if (detectNsisWebTarget(c)) {\n advisories.push(NSIS_WEB_ADVISORY)\n }\n if (detectDefaultMacEntitlements(c)) {\n advisories.push(MAC_ENTITLEMENTS_ADVISORY)\n }\n\n return { migrated: c, changes, warnings, advisories, 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 // Removed outright, not moved: ElectronSignOptions omits these and the schema rejects them, so\n // relocating them under `sign` would emit a config that fails validation on the next build.\n for (const field of MAC_SIGN_REMOVED_FIELDS) {\n if (field in platform) {\n delete platform[field]\n changes.push({ key: `${name}.${field}`, description: `removed ${name}.${field} (@electron/osx-sign 2.x dropped the spctl --assess step; there is no ${name}.sign.${field})` })\n }\n }\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 if (dropNullField(platform, f, name, changes)) {\n continue\n }\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 && !dropNullField(platform, \"signIgnore\", name, changes)) {\n signObj.ignore = platform.signIgnore\n delete platform.signIgnore\n changes.push({ key: `${name}.signIgnore`, description: `renamed ${name}.signIgnore → ${name}.sign.ignore` })\n }\n if (Object.keys(signObj).length > 0 || existingSign != null) {\n platform.sign = signObj\n } else if (existingSign === null) {\n // Every moved field was a dropped null — a bare `sign: null` left behind would now mean \"skip signing\".\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}\n\n/** Drops a v26 `null` (\"unset\") for a field whose v27 type has no null branch. Returns true when dropped. */\nfunction dropNullField(platform: Record<string, any>, field: string, name: string, changes: MigrationChange[]): boolean {\n if (platform[field] !== null || !MAC_NULL_MEANS_UNSET_FIELDS.has(field)) {\n return false\n }\n delete platform[field]\n changes.push({ key: `${name}.${field}`, description: `removed ${name}.${field}: null (null meant \"unset\" in v26; the v27 option does not accept null)` })\n return true\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 if (dropNullField(platform, f, name, changes)) {\n continue\n }\n universalObj[f] = platform[f]\n delete platform[f]\n changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.universal.${f}` })\n }\n if (Object.keys(universalObj).length > 0 || platform.universal != null) {\n platform.universal = universalObj\n }\n}\n\n/**\n * Moves a platform-level `asarUnpack` into that platform's `asar` object.\n *\n * v26 concatenated root and platform `asarUnpack` and always applied the root `disableSanityCheckAsar` /\n * `disableAsarIntegrity`, whatever the platform's `asar` was. v27 keeps all three inside `asar`, and a\n * platform-level `asar` replaces the root one entirely — so a platform that overrides `asar` (or gains one\n * here) gets the root values folded in to keep the v26 result.\n */\nfunction migratePlatformAsar(c: Record<string, any>, name: string, rootAsarValue: any, rootFlatAsar: Record<string, any>, changes: MigrationChange[]) {\n const platform: Record<string, any> = c[name]\n const hasUnpack = \"asarUnpack\" in platform\n const own = platform.asar\n\n if (own == null) {\n // Inherits the root asar — only needs an override of its own to carry a platform asarUnpack.\n if (!hasUnpack) {\n return\n }\n if (rootAsarValue === false) {\n delete platform.asarUnpack\n changes.push({ key: `${name}.asarUnpack`, description: `removed ${name}.asarUnpack (no effect with asar: false)` })\n return\n }\n const next: Record<string, any> = isPlainObject(c.asar) ? { ...c.asar } : {}\n next.unpack = mergeAsarUnpack(next.unpack, platform.asarUnpack)\n platform.asar = next\n delete platform.asarUnpack\n changes.push({\n key: `${name}.asarUnpack`,\n description: `moved ${name}.asarUnpack → ${name}.asar.unpack (merged with the root asar options, since a platform-level asar replaces the root one)`,\n })\n return\n }\n\n if (own === false) {\n if (hasUnpack) {\n delete platform.asarUnpack\n changes.push({ key: `${name}.asarUnpack`, description: `removed ${name}.asarUnpack (no effect with ${name}.asar: false)` })\n }\n return\n }\n\n // own is true or an AsarOptions object: fold the v26 root-level options (and the platform asarUnpack) into it.\n const next: Record<string, any> = isPlainObject(own) ? { ...own } : {}\n const folded: string[] = []\n if (rootFlatAsar.unpack != null || hasUnpack) {\n // v26 order: root patterns first, then the platform's own.\n let unpack: string | string[] | undefined = undefined\n for (const it of [rootFlatAsar.unpack, next.unpack, hasUnpack ? platform.asarUnpack : undefined]) {\n if (it != null) {\n unpack = mergeAsarUnpack(unpack, it)\n }\n }\n if (unpack !== undefined) {\n next.unpack = unpack\n folded.push(\"unpack\")\n }\n }\n for (const key of [\"disableSanityCheck\", \"disableIntegrity\"] as const) {\n if (key in rootFlatAsar && !(key in next)) {\n next[key] = rootFlatAsar[key]\n folded.push(key)\n }\n }\n if (hasUnpack) {\n delete platform.asarUnpack\n }\n if (folded.length === 0) {\n return\n }\n platform.asar = next\n changes.push({\n key: hasUnpack ? `${name}.asarUnpack` : `${name}.asar`,\n description: `folded ${folded.map(k => `asar.${k}`).join(\", \")} into ${name}.asar (a platform-level asar replaces the root one in v27, so the v26 root-level values are copied)`,\n })\n}\n\n/** Removes `null` toolset values (rejected by the v27 schema) and remaps pins to bundles that are no longer published. */\nfunction migrateToolsets(toolsets: Record<string, any>, changes: MigrationChange[]) {\n for (const [key, value] of Object.entries(toolsets)) {\n if (value === null) {\n delete toolsets[key]\n changes.push({\n key: `toolsets.${key}`,\n description: `removed toolsets.${key}: null (v27 rejects null; unset resolves to \"latest\", the newest bundle — pin \"0.0.0\" to keep the legacy bundle v26 used)`,\n })\n }\n }\n if (toolsets.appimage === \"1.0.2\") {\n toolsets.appimage = \"1.0.3\"\n changes.push({\n key: \"toolsets.appimage\",\n description: 'replaced toolsets.appimage: \"1.0.2\" with \"1.0.3\" (1.0.2 is no longer offered; 1.0.3 is the same runtime with the #9598 fix)',\n })\n }\n}\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>, sourceKey: \"electronDownload\" | \"electronGet\", changes: MigrationChange[], warnings: string[]) {\n const old = c[sourceKey]\n delete c[sourceKey]\n\n if (old == null || typeof old !== \"object\") {\n changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet\" })\n if (old != null && c.electronGet == null) {\n c.electronGet = old\n }\n return\n }\n\n const next: Record<string, any> = {}\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 // An electronGet that already exists is the v27 intent: fold the legacy values in underneath it, never over it.\n const existing = sourceKey === \"electronDownload\" && isPlainObject(c.electronGet) ? c.electronGet : null\n if (existing != null) {\n const conflicts: string[] = []\n let mergedMirrorOptions: Record<string, any> | undefined\n for (const [k, v] of Object.entries(next)) {\n if (k === \"mirrorOptions\" && isPlainObject(v) && isPlainObject(existing.mirrorOptions)) {\n const own = existing.mirrorOptions\n conflicts.push(\n ...Object.keys(v)\n .filter(m => m in own && JSON.stringify(own[m]) !== JSON.stringify(v[m]))\n .map(m => `mirrorOptions.${m}`)\n )\n mergedMirrorOptions = { ...v, ...own }\n } else if (k in existing && JSON.stringify(existing[k]) !== JSON.stringify(v)) {\n conflicts.push(k)\n }\n }\n Object.assign(next, existing, mergedMirrorOptions != null ? { mirrorOptions: mergedMirrorOptions } : {})\n if (conflicts.length > 0) {\n warnings.push(\n `Both electronDownload and electronGet set [${conflicts.join(\", \")}]; kept the existing electronGet values and dropped the electronDownload ones. Verify the merged electronGet.`\n )\n }\n }\n\n c.electronGet = next\n changes.push({\n key: sourceKey,\n description:\n sourceKey === \"electronDownload\"\n ? \"renamed electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\"\n : \"reshaped electronGet to the v27 options (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\",\n })\n}\n\n/** Keys of the v26 `electronDownload` shape that are not valid v27 `electronGet` keys. */\nexport function isLegacyElectronDownloadKey(key: string): boolean {\n return key === \"mirror\" || key === \"isVerifyChecksum\" || (ELECTRON_DOWNLOAD_DROPPED as readonly string[]).includes(key)\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[], warnings: string[]) {\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\") {\n continue\n }\n if (\"vPrefixedTagName\" in entry) {\n // v26 githubTagPrefix(): a non-empty tagNamePrefix won; otherwise vPrefixedTagName (default true) chose \"v\" or \"\".\n entry.tagNamePrefix = entry.tagNamePrefix ? entry.tagNamePrefix : entry.vPrefixedTagName === false ? \"\" : \"v\"\n delete entry.vPrefixedTagName\n changed = true\n } else if (entry.tagNamePrefix === \"\") {\n // v26 ignored an empty tagNamePrefix and still tagged \"v1.2.3\"; v27 honors it and would tag \"1.2.3\".\n entry.tagNamePrefix = \"v\"\n changed = true\n warnings.push(\n 'A GitHub publish entry set tagNamePrefix: \"\". v26 ignored an empty prefix and tagged releases \"v<version>\"; v27 honors it. ' +\n 'It was rewritten to tagNamePrefix: \"v\" to keep your existing tag names — set it back to \"\" if you want unprefixed tags from now on.'\n )\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 if (base === \"core24\") {\n const unsupported = SNAP_CORE24_UNSUPPORTED.filter(k => k in rest)\n for (const k of unsupported) {\n delete rest[k]\n }\n if (unsupported.length > 0) {\n warnings.push(\n `snap config set [${unsupported.join(\", \")}], which the v27 snapcraft.core24 options do not support (core24 builds with the snapcraft CLI directly); they were dropped.`\n )\n }\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, advisories } = 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 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 // Advisories are informational and surface even when nothing changed; they never cause a rewrite.\n for (const advisory of advisories) {\n log.warn(null, advisory)\n }\n\n if (!modified) {\n if (advisories.length === 0) {\n log.info(null, \"config is already up to date — no changes needed\")\n }\n return\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 const printAdvisories = () => {\n for (const advisory of result.advisories) {\n log.warn(null, advisory)\n }\n }\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 printAdvisories()\n return\n }\n\n if (result.status === \"no-op\") {\n // A no-op can still carry warnings for keys that cannot be rewritten (e.g. customSquirrelVendorDir).\n for (const warning of result.warnings) {\n log.warn(null, warning)\n }\n if (result.advisories.length === 0 && result.warnings.length === 0) {\n log.info(null, \"config is already up to date — no changes needed\")\n }\n printAdvisories()\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 printAdvisories()\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; drop a \"legacy\" value)',\n \"• Rename asar-unpack / asar-unpack-dir / asar.unpackDir → asarUnpack; then move asarUnpack → asar.unpack\",\n \"• Move mac/mas/masDev/win/linux asarUnpack → <platform>.asar.unpack (a platform-level asar replaces the root one, so copy the root asar options into it)\",\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 \"• Remove linux.syncDesktopName (the installed .desktop filename is always synced from desktopName in v27)\",\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); an empty tagNamePrefix is now honored\",\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 \"• Replace squirrelWindows.customSquirrelVendorDir with a toolsets.squirrel custom bundle (it must contain an electron-winstaller/vendor/ subtree)\",\n \"• Move mac/mas/masDev signing fields (identity, entitlements, entitlementsInherit, entitlementsLoginHelper, hardenedRuntime, type, requirements, timestamp, binaries, strictVerify, preAutoEntitlements, provisioningProfile, additionalArguments) into the `sign` object; rename signIgnore → sign.ignore; remove gatekeeperAssess\",\n \"• Move mac/mas/masDev mergeASARs / singleArchFiles / x64ArchFiles into the `universal` object\",\n \"• Rename electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum:false → unsafelyDisableChecksums:true; drop cache/customDir/customFilename/strictSSL/platform/arch/version/force)\",\n '• Remove toolsets.* entries set to null (unset resolves to \"latest\"); replace toolsets.appimage \"1.0.2\" with \"1.0.3\"',\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/dist/publish.js
CHANGED
|
@@ -70,27 +70,37 @@ async function publishPackageWithTasks(options, uploadTasks, buildVersion, cance
|
|
|
70
70
|
packager.cancellationToken.cancel();
|
|
71
71
|
publishManager.cancelTasks();
|
|
72
72
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
return withPublishSigIntHandler(sigIntHandler, async () => {
|
|
74
|
+
try {
|
|
75
|
+
const publishConfigurations = await publishManager.getGlobalPublishConfigurations();
|
|
76
|
+
if (publishConfigurations == null || publishConfigurations.length === 0) {
|
|
77
|
+
throw new InvalidConfigurationError("unable to find any publish configuration");
|
|
78
|
+
}
|
|
79
|
+
for (const newArtifact of uploadTasks) {
|
|
80
|
+
for (const publishConfiguration of publishConfigurations) {
|
|
81
|
+
await publishManager.scheduleUpload(publishConfiguration, newArtifact, appInfo);
|
|
82
|
+
}
|
|
82
83
|
}
|
|
84
|
+
await publishManager.awaitTasks();
|
|
85
|
+
return uploadTasks;
|
|
83
86
|
}
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
catch (error) {
|
|
88
|
+
packager.cancellationToken.cancel();
|
|
89
|
+
publishManager.cancelTasks();
|
|
90
|
+
log.error({ message: (error.stack || error.message || error).toString() }, "error publishing");
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/** @internal */
|
|
96
|
+
export async function withPublishSigIntHandler(handler, task) {
|
|
97
|
+
process.once("SIGINT", handler);
|
|
98
|
+
try {
|
|
99
|
+
return await task();
|
|
86
100
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
publishManager.cancelTasks();
|
|
90
|
-
process.removeListener("SIGINT", sigIntHandler);
|
|
91
|
-
log.error({ message: (error.stack || error.message || error).toString() }, "error publishing");
|
|
101
|
+
finally {
|
|
102
|
+
process.removeListener("SIGINT", handler);
|
|
92
103
|
}
|
|
93
|
-
return null;
|
|
94
104
|
}
|
|
95
105
|
function main() {
|
|
96
106
|
return publish(configurePublishCommand(createYargs()).argv);
|
package/dist/publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAmB,cAAc,EAA8B,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC7J,OAAO,EAAW,+BAA+B,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAC9F,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhG,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAgB,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE1E,gBAAgB;AAChB,MAAM,UAAU,uBAAuB,CAAC,KAAW;IACjD,4CAA4C;IAC5C,qCAAqC;IACrC,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,CAAC;SACd,mBAAmB,CAAC;QACnB,sBAAsB,EAAE,KAAK;KAC9B,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,yCAAyC;KACvD,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2FAA2F;KACzG,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,CAAC,GAAG,EAAE,uBAAuB,CAAC;QACrC,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,4HAA4H,GAAG,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC;KAC1K,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+BAA+B,KAAK,CAAC,SAAS,CAAC,oCAAoC,CAAC,EAAE;QACnG,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAgB,CAAC;KACxE,CAAC;SACD,YAAY,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAwH;IACpJ,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACrC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,IAAI;SACX,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,2BAA2B,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;AAChI,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,aAAsD,EACtD,YAAqB,EACrB,qBAA8B,EAC9B,oBAA8B,EAC9B,cAA+B;IAE/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,qBAAqB,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAA;IAExI,MAAM,YAAY,GAAiB,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAA;IACjG,wBAAwB,CAAC,YAAY,CAAC,CAAA;IAEtC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAA;IACxD,MAAM,KAAK,GAAiB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACpC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,+BAA+B,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxI,CAAC,CAAC,CAAA;IAEF,OAAO,uBAAuB,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;AACnE,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,OAAyC,EACzC,WAAyB,EACzB,YAAqB,EACrB,oBAAuC,IAAI,iBAAiB,EAAE,EAC9D,WAAqB,IAAI,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAE7D,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACnD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAA;IAE/E,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAC/B,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAA;QACnC,cAAc,CAAC,WAAW,EAAE,CAAA;IAC9B,CAAC,CAAA;IAED,OAAO,wBAAwB,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,qBAAqB,GAAG,MAAM,cAAc,CAAC,8BAA8B,EAAE,CAAA;YACnF,IAAI,qBAAqB,IAAI,IAAI,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,yBAAyB,CAAC,0CAA0C,CAAC,CAAA;YACjF,CAAC;YAED,KAAK,MAAM,WAAW,IAAI,WAAW,EAAE,CAAC;gBACtC,KAAK,MAAM,oBAAoB,IAAI,qBAAqB,EAAE,CAAC;oBACzD,MAAM,cAAc,CAAC,cAAc,CAAC,oBAAoB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;gBACjF,CAAC;YACH,CAAC;YAED,MAAM,cAAc,CAAC,UAAU,EAAE,CAAA;YACjC,OAAO,WAAW,CAAA;QACpB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAA;YACnC,cAAc,CAAC,WAAW,EAAE,CAAA;YAC5B,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAA;YAC9F,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAI,OAAmB,EAAE,IAAsB;IAC3F,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAA;IACrB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,IAAI;IACX,OAAO,OAAO,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC,CAAC,IAAW,CAAC,CAAA;AACpE,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAA;IAC9D,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;AACjC,CAAC","sourcesContent":["#! /usr/bin/env node\n\nimport { fileURLToPath } from \"node:url\"\nimport { AppInfo, CancellationToken, Packager, PackagerOptions, PublishManager, PublishOptions, UploadTask, checkBuildRequestOptions } from \"app-builder-lib\"\nimport { Publish, computeSafeArtifactNameIfNeeded, getConfig } from \"app-builder-lib/internal\"\nimport { InvalidConfigurationError, archFromString, log, printErrorAndExit } from \"builder-util\"\nimport type { PublishPolicy } from \"electron-publish\"\nimport chalk from \"chalk\"\nimport * as path from \"path\"\nimport { Argv } from \"yargs\"\nimport { BuildOptions, createYargs, normalizeOptions } from \"./builder.js\"\n\n/** @internal */\nexport function configurePublishCommand(yargs: Argv): Argv {\n // https://github.com/yargs/yargs/issues/760\n // demandOption is required to be set\n return yargs\n .version(false)\n .parserConfiguration({\n \"camel-case-expansion\": false,\n })\n .option(\"files\", {\n alias: \"f\",\n string: true,\n type: \"array\",\n requiresArg: true,\n description: \"The file(s) to upload to your publisher\",\n })\n .option(\"version\", {\n alias: [\"v\"],\n type: \"string\",\n description: \"The app/build version used when searching for an upload release (used by some Publishers)\",\n })\n .option(\"config\", {\n alias: [\"c\", \"configurationFilePath\"],\n type: \"string\",\n description:\n \"The path to an electron-builder config. Defaults to `electron-builder.yml` (or `json`, or `json5`, or `js`, or `ts`), see \" + chalk.underline(\"https://goo.gl/YFRJOM\"),\n })\n .option(\"policy\", {\n alias: [\"p\"],\n type: \"string\",\n description: `Publish trigger policy, see ${chalk.underline(\"https://www.electron.build/publish\")}`,\n choices: [\"onTag\", \"onTagOrDraft\", \"always\", \"never\", undefined as any],\n })\n .demandOption(\"files\")\n}\n\nexport async function publish(args: { files: string[]; version: string | undefined; configurationFilePath: string | undefined; policy: PublishPolicy }) {\n const uploadTasks = args.files.map(f => {\n return {\n file: path.resolve(f),\n arch: null,\n }\n })\n return publishArtifactsWithOptions(uploadTasks, args.version, args.configurationFilePath, undefined, { publish: args.policy })\n}\n\nexport async function publishArtifactsWithOptions(\n uploadOptions: { file: string; arch: string | null }[],\n buildVersion?: string,\n configurationFilePath?: string,\n publishConfiguration?: Publish,\n publishOptions?: PublishOptions\n) {\n const projectDir = process.cwd()\n const config = await getConfig(projectDir, configurationFilePath || null, { publish: publishConfiguration, detectUpdateChannel: false })\n\n const buildOptions: BuildOptions = normalizeOptions({ config, publish: publishOptions?.publish })\n checkBuildRequestOptions(buildOptions)\n\n const uniqueUploads = Array.from(new Set(uploadOptions))\n const tasks: UploadTask[] = uniqueUploads.map(({ file, arch }) => {\n const filename = path.basename(file)\n return { file, arch: arch ? archFromString(arch) : null, safeArtifactName: computeSafeArtifactNameIfNeeded(filename, () => filename) }\n })\n\n return publishPackageWithTasks(buildOptions, tasks, buildVersion)\n}\n\nasync function publishPackageWithTasks(\n options: PackagerOptions & PublishOptions,\n uploadTasks: UploadTask[],\n buildVersion?: string,\n cancellationToken: CancellationToken = new CancellationToken(),\n packager: Packager = new Packager(options, cancellationToken)\n) {\n await packager.validateConfig()\n const appInfo = new AppInfo(packager, buildVersion)\n const publishManager = new PublishManager(packager, options, cancellationToken)\n\n const sigIntHandler = () => {\n log.warn(\"cancelled by SIGINT\")\n packager.cancellationToken.cancel()\n publishManager.cancelTasks()\n }\n\n return withPublishSigIntHandler(sigIntHandler, async () => {\n try {\n const publishConfigurations = await publishManager.getGlobalPublishConfigurations()\n if (publishConfigurations == null || publishConfigurations.length === 0) {\n throw new InvalidConfigurationError(\"unable to find any publish configuration\")\n }\n\n for (const newArtifact of uploadTasks) {\n for (const publishConfiguration of publishConfigurations) {\n await publishManager.scheduleUpload(publishConfiguration, newArtifact, appInfo)\n }\n }\n\n await publishManager.awaitTasks()\n return uploadTasks\n } catch (error: any) {\n packager.cancellationToken.cancel()\n publishManager.cancelTasks()\n log.error({ message: (error.stack || error.message || error).toString() }, \"error publishing\")\n return null\n }\n })\n}\n\n/** @internal */\nexport async function withPublishSigIntHandler<T>(handler: () => void, task: () => Promise<T>): Promise<T> {\n process.once(\"SIGINT\", handler)\n try {\n return await task()\n } finally {\n process.removeListener(\"SIGINT\", handler)\n }\n}\n\nfunction main() {\n return publish(configurePublishCommand(createYargs()).argv as any)\n}\n\nif (process.argv[1] === fileURLToPath(import.meta.url)) {\n log.warn(\"please use as subcommand: electron-builder publish\")\n main().catch(printErrorAndExit)\n}\n"]}
|
package/install-app-deps.js
CHANGED
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
|
+
"version": "27.0.0-alpha.9",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"files": [
|
|
20
20
|
"dist",
|
|
21
|
+
"assert-node-version.js",
|
|
21
22
|
"cli.js",
|
|
22
23
|
"install-app-deps.js"
|
|
23
24
|
],
|
|
@@ -71,11 +72,11 @@
|
|
|
71
72
|
"fs-extra": "^11.3.0",
|
|
72
73
|
"simple-update-notifier": "2.0.0",
|
|
73
74
|
"yargs": "^17.6.2",
|
|
74
|
-
"app-builder-lib": "27.0.0-alpha.
|
|
75
|
-
"builder-util": "
|
|
76
|
-
"builder-util
|
|
77
|
-
"
|
|
78
|
-
"
|
|
75
|
+
"app-builder-lib": "27.0.0-alpha.9",
|
|
76
|
+
"builder-util-runtime": "10.0.0-alpha.8",
|
|
77
|
+
"builder-util": "27.0.0-alpha.9",
|
|
78
|
+
"dmg-builder": "27.0.0-alpha.9",
|
|
79
|
+
"electron-publish": "27.0.0-alpha.9"
|
|
79
80
|
},
|
|
80
81
|
"devDependencies": {
|
|
81
82
|
"@types/fs-extra": "9.0.13",
|