electron-builder 27.0.0-alpha.4 → 27.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +9 -22
- package/dist/builder.js.map +1 -1
- package/dist/cli/clear-cache.d.ts.map +1 -1
- package/dist/cli/clear-cache.js +4 -2
- package/dist/cli/clear-cache.js.map +1 -1
- package/dist/cli/create-self-signed-cert.js +2 -2
- package/dist/cli/create-self-signed-cert.js.map +1 -1
- package/dist/cli/install-app-deps.js +2 -6
- package/dist/cli/install-app-deps.js.map +1 -1
- package/dist/cli/migrate-schema-programmatic.d.ts +2 -0
- package/dist/cli/migrate-schema-programmatic.d.ts.map +1 -1
- package/dist/cli/migrate-schema-programmatic.js +51 -10
- package/dist/cli/migrate-schema-programmatic.js.map +1 -1
- package/dist/cli/migrate-schema.d.ts +3 -0
- package/dist/cli/migrate-schema.d.ts.map +1 -1
- package/dist/cli/migrate-schema.js +70 -15
- package/dist/cli/migrate-schema.js.map +1 -1
- package/package.json +6 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-schema-programmatic.js","sourceRoot":"","sources":["../../src/cli/migrate-schema-programmatic.ts"],"names":[],"mappings":"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","sourcesContent":["import { createRequire } from \"node:module\"\nimport * as path from \"path\"\nimport { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_UNIVERSAL_FIELDS, SNAP_BASES } from \"./migrate-schema.js\"\nimport type { MigrationChange } from \"./migrate-schema.js\"\n\nconst _require = createRequire(import.meta.url)\n\n// `typescript` is intentionally NOT a dependency of electron-builder — it is loaded lazily (same\n// pattern as js-yaml/json5/toml) and the feature degrades to manual steps when it is unavailable.\n// Types are kept loose (`any`) on purpose so no `typescript` types are required at compile time.\nlet tsModuleCache: any | null | undefined\nexport function loadTypeScript(): any | null {\n if (tsModuleCache !== undefined) {\n return tsModuleCache\n }\n try {\n tsModuleCache = _require(\"typescript\")\n } catch {\n tsModuleCache = null\n }\n return tsModuleCache\n}\n\nexport type ProgrammaticMigrationStatus = \"migrated\" | \"no-op\" | \"unsupported\"\n\nexport interface ProgrammaticMigrationResult {\n /** Rewritten source. Equal to the input when nothing changed or the config is unsupported. */\n readonly code: string\n readonly changes: MigrationChange[]\n readonly warnings: string[]\n readonly status: ProgrammaticMigrationStatus\n /** Set when status === \"unsupported\": why the config could not be auto-migrated. */\n readonly unsupportedReason?: string\n}\n\ninterface Edit {\n start: number\n end: number\n text: string\n}\n\n/**\n * Migrates a programmatic JS/TS electron-builder config (the same v26→v27 transforms as\n * {@link migrateConfig}) by surgically rewriting the source text. The TypeScript parser is used only\n * to locate node ranges; everything outside an edited range is preserved byte-for-byte, so comments,\n * imports, functions, and formatting are untouched.\n *\n * Pure: source string in, result out. No file I/O. Returns status \"unsupported\" (with the source\n * unchanged) when typescript is not installed or the config cannot be statically reduced to a single\n * object literal (function that builds the object dynamically, spreads, computed keys, …).\n */\nexport function migrateProgrammaticSource(sourceText: string, fileName: string): ProgrammaticMigrationResult {\n const ts = loadTypeScript()\n if (ts == null) {\n return { code: sourceText, changes: [], warnings: [], status: \"unsupported\", unsupportedReason: \"typescript-not-installed\" }\n }\n\n const scriptKind = scriptKindFor(ts, fileName)\n const sf = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, /* setParentNodes */ true, scriptKind)\n\n const codemod = new ConfigCodemod(ts, sf, sourceText)\n const located = codemod.locateConfigObject()\n if (located.objLit == null) {\n return { code: sourceText, changes: [], warnings: [], status: \"unsupported\", unsupportedReason: located.reason }\n }\n\n codemod.run(located.objLit)\n if (codemod.edits.length === 0) {\n return { code: sourceText, changes: codemod.changes, warnings: codemod.warnings, status: \"no-op\" }\n }\n return { code: codemod.apply(), changes: codemod.changes, warnings: codemod.warnings, status: \"migrated\" }\n}\n\nfunction scriptKindFor(ts: any, fileName: string): any {\n const ext = path.extname(fileName).toLowerCase()\n switch (ext) {\n case \".ts\":\n case \".cts\":\n case \".mts\":\n return ts.ScriptKind.TS\n case \".tsx\":\n return ts.ScriptKind.TSX\n case \".jsx\":\n return ts.ScriptKind.JSX\n default:\n return ts.ScriptKind.JS\n }\n}\n\nclass ConfigCodemod {\n readonly edits: Edit[] = []\n readonly changes: MigrationChange[] = []\n readonly warnings: string[] = []\n private indentUnit = \" \"\n\n constructor(\n private readonly ts: any,\n private readonly sf: any,\n private readonly text: string\n ) {}\n\n // ── Locate the config object literal ──────────────────────────────────────\n\n locateConfigObject(): { objLit?: any; reason?: string } {\n const ts = this.ts\n const candidates: any[] = []\n\n for (const stmt of this.sf.statements) {\n if (ts.isExportAssignment(stmt)) {\n // `export default <expr>` and `export = <expr>`\n candidates.push(stmt.expression)\n } else if (ts.isExpressionStatement(stmt) && ts.isBinaryExpression(stmt.expression) && stmt.expression.operatorToken.kind === ts.SyntaxKind.EqualsToken) {\n const lhs = stmt.expression.left\n if (this.isModuleExportsTarget(lhs)) {\n candidates.push(stmt.expression.right)\n }\n } else if (ts.isFunctionDeclaration(stmt) && this.hasDefaultExport(stmt)) {\n // `export default function () { return {...} }`\n const lit = this.literalFromFunctionLike(stmt)\n if (lit != null) {\n candidates.push(lit)\n }\n }\n }\n\n // Inline `build({ config: {...} })` form (programmatic-usage.md). Search the whole tree.\n this.forEachDescendant(this.sf, node => {\n const cfg = this.configArgOfBuildCall(node)\n if (cfg != null) {\n candidates.push(cfg)\n }\n })\n\n let reason = \"no electron-builder config object literal found (expected a default/module.exports object export or a build({ config }) call)\"\n for (const candidate of candidates) {\n const resolved = this.resolveToObjectLiteral(candidate, 0)\n if (resolved.objLit != null) {\n return { objLit: resolved.objLit }\n }\n if (resolved.reason != null) {\n reason = resolved.reason\n }\n }\n return { reason }\n }\n\n private isModuleExportsTarget(lhs: any): boolean {\n const ts = this.ts\n if (!ts.isPropertyAccessExpression(lhs)) {\n return false\n }\n // module.exports = ... OR exports.default = ...\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"module\" && lhs.name.text === \"exports\") {\n return true\n }\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"exports\" && lhs.name.text === \"default\") {\n return true\n }\n return false\n }\n\n private hasDefaultExport(node: any): boolean {\n const ts = this.ts\n const mods = node.modifiers\n if (mods == null) {\n return false\n }\n let hasExport = false\n let hasDefault = false\n for (const m of mods) {\n if (m.kind === ts.SyntaxKind.ExportKeyword) {\n hasExport = true\n }\n if (m.kind === ts.SyntaxKind.DefaultKeyword) {\n hasDefault = true\n }\n }\n return hasExport && hasDefault\n }\n\n private configArgOfBuildCall(node: any): any | null {\n const ts = this.ts\n if (!ts.isCallExpression(node)) {\n return null\n }\n const callee = node.expression\n const isBuild = (ts.isIdentifier(callee) && callee.text === \"build\") || (ts.isPropertyAccessExpression(callee) && callee.name.text === \"build\")\n if (!isBuild || node.arguments.length === 0) {\n return null\n }\n const arg0 = node.arguments[0]\n if (!ts.isObjectLiteralExpression(arg0)) {\n return null\n }\n const configProp = this.getProp(arg0, \"config\")\n return configProp != null && ts.isPropertyAssignment(configProp) ? configProp.initializer : null\n }\n\n private resolveToObjectLiteral(expr: any, depth: number): { objLit?: any; reason?: string } {\n const ts = this.ts\n if (depth > 6) {\n return { reason: \"config export could not be resolved (too many indirections)\" }\n }\n const node = this.unwrap(expr)\n if (ts.isObjectLiteralExpression(node)) {\n if (this.hasSpreadOrComputed(node)) {\n return { reason: \"config object uses a spread (`...`) or computed key, which cannot be migrated automatically\" }\n }\n return { objLit: node }\n }\n if (ts.isIdentifier(node)) {\n const init = this.findVariableInitializer(node.text)\n if (init == null) {\n return { reason: `config export references \"${node.text}\", which is not a local object literal` }\n }\n return this.resolveToObjectLiteral(init, depth + 1)\n }\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {\n const lit = this.literalFromFunctionLike(node)\n if (lit == null) {\n return { reason: \"config is a function that does not return a single object literal — migrate it manually\" }\n }\n return this.resolveToObjectLiteral(lit, depth + 1)\n }\n return { reason: \"config export is not an object literal — migrate it manually\" }\n }\n\n /** Unwraps parentheses and type-only wrappers (`as`, `satisfies`, `!`, `<T>x`) to the inner expression. */\n private unwrap(node: any): any {\n const ts = this.ts\n let n = node\n for (;;) {\n if (\n ts.isParenthesizedExpression(n) ||\n ts.isAsExpression(n) ||\n (ts.isSatisfiesExpression && ts.isSatisfiesExpression(n)) ||\n ts.isNonNullExpression(n) ||\n ts.isTypeAssertionExpression?.(n)\n ) {\n n = n.expression\n } else {\n return n\n }\n }\n }\n\n private hasSpreadOrComputed(objLit: any): boolean {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (ts.isSpreadAssignment(p)) {\n return true\n }\n if (p.name != null && ts.isComputedPropertyName(p.name)) {\n return true\n }\n }\n return false\n }\n\n private findVariableInitializer(name: string): any | null {\n const ts = this.ts\n for (const stmt of this.sf.statements) {\n if (!ts.isVariableStatement(stmt)) {\n continue\n }\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text === name && decl.initializer != null) {\n return decl.initializer\n }\n }\n }\n return null\n }\n\n /** Returns the single object-literal expression a function-like trivially yields, or null. */\n private literalFromFunctionLike(fn: any): any | null {\n const ts = this.ts\n const body = fn.body\n if (body == null) {\n return null\n }\n if (!ts.isBlock(body)) {\n // arrow expression body: `() => ({...})` / `() => obj`\n return body\n }\n const returns: any[] = []\n this.collectReturns(body, returns)\n if (returns.length !== 1 || returns[0].expression == null) {\n return null\n }\n return returns[0].expression\n }\n\n private collectReturns(node: any, out: any[]): void {\n const ts = this.ts\n const visit = (n: any): void => {\n // Don't descend into nested functions — their returns are not the config's.\n if (ts.isFunctionDeclaration(n) || ts.isFunctionExpression(n) || ts.isArrowFunction(n)) {\n return\n }\n if (ts.isReturnStatement(n)) {\n out.push(n)\n }\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n private forEachDescendant(node: any, cb: (n: any) => void): void {\n const visit = (n: any): void => {\n cb(n)\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n // ── Run all rules ─────────────────────────────────────────────────────────\n\n run(root: any): void {\n this.indentUnit = this.detectIndentUnit(root)\n this.ruleRemoveKeys(root, [\"electronCompile\"], \"removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)\")\n this.ruleRemoveKeys(root, [\"framework\", \"nodeVersion\", \"launchUiVersion\"], key => `removed ${key} (Electron is the only supported framework in v27)`)\n this.ruleNativeModules(root)\n this.ruleAsar(root)\n this.ruleAppImageSystemIntegration(root)\n this.rulePublish(root, \"publish\")\n for (const platform of [\"mac\", \"win\", \"linux\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.rulePublish(p, \"publish\", platform + \".\")\n }\n }\n this.ruleSnap(root)\n this.ruleHelperBundleId(root)\n this.ruleSquirrelNoMsi(root)\n this.ruleWinSign(root)\n for (const platform of [\"mac\", \"mas\", \"masDev\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.ruleMacSigning(p, platform)\n this.ruleMacUniversal(p, platform)\n }\n }\n this.ruleElectronDownload(root)\n }\n\n // ── Rules ───────────────────────────────────────────────────────────────\n\n private ruleRemoveKeys(obj: any, keys: string[], description: string | ((key: string) => string)): void {\n for (const key of keys) {\n const prop = this.getProp(obj, key)\n if (prop != null) {\n this.removeProp(prop)\n this.changes.push({ key, description: typeof description === \"function\" ? description(key) : description })\n }\n }\n }\n\n private ruleNativeModules(root: any): void {\n const sources: { prop: any; renameTo?: string }[] = []\n const extraEntries: string[] = []\n\n for (const key of [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\"]) {\n const prop = this.getProp(root, key)\n if (prop != null) {\n sources.push({ prop })\n this.changes.push({ key, description: `moved ${key} → nativeModules.${key}` })\n }\n }\n\n const nativeRebuilder = this.getProp(root, \"nativeRebuilder\")\n if (nativeRebuilder != null) {\n sources.push({ prop: nativeRebuilder, renameTo: \"rebuildMode\" })\n this.changes.push({ key: \"nativeRebuilder\", description: \"renamed nativeRebuilder → nativeModules.rebuildMode\" })\n }\n\n const npmSkip = this.getProp(root, \"npmSkipBuildFromSource\")\n if (npmSkip != null && this.ts.isPropertyAssignment(npmSkip)) {\n const hasBds = this.getProp(root, \"buildDependenciesFromSource\") != null\n if (!hasBds) {\n extraEntries.push(`buildDependenciesFromSource: ${this.negate(npmSkip.initializer)}`)\n }\n this.removeProp(npmSkip)\n this.changes.push({ key: \"npmSkipBuildFromSource\", description: \"renamed npmSkipBuildFromSource → buildDependenciesFromSource (then grouped under nativeModules)\" })\n }\n\n if (sources.length === 0 && extraEntries.length === 0) {\n return\n }\n const ok = this.moveInto(root, \"nativeModules\", sources, extraEntries)\n if (!ok) {\n this.warnings.push(\"nativeModules already exists but is not an object literal; move buildDependenciesFromSource/nodeGypRebuild/npmRebuild/rebuildMode into it manually.\")\n }\n }\n\n private ruleAsar(root: any): void {\n const ts = this.ts\n const asarProp = this.getProp(root, \"asar\")\n const asarVal = asarProp != null && ts.isPropertyAssignment(asarProp) ? this.unwrap(asarProp.initializer) : null\n const asarIsFalse = asarVal != null && asarVal.kind === ts.SyntaxKind.FalseKeyword\n const asarIsTrue = asarVal != null && asarVal.kind === ts.SyntaxKind.TrueKeyword\n const asarIsObject = asarVal != null && ts.isObjectLiteralExpression(asarVal)\n\n if (asarIsFalse) {\n if (this.getProp(root, \"asar-unpack\") != null || this.getProp(root, \"asar-unpack-dir\") != null || this.getProp(root, \"asarUnpack\") != null) {\n this.warnings.push(\"asar is false but asar-unpack/asarUnpack is also set. asar: false disables packaging entirely; remove the unpack keys or enable asar manually.\")\n }\n return\n }\n\n // Collect unpack sources (root-level hyphenated/camel + nested asar.unpackDir).\n const unpackSources: any[] = []\n const collectUnpack = (key: string, descKey: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n unpackSources.push(prop.initializer)\n this.removeProp(prop)\n this.changes.push({ key: descKey, description: desc })\n }\n }\n collectUnpack(\"asar-unpack\", \"asar-unpack\", \"renamed asar-unpack → asar.unpack\")\n collectUnpack(\"asar-unpack-dir\", \"asar-unpack-dir\", \"renamed asar-unpack-dir → asar.unpack\")\n collectUnpack(\"asarUnpack\", \"asarUnpack\", \"moved asarUnpack → asar.unpack\")\n\n if (asarIsObject) {\n const nestedUnpackDir = this.getProp(asarVal, \"unpackDir\")\n if (nestedUnpackDir != null && ts.isPropertyAssignment(nestedUnpackDir)) {\n unpackSources.push(nestedUnpackDir.initializer)\n this.removeProp(nestedUnpackDir)\n this.changes.push({ key: \"asar.unpackDir\", description: \"moved asar.unpackDir → asar.unpack\" })\n }\n }\n\n const childRenames: { renameTo: string; value: any }[] = []\n const collectChild = (key: string, renameTo: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n childRenames.push({ renameTo, value: prop.initializer })\n this.removeProp(prop)\n this.changes.push({ key, description: desc })\n }\n }\n collectChild(\"disableSanityCheckAsar\", \"disableSanityCheck\", \"moved disableSanityCheckAsar → asar.disableSanityCheck\")\n collectChild(\"disableAsarIntegrity\", \"disableIntegrity\", \"moved disableAsarIntegrity → asar.disableIntegrity\")\n\n if (unpackSources.length === 0 && childRenames.length === 0 && !asarIsTrue) {\n return\n }\n\n const buildEntries = (childIndent: string): string[] => {\n const out: string[] = []\n if (unpackSources.length === 1) {\n out.push(`unpack: ${this.valueText(unpackSources[0], childIndent)}`)\n } else if (unpackSources.length > 1) {\n out.push(`unpack: ${this.mergeArrays(unpackSources)}`)\n }\n for (const c of childRenames) {\n out.push(`${c.renameTo}: ${this.valueText(c.value, childIndent)}`)\n }\n return out\n }\n\n if (asarIsObject) {\n this.insertIntoObject(asarVal, buildEntries(this.propIndentFor(asarVal)))\n return\n }\n\n if (asarIsTrue) {\n const braceIndent = this.lineIndentAt(this.start(asarProp.initializer))\n const entries = buildEntries(braceIndent + this.indentUnit)\n if (entries.length === 0) {\n this.removeProp(asarProp)\n } else {\n this.replaceValue(asarProp.initializer, this.objectLiteralTextAt(entries, braceIndent))\n }\n this.changes.push({ key: \"asar\", description: \"replaced asar: true with asar object (true is no longer a valid value)\" })\n return\n }\n\n // No asar prop yet — create one on root.\n this.createChild(root, \"asar\", buildEntries(this.propIndentFor(root) + this.indentUnit))\n }\n\n private ruleAppImageSystemIntegration(root: any): void {\n const appImage = this.getObjectProp(root, \"appImage\")\n if (appImage == null) {\n return\n }\n const si = this.getProp(appImage, \"systemIntegration\")\n if (si == null) {\n return\n }\n const appImageProp = this.getProp(root, \"appImage\")\n if (appImage.properties.length === 1) {\n this.removeProp(appImageProp)\n } else {\n this.removeProp(si)\n }\n this.changes.push({ key: \"appImage.systemIntegration\", description: \"removed appImage.systemIntegration (handled automatically by AppImageLauncher in v27)\" })\n }\n\n private rulePublish(parent: any, key: string, prefix = \"\"): void {\n const ts = this.ts\n const prop = this.getProp(parent, key)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const value = this.unwrap(prop.initializer)\n const entries: any[] = ts.isArrayLiteralExpression(value) ? value.elements : [value]\n let changed = false\n for (const entry of entries) {\n const obj = this.unwrap(entry)\n if (!ts.isObjectLiteralExpression(obj)) {\n continue\n }\n const provider = this.stringLiteralValue(this.getProp(obj, \"provider\"))\n const vPrefixed = this.getProp(obj, \"vPrefixedTagName\")\n if (vPrefixed == null || !ts.isPropertyAssignment(vPrefixed)) {\n continue\n }\n if (provider === \"github\") {\n const isFalse = vPrefixed.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.replaceRange(this.start(vPrefixed), vPrefixed.end, `tagNamePrefix: ${isFalse ? '\"\"' : '\"v\"'}`)\n changed = true\n } else if (provider === \"gitlab\") {\n this.removeProp(vPrefixed)\n changed = true\n }\n }\n if (changed) {\n this.changes.push({\n key: `${prefix}${key}[].vPrefixedTagName`,\n description: \"replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries; removed from GitLab entries\",\n })\n }\n }\n\n private ruleSnap(root: any): void {\n const ts = this.ts\n const snapProp = this.getProp(root, \"snap\")\n if (snapProp == null || !ts.isPropertyAssignment(snapProp)) {\n return\n }\n const snap = this.unwrap(snapProp.initializer)\n if (!ts.isObjectLiteralExpression(snap)) {\n this.removeProp(snapProp)\n this.changes.push({ key: \"snap\", description: \"removed empty snap config (use snapcraft in v27)\" })\n return\n }\n\n const baseProp = this.getProp(snap, \"base\")\n let base = this.stringLiteralValue(baseProp)\n const restProps = snap.properties.filter((p: any) => p !== baseProp)\n\n if (base === \"custom\") {\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries = ['base: \"custom\"', ...restProps.map((p: any) => this.entryText(p, childIndent))]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: \"moved snap (base: custom) → snapcraft verbatim\" })\n return\n }\n\n let assumed = false\n if (base == null || !SNAP_BASES.has(base)) {\n if (base != null) {\n this.warnings.push(`snap config had an unrecognized base \"${base}\"; assumed \"core20\". Verify the snapcraft.base value (core18/core20/core22/core24/custom).`)\n } else {\n this.warnings.push('snap config had no \"base\"; assumed \"core20\" for snapcraft. Verify and adjust the base if needed (core18/core20/core22/core24).')\n }\n base = \"core20\"\n assumed = true\n }\n\n const baseChildIndent = this.propIndentFor(root) + this.indentUnit + this.indentUnit\n const nestedEntries = restProps.map((p: any) => this.entryText(p, baseChildIndent))\n const snapcraftChildIndent = this.propIndentFor(root) + this.indentUnit\n const nestedObject = nestedEntries.length > 0 ? this.objectLiteralTextAt(nestedEntries, snapcraftChildIndent) : \"{}\"\n const entries = [`base: \"${base}\"`, `${base}: ${nestedObject}`]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: `moved snap → snapcraft.${base}${assumed ? \" (base defaulted to core20)\" : \"\"}` })\n }\n\n private ruleHelperBundleId(root: any): void {\n const prop = this.getProp(root, \"helper-bundle-id\")\n if (prop == null || !this.ts.isPropertyAssignment(prop)) {\n return\n }\n const mac = this.getObjectProp(root, \"mac\")\n if (mac != null && this.getProp(mac, \"helperBundleId\") != null) {\n this.removeProp(prop)\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n return\n }\n const ok = this.moveInto(root, \"mac\", [{ prop, renameTo: \"helperBundleId\" }], [])\n if (ok) {\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n } else {\n this.warnings.push(\"mac already exists but is not an object literal; move helper-bundle-id → mac.helperBundleId manually.\")\n }\n }\n\n private ruleSquirrelNoMsi(root: any): void {\n const ts = this.ts\n const sq = this.getObjectProp(root, \"squirrelWindows\")\n if (sq == null) {\n return\n }\n const noMsi = this.getProp(sq, \"noMsi\")\n if (noMsi == null || !ts.isPropertyAssignment(noMsi)) {\n return\n }\n if (this.getProp(sq, \"msi\") != null) {\n this.removeProp(noMsi)\n } else {\n this.replaceRange(this.start(noMsi), noMsi.end, `msi: ${this.negate(noMsi.initializer)}`)\n }\n this.changes.push({ key: \"squirrelWindows.noMsi\", description: \"replaced squirrelWindows.noMsi → squirrelWindows.msi (inverted boolean)\" })\n }\n\n private ruleWinSign(root: any): void {\n const ts = this.ts\n const win = this.getObjectProp(root, \"win\")\n if (win == null) {\n return\n }\n\n let signSet = this.getProp(win, \"sign\") != null\n\n const signAndEdit = this.getProp(win, \"signAndEditExecutable\")\n if (signAndEdit != null && ts.isPropertyAssignment(signAndEdit)) {\n const isFalse = signAndEdit.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signAndEdit)\n if (isFalse) {\n this.warnings.push(\n \"win.signAndEditExecutable: false was used to skip both resource editing and signing. In v27, resource editing always runs. To skip signing only, set win.sign: false. There is no v27 equivalent that also skips resource editing — apply resources manually if needed.\"\n )\n } else {\n this.changes.push({ key: \"win.signAndEditExecutable\", description: \"removed win.signAndEditExecutable (resource editing always runs in v27; was the default)\" })\n }\n }\n\n const signExe = this.getProp(win, \"signExecutable\")\n if (signExe != null && ts.isPropertyAssignment(signExe)) {\n const isFalse = signExe.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signExe)\n if (isFalse && !signSet) {\n this.createChild(win, \"sign\", [], \"false\")\n signSet = true\n this.changes.push({ key: \"win.signExecutable\", description: \"replaced win.signExecutable: false with win.sign: false (disables signing; resource editing still runs)\" })\n } else {\n this.changes.push({ key: \"win.signExecutable\", description: \"removed win.signExecutable (signing is enabled by default when credentials are available)\" })\n }\n }\n\n const azure = this.getObjectProp(win, \"azureSignOptions\")\n const signtool = this.getObjectProp(win, \"signtoolOptions\")\n const hasAzure = azure != null\n const hasSigntool = signtool != null\n if (!hasAzure && !hasSigntool) {\n return\n }\n\n const originalSign = this.getProp(win, \"sign\")\n const signAlreadySet = signSet || (originalSign != null && ts.isPropertyAssignment(originalSign) && originalSign.initializer.kind !== ts.SyntaxKind.NullKeyword)\n if (signAlreadySet) {\n this.warnings.push(\n `win.sign is already set alongside ${hasAzure ? \"win.azureSignOptions\" : \"win.signtoolOptions\"}. Remove the legacy key manually after verifying win.sign is correct.`\n )\n return\n }\n\n if (hasAzure && hasSigntool) {\n this.warnings.push(\n \"Both win.azureSignOptions and win.signtoolOptions are set. win.signtoolOptions will be dropped and win.azureSignOptions will be migrated to win.sign: { type: 'azure', … } (Azure took priority in v26). Verify the migrated win.sign block is correct for your project.\"\n )\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n }\n\n if (hasAzure) {\n this.buildWinAzureSign(win, azure)\n this.removeProp(this.getProp(win, \"azureSignOptions\"))\n this.changes.push({ key: \"win.azureSignOptions\", description: 'moved win.azureSignOptions → win.sign: { type: \"azure\", … }' })\n } else {\n this.buildWinSigntoolSign(win, signtool)\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n this.changes.push({ key: \"win.signtoolOptions\", description: 'moved win.signtoolOptions → win.sign: { type: \"signtool\", … }' })\n }\n }\n\n private buildWinSigntoolSign(win: any, signtool: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const entries: string[] = []\n for (const p of signtool.properties) {\n if (ts.isPropertyAssignment(p) && this.propName(p) === \"type\") {\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n entries.push('type: \"signtool\"')\n this.createChild(win, \"sign\", entries)\n }\n\n private buildWinAzureSign(win: any, azure: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const metaIndent = childIndent + this.indentUnit\n\n const knownEntries: string[] = []\n const metaEntries: string[] = []\n const extraKeys: string[] = []\n let existingMeta: any = null\n\n for (const p of azure.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"type\") {\n continue\n }\n if (name === \"additionalMetadata\") {\n existingMeta = this.unwrap(p.initializer)\n continue\n }\n const isString = ts.isStringLiteral(p.initializer)\n if (AZURE_KNOWN_FIELDS.has(name!)) {\n knownEntries.push(this.entryText(p, childIndent))\n } else if (isString) {\n metaEntries.push(this.entryText(p, metaIndent))\n extraKeys.push(name!)\n } else {\n // Unknown non-string field — keep verbatim so nothing is silently dropped.\n knownEntries.push(this.entryText(p, childIndent))\n }\n }\n\n if (existingMeta != null && ts.isObjectLiteralExpression(existingMeta)) {\n for (const p of existingMeta.properties) {\n metaEntries.push(this.entryText(p, metaIndent))\n }\n }\n\n const signEntries = [...knownEntries]\n if (metaEntries.length > 0) {\n signEntries.push(`additionalMetadata: ${this.objectLiteralTextAt(metaEntries, childIndent)}`)\n this.changes.push({ key: \"win.azureSignOptions\", description: `moved extra keys [${extraKeys.join(\", \")}] into win.sign.additionalMetadata` })\n }\n signEntries.push('type: \"azure\"')\n this.createChild(win, \"sign\", signEntries)\n }\n\n private ruleMacSigning(platform: any, name: string): void {\n const ts = this.ts\n const present = MAC_SIGN_FIELDS.filter(f => this.getProp(platform, f) != null)\n const signIgnore = this.getProp(platform, \"signIgnore\")\n const hasSignIgnore = signIgnore != null\n const existingSignProp = this.getProp(platform, \"sign\")\n const existingSign = existingSignProp != null && ts.isPropertyAssignment(existingSignProp) ? this.unwrap(existingSignProp.initializer) : null\n const signIsCustom =\n existingSign != null && (ts.isStringLiteral(existingSign) || ts.isArrowFunction(existingSign) || ts.isFunctionExpression(existingSign) || ts.isIdentifier(existingSign))\n const signIsNull = existingSign != null && existingSign.kind === ts.SyntaxKind.NullKeyword\n\n if (present.length === 0 && !hasSignIgnore) {\n if (signIsNull) {\n this.removeProp(existingSignProp)\n this.changes.push({ key: `${name}.sign`, description: `removed ${name}.sign: null (v26 \"no custom signer\" = v27 default; sign: null now means skip signing)` })\n }\n return\n }\n\n if (signIsCustom) {\n const fields = [...present, ...(hasSignIgnore ? [\"signIgnore\"] : [])].join(\", \")\n this.warnings.push(\n `${name}.sign is a custom signing function/path, which cannot hold options. Move [${fields}] into an ElectronSignOptions object manually, or keep the custom signer and drop them.`\n )\n return\n }\n\n const sources: { prop: any; renameTo?: string }[] = []\n for (const f of present) {\n const prop = this.getProp(platform, f)\n sources.push({ prop })\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.sign.${f}` })\n }\n if (hasSignIgnore) {\n sources.push({ prop: signIgnore, renameTo: \"ignore\" })\n this.changes.push({ key: `${name}.signIgnore`, description: `renamed ${name}.signIgnore → ${name}.sign.ignore` })\n }\n\n // A bare `sign: null` should be dropped before we build the options object.\n if (signIsNull) {\n this.removeProp(existingSignProp)\n }\n this.moveInto(platform, \"sign\", sources, [], /* treatNullAsAbsent */ true)\n }\n\n private ruleMacUniversal(platform: any, name: string): void {\n const present = MAC_UNIVERSAL_FIELDS.filter(f => this.getProp(platform, f) != null)\n if (present.length === 0) {\n return\n }\n const sources = present.map(f => {\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.universal.${f}` })\n return { prop: this.getProp(platform, f) }\n })\n const ok = this.moveInto(platform, \"universal\", sources, [])\n if (!ok) {\n this.warnings.push(`${name}.universal already exists but is not an object literal; move ${present.join(\", \")} into it manually.`)\n }\n }\n\n private ruleElectronDownload(root: any): void {\n const ts = this.ts\n const prop = this.getProp(root, \"electronDownload\")\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const old = this.unwrap(prop.initializer)\n if (!ts.isObjectLiteralExpression(old)) {\n this.renameKey(prop, \"electronGet\")\n this.changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet\" })\n return\n }\n\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries: string[] = []\n const dropped: string[] = []\n let mirrorValueText: string | null = null\n let existingMirrorOptions: any = null\n\n for (const p of old.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"mirror\") {\n mirrorValueText = this.valueText(p.initializer, childIndent + this.indentUnit)\n continue\n }\n if (name === \"isVerifyChecksum\") {\n if (p.initializer.kind === ts.SyntaxKind.FalseKeyword) {\n entries.push(\"unsafelyDisableChecksums: true\")\n } else {\n this.warnings.push(\"electronGet: isVerifyChecksum had a non-false value; review electronGet.unsafelyDisableChecksums manually.\")\n }\n continue\n }\n if ((ELECTRON_DOWNLOAD_DROPPED as readonly string[]).includes(name!)) {\n dropped.push(name!)\n continue\n }\n if (name === \"mirrorOptions\") {\n existingMirrorOptions = this.unwrap(p.initializer)\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n\n if (mirrorValueText != null || existingMirrorOptions != null) {\n const moInner: string[] = []\n if (existingMirrorOptions != null && ts.isObjectLiteralExpression(existingMirrorOptions)) {\n for (const p of existingMirrorOptions.properties) {\n moInner.push(this.entryText(p, childIndent + this.indentUnit))\n }\n }\n if (mirrorValueText != null) {\n moInner.push(`mirror: ${mirrorValueText}`)\n }\n entries.push(`mirrorOptions: ${this.objectLiteralTextAt(moInner, childIndent)}`)\n }\n\n if (dropped.length > 0) {\n this.warnings.push(\n `electronGet (formerly electronDownload) dropped [${dropped.join(\", \")}] — these have no equivalent in @electron/get v5. Set a mirror via electronGet.mirrorOptions if needed.`\n )\n }\n\n this.removeProp(prop)\n this.createChild(root, \"electronGet\", entries)\n this.changes.push({\n key: \"electronDownload\",\n description: \"renamed electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\",\n })\n }\n\n // ── Edit primitives ───────────────────────────────────────────────────────\n\n /**\n * Moves `sources` properties into a child object `childKey` of `parent` (creating it when absent).\n * Returns false when the child exists but is not an object literal (caller should warn).\n */\n private moveInto(parent: any, childKey: string, sources: { prop: any; renameTo?: string }[], extraEntries: string[], treatNullAsAbsent = false): boolean {\n const ts = this.ts\n const existingProp = this.getProp(parent, childKey)\n let existingObj: any = null\n if (existingProp != null && ts.isPropertyAssignment(existingProp)) {\n const v = this.unwrap(existingProp.initializer)\n if (ts.isObjectLiteralExpression(v)) {\n existingObj = v\n } else if (!(treatNullAsAbsent && v.kind === ts.SyntaxKind.NullKeyword)) {\n return false\n }\n }\n\n if (existingObj != null) {\n const childIndent = this.propIndentFor(existingObj)\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.insertIntoObject(existingObj, entries)\n return true\n }\n\n const childIndent = this.propIndentFor(parent) + this.indentUnit\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.createChild(parent, childKey, entries)\n return true\n }\n\n /** Prepends `childKey: { entries }` (or `childKey: rawValue`) as the first property of `parent`. */\n private createChild(parent: any, childKey: string, entries: string[], rawValue?: string): void {\n const parentPropIndent = this.propIndentFor(parent)\n const value = rawValue != null ? rawValue : this.objectLiteralTextAt(entries, parentPropIndent)\n const braceEnd = this.start(parent) + 1\n this.insertEdit(braceEnd, `\\n${parentPropIndent}${childKey}: ${value},`)\n }\n\n /** Inserts already-built \"key: value\" entries as the first properties of `objLit`. */\n private insertIntoObject(objLit: any, entries: string[]): void {\n if (entries.length === 0) {\n return\n }\n const propIndent = this.propIndentFor(objLit)\n const braceEnd = this.start(objLit) + 1\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n if (objLit.properties.length > 0) {\n this.insertEdit(braceEnd, body)\n } else {\n const objLineIndent = this.lineIndentAt(this.start(objLit))\n this.insertEdit(braceEnd, body + `\\n${objLineIndent}`)\n }\n }\n\n /** Renders a multi-line object literal whose closing brace aligns to `braceIndent`. */\n private objectLiteralTextAt(entries: string[], braceIndent: string): string {\n if (entries.length === 0) {\n return \"{}\"\n }\n const propIndent = braceIndent + this.indentUnit\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n return `{${body}\\n${braceIndent}}`\n }\n\n private removeProp(prop: any): void {\n if (prop == null) {\n return\n }\n this.replaceRange(prop.pos, this.endWithTrailingComma(prop), \"\")\n }\n\n private renameKey(prop: any, newName: string): void {\n this.replaceRange(this.start(prop.name), prop.name.end, newName)\n }\n\n private replaceValue(valueNode: any, newText: string): void {\n this.replaceRange(this.start(valueNode), valueNode.end, newText)\n }\n\n /** \"key: value\" text for a property, re-indenting a multi-line value to `targetIndent`. */\n private entryText(prop: any, targetIndent: string, renameTo?: string): string {\n if (prop.name == null) {\n // Spread assignment (`...x`) or other nameless member — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n const keyText = renameTo != null ? renameTo : this.text.slice(this.start(prop.name), prop.name.end)\n if (this.ts.isPropertyAssignment(prop)) {\n return `${keyText}: ${this.valueText(prop.initializer, targetIndent)}`\n }\n if (this.ts.isShorthandPropertyAssignment(prop)) {\n return keyText\n }\n // Method / accessor — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n\n /** Source text of a value node, re-indenting continuation lines from its original to `targetIndent`. */\n private valueText(valueNode: any, targetIndent: string): string {\n const raw = this.text.slice(this.start(valueNode), valueNode.end)\n if (!raw.includes(\"\\n\")) {\n return raw\n }\n const fromIndent = this.lineIndentAt(this.start(valueNode))\n return this.reindent(raw, fromIndent, targetIndent)\n }\n\n private mergeArrays(valueNodes: any[]): string {\n const ts = this.ts\n const elems: string[] = []\n for (const v of valueNodes) {\n const node = this.unwrap(v)\n if (ts.isArrayLiteralExpression(node)) {\n for (const el of node.elements) {\n elems.push(this.text.slice(this.start(el), el.end))\n }\n } else {\n elems.push(this.text.slice(this.start(node), node.end))\n }\n }\n return `[${elems.join(\", \")}]`\n }\n\n private negate(valueNode: any): string {\n const ts = this.ts\n if (valueNode.kind === ts.SyntaxKind.TrueKeyword) {\n return \"false\"\n }\n if (valueNode.kind === ts.SyntaxKind.FalseKeyword) {\n return \"true\"\n }\n return `!(${this.text.slice(this.start(valueNode), valueNode.end)})`\n }\n\n // ── Low-level helpers ──────────────────────────────────────────────────────\n\n private start(node: any): number {\n return node.getStart(this.sf)\n }\n\n private getProp(objLit: any, name: string): any | null {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (p.name == null) {\n continue\n }\n let key: string | undefined\n if (ts.isIdentifier(p.name) || ts.isStringLiteral(p.name) || ts.isNumericLiteral(p.name)) {\n key = p.name.text\n } else {\n continue\n }\n if (key === name) {\n return p\n }\n }\n return null\n }\n\n private getObjectProp(objLit: any, name: string): any | null {\n const ts = this.ts\n const prop = this.getProp(objLit, name)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return null\n }\n const v = this.unwrap(prop.initializer)\n return ts.isObjectLiteralExpression(v) ? v : null\n }\n\n private propName(prop: any): string | undefined {\n const ts = this.ts\n if (prop.name != null && (ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name) || ts.isNumericLiteral(prop.name))) {\n return prop.name.text\n }\n return undefined\n }\n\n private stringLiteralValue(prop: any): string | undefined {\n const ts = this.ts\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return undefined\n }\n const v = this.unwrap(prop.initializer)\n return ts.isStringLiteral(v) ? v.text : undefined\n }\n\n private endWithTrailingComma(prop: any): number {\n let i = prop.end\n while (i < this.text.length && (this.text[i] === \" \" || this.text[i] === \"\\t\")) {\n i++\n }\n return this.text[i] === \",\" ? i + 1 : prop.end\n }\n\n private lineIndentAt(pos: number): string {\n let i = pos\n while (i > 0 && this.text[i - 1] !== \"\\n\") {\n i--\n }\n let j = i\n while (j < this.text.length && (this.text[j] === \" \" || this.text[j] === \"\\t\")) {\n j++\n }\n return this.text.slice(i, j)\n }\n\n private detectIndentUnit(root: any): string {\n const braceIndent = this.lineIndentAt(this.start(root))\n for (const p of root.properties) {\n const pi = this.lineIndentAt(this.start(p))\n if (pi.length > braceIndent.length) {\n return pi.slice(braceIndent.length)\n }\n }\n return \" \"\n }\n\n private propIndentFor(objLit: any): string {\n for (const p of objLit.properties) {\n return this.lineIndentAt(this.start(p))\n }\n return this.lineIndentAt(this.start(objLit)) + this.indentUnit\n }\n\n private reindent(text: string, fromIndent: string, toIndent: string): string {\n const delta = toIndent.length - fromIndent.length\n if (delta === 0) {\n return text\n }\n const lines = text.split(\"\\n\")\n return lines\n .map((line, idx) => {\n if (idx === 0) {\n return line\n }\n if (delta > 0) {\n return \" \".repeat(delta) + line\n }\n let removed = 0\n let k = 0\n while (k < line.length && removed < -delta && line[k] === \" \") {\n k++\n removed++\n }\n return line.slice(k)\n })\n .join(\"\\n\")\n }\n\n private replaceRange(start: number, end: number, text: string): void {\n this.edits.push({ start, end, text })\n }\n\n private insertEdit(pos: number, text: string): void {\n this.edits.push({ start: pos, end: pos, text })\n }\n\n apply(): string {\n const edits = [...this.edits].sort((a, b) => a.start - b.start || a.end - b.end)\n let out = \"\"\n let cursor = 0\n for (const e of edits) {\n if (e.start < cursor) {\n throw new Error(`overlapping edits at ${e.start} (cursor ${cursor})`)\n }\n out += this.text.slice(cursor, e.start) + e.text\n cursor = e.end\n }\n out += this.text.slice(cursor)\n return out\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"migrate-schema-programmatic.js","sourceRoot":"","sources":["../../src/cli/migrate-schema-programmatic.ts"],"names":[],"mappings":"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","sourcesContent":["import { createRequire } from \"node:module\"\nimport * as path from \"path\"\nimport { AZURE_KNOWN_FIELDS, ELECTRON_DOWNLOAD_DROPPED, MAC_SIGN_FIELDS, MAC_UNIVERSAL_FIELDS, NSIS_WEB_ADVISORY, SNAP_BASES } from \"./migrate-schema.js\"\nimport type { MigrationChange } from \"./migrate-schema.js\"\n\nconst _require = createRequire(import.meta.url)\n\n// `typescript` is intentionally NOT a dependency of electron-builder — it is loaded lazily (same\n// pattern as js-yaml/json5/toml) and the feature degrades to manual steps when it is unavailable.\n// Types are kept loose (`any`) on purpose so no `typescript` types are required at compile time.\nlet tsModuleCache: any | null | undefined\nexport function loadTypeScript(): any | null {\n if (tsModuleCache !== undefined) {\n return tsModuleCache\n }\n try {\n tsModuleCache = _require(\"typescript\")\n } catch {\n tsModuleCache = null\n }\n return tsModuleCache\n}\n\nexport type ProgrammaticMigrationStatus = \"migrated\" | \"no-op\" | \"unsupported\"\n\nexport interface ProgrammaticMigrationResult {\n /** Rewritten source. Equal to the input when nothing changed or the config is unsupported. */\n readonly code: string\n readonly changes: MigrationChange[]\n readonly warnings: string[]\n /** Informational notices that are not config changes — they never affect `status` or trigger a file write. */\n readonly advisories: string[]\n readonly status: ProgrammaticMigrationStatus\n /** Set when status === \"unsupported\": why the config could not be auto-migrated. */\n readonly unsupportedReason?: string\n}\n\ninterface Edit {\n start: number\n end: number\n text: string\n}\n\n/**\n * Migrates a programmatic JS/TS electron-builder config (the same v26→v27 transforms as\n * {@link migrateConfig}) by surgically rewriting the source text. The TypeScript parser is used only\n * to locate node ranges; everything outside an edited range is preserved byte-for-byte, so comments,\n * imports, functions, and formatting are untouched.\n *\n * Pure: source string in, result out. No file I/O. Returns status \"unsupported\" (with the source\n * unchanged) when typescript is not installed or the config cannot be statically reduced to a single\n * object literal (function that builds the object dynamically, spreads, computed keys, …).\n */\nexport function migrateProgrammaticSource(sourceText: string, fileName: string): ProgrammaticMigrationResult {\n const ts = loadTypeScript()\n if (ts == null) {\n return { code: sourceText, changes: [], warnings: [], advisories: [], status: \"unsupported\", unsupportedReason: \"typescript-not-installed\" }\n }\n\n const scriptKind = scriptKindFor(ts, fileName)\n const sf = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, /* setParentNodes */ true, scriptKind)\n\n const codemod = new ConfigCodemod(ts, sf, sourceText)\n const located = codemod.locateConfigObject()\n if (located.objLit == null) {\n return { code: sourceText, changes: [], warnings: [], advisories: [], status: \"unsupported\", unsupportedReason: located.reason }\n }\n\n codemod.run(located.objLit)\n if (codemod.edits.length === 0) {\n return { code: sourceText, changes: codemod.changes, warnings: codemod.warnings, advisories: codemod.advisories, status: \"no-op\" }\n }\n return { code: codemod.apply(), changes: codemod.changes, warnings: codemod.warnings, advisories: codemod.advisories, status: \"migrated\" }\n}\n\nfunction scriptKindFor(ts: any, fileName: string): any {\n const ext = path.extname(fileName).toLowerCase()\n switch (ext) {\n case \".ts\":\n case \".cts\":\n case \".mts\":\n return ts.ScriptKind.TS\n case \".tsx\":\n return ts.ScriptKind.TSX\n case \".jsx\":\n return ts.ScriptKind.JSX\n default:\n return ts.ScriptKind.JS\n }\n}\n\nclass ConfigCodemod {\n readonly edits: Edit[] = []\n readonly changes: MigrationChange[] = []\n readonly warnings: string[] = []\n readonly advisories: string[] = []\n private indentUnit = \" \"\n\n constructor(\n private readonly ts: any,\n private readonly sf: any,\n private readonly text: string\n ) {}\n\n // ── Locate the config object literal ──────────────────────────────────────\n\n locateConfigObject(): { objLit?: any; reason?: string } {\n const ts = this.ts\n const candidates: any[] = []\n\n for (const stmt of this.sf.statements) {\n if (ts.isExportAssignment(stmt)) {\n // `export default <expr>` and `export = <expr>`\n candidates.push(stmt.expression)\n } else if (ts.isExpressionStatement(stmt) && ts.isBinaryExpression(stmt.expression) && stmt.expression.operatorToken.kind === ts.SyntaxKind.EqualsToken) {\n const lhs = stmt.expression.left\n if (this.isModuleExportsTarget(lhs)) {\n candidates.push(stmt.expression.right)\n }\n } else if (ts.isFunctionDeclaration(stmt) && this.hasDefaultExport(stmt)) {\n // `export default function () { return {...} }`\n const lit = this.literalFromFunctionLike(stmt)\n if (lit != null) {\n candidates.push(lit)\n }\n }\n }\n\n // Inline `build({ config: {...} })` form (programmatic-usage.md). Search the whole tree.\n this.forEachDescendant(this.sf, node => {\n const cfg = this.configArgOfBuildCall(node)\n if (cfg != null) {\n candidates.push(cfg)\n }\n })\n\n let reason = \"no electron-builder config object literal found (expected a default/module.exports object export or a build({ config }) call)\"\n for (const candidate of candidates) {\n const resolved = this.resolveToObjectLiteral(candidate, 0)\n if (resolved.objLit != null) {\n return { objLit: resolved.objLit }\n }\n if (resolved.reason != null) {\n reason = resolved.reason\n }\n }\n return { reason }\n }\n\n private isModuleExportsTarget(lhs: any): boolean {\n const ts = this.ts\n if (!ts.isPropertyAccessExpression(lhs)) {\n return false\n }\n // module.exports = ... OR exports.default = ...\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"module\" && lhs.name.text === \"exports\") {\n return true\n }\n if (ts.isIdentifier(lhs.expression) && lhs.expression.text === \"exports\" && lhs.name.text === \"default\") {\n return true\n }\n return false\n }\n\n private hasDefaultExport(node: any): boolean {\n const ts = this.ts\n const mods = node.modifiers\n if (mods == null) {\n return false\n }\n let hasExport = false\n let hasDefault = false\n for (const m of mods) {\n if (m.kind === ts.SyntaxKind.ExportKeyword) {\n hasExport = true\n }\n if (m.kind === ts.SyntaxKind.DefaultKeyword) {\n hasDefault = true\n }\n }\n return hasExport && hasDefault\n }\n\n private configArgOfBuildCall(node: any): any | null {\n const ts = this.ts\n if (!ts.isCallExpression(node)) {\n return null\n }\n const callee = node.expression\n const isBuild = (ts.isIdentifier(callee) && callee.text === \"build\") || (ts.isPropertyAccessExpression(callee) && callee.name.text === \"build\")\n if (!isBuild || node.arguments.length === 0) {\n return null\n }\n const arg0 = node.arguments[0]\n if (!ts.isObjectLiteralExpression(arg0)) {\n return null\n }\n const configProp = this.getProp(arg0, \"config\")\n return configProp != null && ts.isPropertyAssignment(configProp) ? configProp.initializer : null\n }\n\n private resolveToObjectLiteral(expr: any, depth: number): { objLit?: any; reason?: string } {\n const ts = this.ts\n if (depth > 6) {\n return { reason: \"config export could not be resolved (too many indirections)\" }\n }\n const node = this.unwrap(expr)\n if (ts.isObjectLiteralExpression(node)) {\n if (this.hasSpreadOrComputed(node)) {\n return { reason: \"config object uses a spread (`...`) or computed key, which cannot be migrated automatically\" }\n }\n return { objLit: node }\n }\n if (ts.isIdentifier(node)) {\n const init = this.findVariableInitializer(node.text)\n if (init == null) {\n return { reason: `config export references \"${node.text}\", which is not a local object literal` }\n }\n return this.resolveToObjectLiteral(init, depth + 1)\n }\n if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {\n const lit = this.literalFromFunctionLike(node)\n if (lit == null) {\n return { reason: \"config is a function that does not return a single object literal — migrate it manually\" }\n }\n return this.resolveToObjectLiteral(lit, depth + 1)\n }\n return { reason: \"config export is not an object literal — migrate it manually\" }\n }\n\n /** Unwraps parentheses and type-only wrappers (`as`, `satisfies`, `!`, `<T>x`) to the inner expression. */\n private unwrap(node: any): any {\n const ts = this.ts\n let n = node\n for (;;) {\n if (\n ts.isParenthesizedExpression(n) ||\n ts.isAsExpression(n) ||\n (ts.isSatisfiesExpression && ts.isSatisfiesExpression(n)) ||\n ts.isNonNullExpression(n) ||\n ts.isTypeAssertionExpression?.(n)\n ) {\n n = n.expression\n } else {\n return n\n }\n }\n }\n\n private hasSpreadOrComputed(objLit: any): boolean {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (ts.isSpreadAssignment(p)) {\n return true\n }\n if (p.name != null && ts.isComputedPropertyName(p.name)) {\n return true\n }\n }\n return false\n }\n\n private findVariableInitializer(name: string): any | null {\n const ts = this.ts\n for (const stmt of this.sf.statements) {\n if (!ts.isVariableStatement(stmt)) {\n continue\n }\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text === name && decl.initializer != null) {\n return decl.initializer\n }\n }\n }\n return null\n }\n\n /** Returns the single object-literal expression a function-like trivially yields, or null. */\n private literalFromFunctionLike(fn: any): any | null {\n const ts = this.ts\n const body = fn.body\n if (body == null) {\n return null\n }\n if (!ts.isBlock(body)) {\n // arrow expression body: `() => ({...})` / `() => obj`\n return body\n }\n const returns: any[] = []\n this.collectReturns(body, returns)\n if (returns.length !== 1 || returns[0].expression == null) {\n return null\n }\n return returns[0].expression\n }\n\n private collectReturns(node: any, out: any[]): void {\n const ts = this.ts\n const visit = (n: any): void => {\n // Don't descend into nested functions — their returns are not the config's.\n if (ts.isFunctionDeclaration(n) || ts.isFunctionExpression(n) || ts.isArrowFunction(n)) {\n return\n }\n if (ts.isReturnStatement(n)) {\n out.push(n)\n }\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n private forEachDescendant(node: any, cb: (n: any) => void): void {\n const visit = (n: any): void => {\n cb(n)\n n.forEachChild(visit)\n }\n node.forEachChild(visit)\n }\n\n // ── Run all rules ─────────────────────────────────────────────────────────\n\n run(root: any): void {\n this.indentUnit = this.detectIndentUnit(root)\n this.ruleRemoveKeys(root, [\"electronCompile\"], \"removed electronCompile (unsupported since v27; migrate to electron-vite, esbuild, or webpack)\")\n this.ruleRemoveKeys(root, [\"framework\", \"nodeVersion\", \"launchUiVersion\"], key => `removed ${key} (Electron is the only supported framework in v27)`)\n const disableDefaultIgnoredFilesDesc = \"removed disableDefaultIgnoredFiles (in v27, include a default-excluded file via an explicit `files` glob, e.g. `**/*.obj`)\"\n this.ruleRemoveKeys(root, [\"disableDefaultIgnoredFiles\"], disableDefaultIgnoredFilesDesc)\n // mas/masDev are MacConfiguration-derived, so they accept the (now-removed) key too.\n for (const platform of [\"mac\", \"mas\", \"masDev\", \"win\", \"linux\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.ruleRemoveKeys(p, [\"disableDefaultIgnoredFiles\"], disableDefaultIgnoredFilesDesc)\n }\n }\n this.ruleNativeModules(root)\n this.ruleAsar(root)\n this.ruleAppImageSystemIntegration(root)\n this.rulePublish(root, \"publish\")\n for (const platform of [\"mac\", \"win\", \"linux\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.rulePublish(p, \"publish\", platform + \".\")\n }\n }\n this.ruleSnap(root)\n this.ruleHelperBundleId(root)\n this.ruleSquirrelNoMsi(root)\n this.ruleWinSign(root)\n for (const platform of [\"mac\", \"mas\", \"masDev\"]) {\n const p = this.getObjectProp(root, platform)\n if (p != null) {\n this.ruleMacSigning(p, platform)\n this.ruleMacUniversal(p, platform)\n }\n }\n this.ruleElectronDownload(root)\n this.ruleNsisWebAdvisory(root)\n }\n\n // ── Rules ───────────────────────────────────────────────────────────────\n\n // Advisory only — adds no edit, so an nsis-web-only config stays a \"no-op\" and is never rewritten.\n private ruleNsisWebAdvisory(root: any): void {\n const ts = this.ts\n const win = this.getObjectProp(root, \"win\")\n const winTarget = win != null ? this.getProp(win, \"target\") : null\n const globalTarget = this.getProp(root, \"target\")\n for (const prop of [winTarget, globalTarget]) {\n if (prop != null && ts.isPropertyAssignment(prop) && this.hasNsisWebInTarget(this.unwrap(prop.initializer))) {\n this.advisories.push(NSIS_WEB_ADVISORY)\n return\n }\n }\n }\n\n private hasNsisWebInTarget(value: any): boolean {\n const ts = this.ts\n if (value == null) {\n return false\n }\n if (ts.isStringLiteral(value)) {\n return value.text === \"nsis-web\"\n }\n if (ts.isArrayLiteralExpression(value)) {\n return value.elements.some((el: any) => this.hasNsisWebInTarget(this.unwrap(el)))\n }\n if (ts.isObjectLiteralExpression(value)) {\n const targetProp = this.getProp(value, \"target\")\n if (targetProp != null && ts.isPropertyAssignment(targetProp)) {\n const inner = this.unwrap(targetProp.initializer)\n return ts.isStringLiteral(inner) && inner.text === \"nsis-web\"\n }\n }\n return false\n }\n\n private ruleRemoveKeys(obj: any, keys: string[], description: string | ((key: string) => string)): void {\n for (const key of keys) {\n const prop = this.getProp(obj, key)\n if (prop != null) {\n this.removeProp(prop)\n this.changes.push({ key, description: typeof description === \"function\" ? description(key) : description })\n }\n }\n }\n\n private ruleNativeModules(root: any): void {\n const sources: { prop: any; renameTo?: string }[] = []\n const extraEntries: string[] = []\n\n for (const key of [\"buildDependenciesFromSource\", \"nodeGypRebuild\", \"npmRebuild\"]) {\n const prop = this.getProp(root, key)\n if (prop != null) {\n sources.push({ prop })\n this.changes.push({ key, description: `moved ${key} → nativeModules.${key}` })\n }\n }\n\n const nativeRebuilder = this.getProp(root, \"nativeRebuilder\")\n if (nativeRebuilder != null) {\n sources.push({ prop: nativeRebuilder, renameTo: \"rebuildMode\" })\n this.changes.push({ key: \"nativeRebuilder\", description: \"renamed nativeRebuilder → nativeModules.rebuildMode\" })\n }\n\n const npmSkip = this.getProp(root, \"npmSkipBuildFromSource\")\n if (npmSkip != null && this.ts.isPropertyAssignment(npmSkip)) {\n const hasBds = this.getProp(root, \"buildDependenciesFromSource\") != null\n if (!hasBds) {\n extraEntries.push(`buildDependenciesFromSource: ${this.negate(npmSkip.initializer)}`)\n }\n this.removeProp(npmSkip)\n this.changes.push({ key: \"npmSkipBuildFromSource\", description: \"renamed npmSkipBuildFromSource → buildDependenciesFromSource (then grouped under nativeModules)\" })\n }\n\n if (sources.length === 0 && extraEntries.length === 0) {\n return\n }\n const ok = this.moveInto(root, \"nativeModules\", sources, extraEntries)\n if (!ok) {\n this.warnings.push(\"nativeModules already exists but is not an object literal; move buildDependenciesFromSource/nodeGypRebuild/npmRebuild/rebuildMode into it manually.\")\n }\n }\n\n private ruleAsar(root: any): void {\n const ts = this.ts\n const asarProp = this.getProp(root, \"asar\")\n const asarVal = asarProp != null && ts.isPropertyAssignment(asarProp) ? this.unwrap(asarProp.initializer) : null\n const asarIsFalse = asarVal != null && asarVal.kind === ts.SyntaxKind.FalseKeyword\n const asarIsTrue = asarVal != null && asarVal.kind === ts.SyntaxKind.TrueKeyword\n const asarIsObject = asarVal != null && ts.isObjectLiteralExpression(asarVal)\n\n if (asarIsFalse) {\n if (this.getProp(root, \"asar-unpack\") != null || this.getProp(root, \"asar-unpack-dir\") != null || this.getProp(root, \"asarUnpack\") != null) {\n this.warnings.push(\"asar is false but asar-unpack/asarUnpack is also set. asar: false disables packaging entirely; remove the unpack keys or enable asar manually.\")\n }\n return\n }\n\n // Collect unpack sources (root-level hyphenated/camel + nested asar.unpackDir).\n const unpackSources: any[] = []\n const collectUnpack = (key: string, descKey: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n unpackSources.push(prop.initializer)\n this.removeProp(prop)\n this.changes.push({ key: descKey, description: desc })\n }\n }\n collectUnpack(\"asar-unpack\", \"asar-unpack\", \"renamed asar-unpack → asar.unpack\")\n collectUnpack(\"asar-unpack-dir\", \"asar-unpack-dir\", \"renamed asar-unpack-dir → asar.unpack\")\n collectUnpack(\"asarUnpack\", \"asarUnpack\", \"moved asarUnpack → asar.unpack\")\n\n if (asarIsObject) {\n const nestedUnpackDir = this.getProp(asarVal, \"unpackDir\")\n if (nestedUnpackDir != null && ts.isPropertyAssignment(nestedUnpackDir)) {\n unpackSources.push(nestedUnpackDir.initializer)\n this.removeProp(nestedUnpackDir)\n this.changes.push({ key: \"asar.unpackDir\", description: \"moved asar.unpackDir → asar.unpack\" })\n }\n }\n\n const childRenames: { renameTo: string; value: any }[] = []\n const collectChild = (key: string, renameTo: string, desc: string): void => {\n const prop = this.getProp(root, key)\n if (prop != null && ts.isPropertyAssignment(prop)) {\n childRenames.push({ renameTo, value: prop.initializer })\n this.removeProp(prop)\n this.changes.push({ key, description: desc })\n }\n }\n collectChild(\"disableSanityCheckAsar\", \"disableSanityCheck\", \"moved disableSanityCheckAsar → asar.disableSanityCheck\")\n collectChild(\"disableAsarIntegrity\", \"disableIntegrity\", \"moved disableAsarIntegrity → asar.disableIntegrity\")\n\n if (unpackSources.length === 0 && childRenames.length === 0 && !asarIsTrue) {\n return\n }\n\n const buildEntries = (childIndent: string): string[] => {\n const out: string[] = []\n if (unpackSources.length === 1) {\n out.push(`unpack: ${this.valueText(unpackSources[0], childIndent)}`)\n } else if (unpackSources.length > 1) {\n out.push(`unpack: ${this.mergeArrays(unpackSources)}`)\n }\n for (const c of childRenames) {\n out.push(`${c.renameTo}: ${this.valueText(c.value, childIndent)}`)\n }\n return out\n }\n\n if (asarIsObject) {\n this.insertIntoObject(asarVal, buildEntries(this.propIndentFor(asarVal)))\n return\n }\n\n if (asarIsTrue) {\n const braceIndent = this.lineIndentAt(this.start(asarProp.initializer))\n const entries = buildEntries(braceIndent + this.indentUnit)\n if (entries.length === 0) {\n this.removeProp(asarProp)\n } else {\n this.replaceValue(asarProp.initializer, this.objectLiteralTextAt(entries, braceIndent))\n }\n this.changes.push({ key: \"asar\", description: \"replaced asar: true with asar object (true is no longer a valid value)\" })\n return\n }\n\n // No asar prop yet — create one on root.\n this.createChild(root, \"asar\", buildEntries(this.propIndentFor(root) + this.indentUnit))\n }\n\n private ruleAppImageSystemIntegration(root: any): void {\n const appImage = this.getObjectProp(root, \"appImage\")\n if (appImage == null) {\n return\n }\n const si = this.getProp(appImage, \"systemIntegration\")\n if (si == null) {\n return\n }\n const appImageProp = this.getProp(root, \"appImage\")\n if (appImage.properties.length === 1) {\n this.removeProp(appImageProp)\n } else {\n this.removeProp(si)\n }\n this.changes.push({ key: \"appImage.systemIntegration\", description: \"removed appImage.systemIntegration (handled automatically by AppImageLauncher in v27)\" })\n }\n\n private rulePublish(parent: any, key: string, prefix = \"\"): void {\n const ts = this.ts\n const prop = this.getProp(parent, key)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const value = this.unwrap(prop.initializer)\n const entries: any[] = ts.isArrayLiteralExpression(value) ? value.elements : [value]\n let changed = false\n for (const entry of entries) {\n const obj = this.unwrap(entry)\n if (!ts.isObjectLiteralExpression(obj)) {\n continue\n }\n const provider = this.stringLiteralValue(this.getProp(obj, \"provider\"))\n const vPrefixed = this.getProp(obj, \"vPrefixedTagName\")\n if (vPrefixed == null || !ts.isPropertyAssignment(vPrefixed)) {\n continue\n }\n if (provider === \"github\") {\n const isFalse = vPrefixed.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.replaceRange(this.start(vPrefixed), vPrefixed.end, `tagNamePrefix: ${isFalse ? '\"\"' : '\"v\"'}`)\n changed = true\n }\n // GitLab keeps vPrefixedTagName in v27 (no tagNamePrefix equivalent) — leave it untouched.\n }\n if (changed) {\n this.changes.push({\n key: `${prefix}${key}[].vPrefixedTagName`,\n description: \"replaced vPrefixedTagName with tagNamePrefix on GitHub publish entries\",\n })\n }\n }\n\n private ruleSnap(root: any): void {\n const ts = this.ts\n const snapProp = this.getProp(root, \"snap\")\n if (snapProp == null || !ts.isPropertyAssignment(snapProp)) {\n return\n }\n const snap = this.unwrap(snapProp.initializer)\n if (!ts.isObjectLiteralExpression(snap)) {\n this.removeProp(snapProp)\n this.changes.push({ key: \"snap\", description: \"removed empty snap config (use snapcraft in v27)\" })\n return\n }\n\n const baseProp = this.getProp(snap, \"base\")\n let base = this.stringLiteralValue(baseProp)\n const restProps = snap.properties.filter((p: any) => p !== baseProp)\n\n if (base === \"custom\") {\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries = ['base: \"custom\"', ...restProps.map((p: any) => this.entryText(p, childIndent))]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: \"moved snap (base: custom) → snapcraft verbatim\" })\n return\n }\n\n let assumed = false\n if (base == null || !SNAP_BASES.has(base)) {\n if (base != null) {\n this.warnings.push(`snap config had an unrecognized base \"${base}\"; assumed \"core20\". Verify the snapcraft.base value (core18/core20/core22/core24/custom).`)\n } else {\n this.warnings.push('snap config had no \"base\"; assumed \"core20\" for snapcraft. Verify and adjust the base if needed (core18/core20/core22/core24).')\n }\n base = \"core20\"\n assumed = true\n }\n\n const baseChildIndent = this.propIndentFor(root) + this.indentUnit + this.indentUnit\n const nestedEntries = restProps.map((p: any) => this.entryText(p, baseChildIndent))\n const snapcraftChildIndent = this.propIndentFor(root) + this.indentUnit\n const nestedObject = nestedEntries.length > 0 ? this.objectLiteralTextAt(nestedEntries, snapcraftChildIndent) : \"{}\"\n const entries = [`base: \"${base}\"`, `${base}: ${nestedObject}`]\n this.removeProp(snapProp)\n this.createChild(root, \"snapcraft\", entries)\n this.changes.push({ key: \"snap\", description: `moved snap → snapcraft.${base}${assumed ? \" (base defaulted to core20)\" : \"\"}` })\n }\n\n private ruleHelperBundleId(root: any): void {\n const prop = this.getProp(root, \"helper-bundle-id\")\n if (prop == null || !this.ts.isPropertyAssignment(prop)) {\n return\n }\n const mac = this.getObjectProp(root, \"mac\")\n if (mac != null && this.getProp(mac, \"helperBundleId\") != null) {\n this.removeProp(prop)\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n return\n }\n const ok = this.moveInto(root, \"mac\", [{ prop, renameTo: \"helperBundleId\" }], [])\n if (ok) {\n this.changes.push({ key: \"helper-bundle-id\", description: \"moved helper-bundle-id → mac.helperBundleId\" })\n } else {\n this.warnings.push(\"mac already exists but is not an object literal; move helper-bundle-id → mac.helperBundleId manually.\")\n }\n }\n\n private ruleSquirrelNoMsi(root: any): void {\n const ts = this.ts\n const sq = this.getObjectProp(root, \"squirrelWindows\")\n if (sq == null) {\n return\n }\n const noMsi = this.getProp(sq, \"noMsi\")\n if (noMsi == null || !ts.isPropertyAssignment(noMsi)) {\n return\n }\n if (this.getProp(sq, \"msi\") != null) {\n this.removeProp(noMsi)\n } else {\n this.replaceRange(this.start(noMsi), noMsi.end, `msi: ${this.negate(noMsi.initializer)}`)\n }\n this.changes.push({ key: \"squirrelWindows.noMsi\", description: \"replaced squirrelWindows.noMsi → squirrelWindows.msi (inverted boolean)\" })\n }\n\n private ruleWinSign(root: any): void {\n const ts = this.ts\n const win = this.getObjectProp(root, \"win\")\n if (win == null) {\n return\n }\n\n let signSet = this.getProp(win, \"sign\") != null\n\n const signAndEdit = this.getProp(win, \"signAndEditExecutable\")\n if (signAndEdit != null && ts.isPropertyAssignment(signAndEdit)) {\n const isFalse = signAndEdit.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signAndEdit)\n if (isFalse) {\n this.warnings.push(\n \"win.signAndEditExecutable: false was used to skip both resource editing and signing. In v27, resource editing always runs. To skip signing only, set win.sign: false. There is no v27 equivalent that also skips resource editing — apply resources manually if needed.\"\n )\n } else {\n this.changes.push({ key: \"win.signAndEditExecutable\", description: \"removed win.signAndEditExecutable (resource editing always runs in v27; was the default)\" })\n }\n }\n\n const signExe = this.getProp(win, \"signExecutable\")\n if (signExe != null && ts.isPropertyAssignment(signExe)) {\n const isFalse = signExe.initializer.kind === ts.SyntaxKind.FalseKeyword\n this.removeProp(signExe)\n if (isFalse && !signSet) {\n this.createChild(win, \"sign\", [], \"false\")\n signSet = true\n this.changes.push({ key: \"win.signExecutable\", description: \"replaced win.signExecutable: false with win.sign: false (disables signing; resource editing still runs)\" })\n } else {\n this.changes.push({ key: \"win.signExecutable\", description: \"removed win.signExecutable (signing is enabled by default when credentials are available)\" })\n }\n }\n\n const azure = this.getObjectProp(win, \"azureSignOptions\")\n const signtool = this.getObjectProp(win, \"signtoolOptions\")\n const hasAzure = azure != null\n const hasSigntool = signtool != null\n if (!hasAzure && !hasSigntool) {\n return\n }\n\n const originalSign = this.getProp(win, \"sign\")\n const signAlreadySet = signSet || (originalSign != null && ts.isPropertyAssignment(originalSign) && originalSign.initializer.kind !== ts.SyntaxKind.NullKeyword)\n if (signAlreadySet) {\n this.warnings.push(\n `win.sign is already set alongside ${hasAzure ? \"win.azureSignOptions\" : \"win.signtoolOptions\"}. Remove the legacy key manually after verifying win.sign is correct.`\n )\n return\n }\n\n if (hasAzure && hasSigntool) {\n this.warnings.push(\n \"Both win.azureSignOptions and win.signtoolOptions are set. win.signtoolOptions will be dropped and win.azureSignOptions will be migrated to win.sign: { type: 'azure', … } (Azure took priority in v26). Verify the migrated win.sign block is correct for your project.\"\n )\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n }\n\n if (hasAzure) {\n this.buildWinAzureSign(win, azure)\n this.removeProp(this.getProp(win, \"azureSignOptions\"))\n this.changes.push({ key: \"win.azureSignOptions\", description: 'moved win.azureSignOptions → win.sign: { type: \"azure\", … }' })\n } else {\n this.buildWinSigntoolSign(win, signtool)\n this.removeProp(this.getProp(win, \"signtoolOptions\"))\n this.changes.push({ key: \"win.signtoolOptions\", description: 'moved win.signtoolOptions → win.sign: { type: \"signtool\", … }' })\n }\n }\n\n private buildWinSigntoolSign(win: any, signtool: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const entries: string[] = []\n for (const p of signtool.properties) {\n if (ts.isPropertyAssignment(p) && this.propName(p) === \"type\") {\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n entries.push('type: \"signtool\"')\n this.createChild(win, \"sign\", entries)\n }\n\n private buildWinAzureSign(win: any, azure: any): void {\n const ts = this.ts\n const childIndent = this.propIndentFor(win) + this.indentUnit\n const metaIndent = childIndent + this.indentUnit\n\n const knownEntries: string[] = []\n const metaEntries: string[] = []\n const extraKeys: string[] = []\n let existingMeta: any = null\n\n for (const p of azure.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"type\") {\n continue\n }\n if (name === \"additionalMetadata\") {\n existingMeta = this.unwrap(p.initializer)\n continue\n }\n const isString = ts.isStringLiteral(p.initializer)\n if (AZURE_KNOWN_FIELDS.has(name!)) {\n knownEntries.push(this.entryText(p, childIndent))\n } else if (isString) {\n metaEntries.push(this.entryText(p, metaIndent))\n extraKeys.push(name!)\n } else {\n // Unknown non-string field — keep verbatim so nothing is silently dropped.\n knownEntries.push(this.entryText(p, childIndent))\n }\n }\n\n if (existingMeta != null && ts.isObjectLiteralExpression(existingMeta)) {\n for (const p of existingMeta.properties) {\n metaEntries.push(this.entryText(p, metaIndent))\n }\n }\n\n const signEntries = [...knownEntries]\n if (metaEntries.length > 0) {\n signEntries.push(`additionalMetadata: ${this.objectLiteralTextAt(metaEntries, childIndent)}`)\n this.changes.push({ key: \"win.azureSignOptions\", description: `moved extra keys [${extraKeys.join(\", \")}] into win.sign.additionalMetadata` })\n }\n signEntries.push('type: \"azure\"')\n this.createChild(win, \"sign\", signEntries)\n }\n\n private ruleMacSigning(platform: any, name: string): void {\n const ts = this.ts\n const present = MAC_SIGN_FIELDS.filter(f => this.getProp(platform, f) != null)\n const signIgnore = this.getProp(platform, \"signIgnore\")\n const hasSignIgnore = signIgnore != null\n const existingSignProp = this.getProp(platform, \"sign\")\n const existingSign = existingSignProp != null && ts.isPropertyAssignment(existingSignProp) ? this.unwrap(existingSignProp.initializer) : null\n const signIsCustom =\n existingSign != null && (ts.isStringLiteral(existingSign) || ts.isArrowFunction(existingSign) || ts.isFunctionExpression(existingSign) || ts.isIdentifier(existingSign))\n const signIsNull = existingSign != null && existingSign.kind === ts.SyntaxKind.NullKeyword\n\n if (present.length === 0 && !hasSignIgnore) {\n if (signIsNull) {\n this.removeProp(existingSignProp)\n this.changes.push({ key: `${name}.sign`, description: `removed ${name}.sign: null (v26 \"no custom signer\" = v27 default; sign: null now means skip signing)` })\n }\n return\n }\n\n if (signIsCustom) {\n const fields = [...present, ...(hasSignIgnore ? [\"signIgnore\"] : [])].join(\", \")\n this.warnings.push(\n `${name}.sign is a custom signing function/path, which cannot hold options. Move [${fields}] into an ElectronSignOptions object manually, or keep the custom signer and drop them.`\n )\n return\n }\n\n const sources: { prop: any; renameTo?: string }[] = []\n for (const f of present) {\n const prop = this.getProp(platform, f)\n sources.push({ prop })\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.sign.${f}` })\n }\n if (hasSignIgnore) {\n sources.push({ prop: signIgnore, renameTo: \"ignore\" })\n this.changes.push({ key: `${name}.signIgnore`, description: `renamed ${name}.signIgnore → ${name}.sign.ignore` })\n }\n\n // A bare `sign: null` should be dropped before we build the options object.\n if (signIsNull) {\n this.removeProp(existingSignProp)\n }\n this.moveInto(platform, \"sign\", sources, [], /* treatNullAsAbsent */ true)\n }\n\n private ruleMacUniversal(platform: any, name: string): void {\n const present = MAC_UNIVERSAL_FIELDS.filter(f => this.getProp(platform, f) != null)\n if (present.length === 0) {\n return\n }\n const sources = present.map(f => {\n this.changes.push({ key: `${name}.${f}`, description: `moved ${name}.${f} → ${name}.universal.${f}` })\n return { prop: this.getProp(platform, f) }\n })\n const ok = this.moveInto(platform, \"universal\", sources, [])\n if (!ok) {\n this.warnings.push(`${name}.universal already exists but is not an object literal; move ${present.join(\", \")} into it manually.`)\n }\n }\n\n private ruleElectronDownload(root: any): void {\n const ts = this.ts\n const prop = this.getProp(root, \"electronDownload\")\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return\n }\n const old = this.unwrap(prop.initializer)\n if (!ts.isObjectLiteralExpression(old)) {\n this.renameKey(prop, \"electronGet\")\n this.changes.push({ key: \"electronDownload\", description: \"renamed electronDownload → electronGet\" })\n return\n }\n\n const childIndent = this.propIndentFor(root) + this.indentUnit\n const entries: string[] = []\n const dropped: string[] = []\n let mirrorValueText: string | null = null\n let existingMirrorOptions: any = null\n\n for (const p of old.properties) {\n if (!ts.isPropertyAssignment(p)) {\n continue\n }\n const name = this.propName(p)\n if (name === \"mirror\") {\n mirrorValueText = this.valueText(p.initializer, childIndent + this.indentUnit)\n continue\n }\n if (name === \"isVerifyChecksum\") {\n if (p.initializer.kind === ts.SyntaxKind.FalseKeyword) {\n entries.push(\"unsafelyDisableChecksums: true\")\n } else {\n this.warnings.push(\"electronGet: isVerifyChecksum had a non-false value; review electronGet.unsafelyDisableChecksums manually.\")\n }\n continue\n }\n if ((ELECTRON_DOWNLOAD_DROPPED as readonly string[]).includes(name!)) {\n dropped.push(name!)\n continue\n }\n if (name === \"mirrorOptions\") {\n existingMirrorOptions = this.unwrap(p.initializer)\n continue\n }\n entries.push(this.entryText(p, childIndent))\n }\n\n if (mirrorValueText != null || existingMirrorOptions != null) {\n const moInner: string[] = []\n if (existingMirrorOptions != null && ts.isObjectLiteralExpression(existingMirrorOptions)) {\n for (const p of existingMirrorOptions.properties) {\n moInner.push(this.entryText(p, childIndent + this.indentUnit))\n }\n }\n if (mirrorValueText != null) {\n moInner.push(`mirror: ${mirrorValueText}`)\n }\n entries.push(`mirrorOptions: ${this.objectLiteralTextAt(moInner, childIndent)}`)\n }\n\n if (dropped.length > 0) {\n this.warnings.push(\n `electronGet (formerly electronDownload) dropped [${dropped.join(\", \")}] — these have no equivalent in @electron/get v5. Set a mirror via electronGet.mirrorOptions if needed.`\n )\n }\n\n this.removeProp(prop)\n this.createChild(root, \"electronGet\", entries)\n this.changes.push({\n key: \"electronDownload\",\n description: \"renamed electronDownload → electronGet (mirror → mirrorOptions.mirror; isVerifyChecksum → unsafelyDisableChecksums)\",\n })\n }\n\n // ── Edit primitives ───────────────────────────────────────────────────────\n\n /**\n * Moves `sources` properties into a child object `childKey` of `parent` (creating it when absent).\n * Returns false when the child exists but is not an object literal (caller should warn).\n */\n private moveInto(parent: any, childKey: string, sources: { prop: any; renameTo?: string }[], extraEntries: string[], treatNullAsAbsent = false): boolean {\n const ts = this.ts\n const existingProp = this.getProp(parent, childKey)\n let existingObj: any = null\n if (existingProp != null && ts.isPropertyAssignment(existingProp)) {\n const v = this.unwrap(existingProp.initializer)\n if (ts.isObjectLiteralExpression(v)) {\n existingObj = v\n } else if (!(treatNullAsAbsent && v.kind === ts.SyntaxKind.NullKeyword)) {\n return false\n }\n }\n\n if (existingObj != null) {\n const childIndent = this.propIndentFor(existingObj)\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.insertIntoObject(existingObj, entries)\n return true\n }\n\n const childIndent = this.propIndentFor(parent) + this.indentUnit\n const entries = sources.map(s => this.entryText(s.prop, childIndent, s.renameTo)).concat(extraEntries)\n for (const s of sources) {\n this.removeProp(s.prop)\n }\n this.createChild(parent, childKey, entries)\n return true\n }\n\n /** Prepends `childKey: { entries }` (or `childKey: rawValue`) as the first property of `parent`. */\n private createChild(parent: any, childKey: string, entries: string[], rawValue?: string): void {\n const parentPropIndent = this.propIndentFor(parent)\n const value = rawValue != null ? rawValue : this.objectLiteralTextAt(entries, parentPropIndent)\n const braceEnd = this.start(parent) + 1\n this.insertEdit(braceEnd, `\\n${parentPropIndent}${childKey}: ${value},`)\n }\n\n /** Inserts already-built \"key: value\" entries as the first properties of `objLit`. */\n private insertIntoObject(objLit: any, entries: string[]): void {\n if (entries.length === 0) {\n return\n }\n const propIndent = this.propIndentFor(objLit)\n const braceEnd = this.start(objLit) + 1\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n if (objLit.properties.length > 0) {\n this.insertEdit(braceEnd, body)\n } else {\n const objLineIndent = this.lineIndentAt(this.start(objLit))\n this.insertEdit(braceEnd, body + `\\n${objLineIndent}`)\n }\n }\n\n /** Renders a multi-line object literal whose closing brace aligns to `braceIndent`. */\n private objectLiteralTextAt(entries: string[], braceIndent: string): string {\n if (entries.length === 0) {\n return \"{}\"\n }\n const propIndent = braceIndent + this.indentUnit\n const body = entries.map(e => `\\n${propIndent}${e},`).join(\"\")\n return `{${body}\\n${braceIndent}}`\n }\n\n private removeProp(prop: any): void {\n if (prop == null) {\n return\n }\n this.replaceRange(prop.pos, this.endWithTrailingComma(prop), \"\")\n }\n\n private renameKey(prop: any, newName: string): void {\n this.replaceRange(this.start(prop.name), prop.name.end, newName)\n }\n\n private replaceValue(valueNode: any, newText: string): void {\n this.replaceRange(this.start(valueNode), valueNode.end, newText)\n }\n\n /** \"key: value\" text for a property, re-indenting a multi-line value to `targetIndent`. */\n private entryText(prop: any, targetIndent: string, renameTo?: string): string {\n if (prop.name == null) {\n // Spread assignment (`...x`) or other nameless member — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n const keyText = renameTo != null ? renameTo : this.text.slice(this.start(prop.name), prop.name.end)\n if (this.ts.isPropertyAssignment(prop)) {\n return `${keyText}: ${this.valueText(prop.initializer, targetIndent)}`\n }\n if (this.ts.isShorthandPropertyAssignment(prop)) {\n return keyText\n }\n // Method / accessor — capture verbatim, re-indented.\n return this.reindent(this.text.slice(this.start(prop), prop.end), this.lineIndentAt(this.start(prop)), targetIndent)\n }\n\n /** Source text of a value node, re-indenting continuation lines from its original to `targetIndent`. */\n private valueText(valueNode: any, targetIndent: string): string {\n const raw = this.text.slice(this.start(valueNode), valueNode.end)\n if (!raw.includes(\"\\n\")) {\n return raw\n }\n const fromIndent = this.lineIndentAt(this.start(valueNode))\n return this.reindent(raw, fromIndent, targetIndent)\n }\n\n private mergeArrays(valueNodes: any[]): string {\n const ts = this.ts\n const elems: string[] = []\n for (const v of valueNodes) {\n const node = this.unwrap(v)\n if (ts.isArrayLiteralExpression(node)) {\n for (const el of node.elements) {\n elems.push(this.text.slice(this.start(el), el.end))\n }\n } else {\n elems.push(this.text.slice(this.start(node), node.end))\n }\n }\n return `[${elems.join(\", \")}]`\n }\n\n private negate(valueNode: any): string {\n const ts = this.ts\n if (valueNode.kind === ts.SyntaxKind.TrueKeyword) {\n return \"false\"\n }\n if (valueNode.kind === ts.SyntaxKind.FalseKeyword) {\n return \"true\"\n }\n return `!(${this.text.slice(this.start(valueNode), valueNode.end)})`\n }\n\n // ── Low-level helpers ──────────────────────────────────────────────────────\n\n private start(node: any): number {\n return node.getStart(this.sf)\n }\n\n private getProp(objLit: any, name: string): any | null {\n const ts = this.ts\n for (const p of objLit.properties) {\n if (p.name == null) {\n continue\n }\n let key: string | undefined\n if (ts.isIdentifier(p.name) || ts.isStringLiteral(p.name) || ts.isNumericLiteral(p.name)) {\n key = p.name.text\n } else {\n continue\n }\n if (key === name) {\n return p\n }\n }\n return null\n }\n\n private getObjectProp(objLit: any, name: string): any | null {\n const ts = this.ts\n const prop = this.getProp(objLit, name)\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return null\n }\n const v = this.unwrap(prop.initializer)\n return ts.isObjectLiteralExpression(v) ? v : null\n }\n\n private propName(prop: any): string | undefined {\n const ts = this.ts\n if (prop.name != null && (ts.isIdentifier(prop.name) || ts.isStringLiteral(prop.name) || ts.isNumericLiteral(prop.name))) {\n return prop.name.text\n }\n return undefined\n }\n\n private stringLiteralValue(prop: any): string | undefined {\n const ts = this.ts\n if (prop == null || !ts.isPropertyAssignment(prop)) {\n return undefined\n }\n const v = this.unwrap(prop.initializer)\n return ts.isStringLiteral(v) ? v.text : undefined\n }\n\n private endWithTrailingComma(prop: any): number {\n let i = prop.end\n while (i < this.text.length && (this.text[i] === \" \" || this.text[i] === \"\\t\")) {\n i++\n }\n return this.text[i] === \",\" ? i + 1 : prop.end\n }\n\n private lineIndentAt(pos: number): string {\n let i = pos\n while (i > 0 && this.text[i - 1] !== \"\\n\") {\n i--\n }\n let j = i\n while (j < this.text.length && (this.text[j] === \" \" || this.text[j] === \"\\t\")) {\n j++\n }\n return this.text.slice(i, j)\n }\n\n private detectIndentUnit(root: any): string {\n const braceIndent = this.lineIndentAt(this.start(root))\n for (const p of root.properties) {\n const pi = this.lineIndentAt(this.start(p))\n if (pi.length > braceIndent.length) {\n return pi.slice(braceIndent.length)\n }\n }\n return \" \"\n }\n\n private propIndentFor(objLit: any): string {\n for (const p of objLit.properties) {\n return this.lineIndentAt(this.start(p))\n }\n return this.lineIndentAt(this.start(objLit)) + this.indentUnit\n }\n\n private reindent(text: string, fromIndent: string, toIndent: string): string {\n const delta = toIndent.length - fromIndent.length\n if (delta === 0) {\n return text\n }\n const lines = text.split(\"\\n\")\n return lines\n .map((line, idx) => {\n if (idx === 0) {\n return line\n }\n if (delta > 0) {\n return \" \".repeat(delta) + line\n }\n let removed = 0\n let k = 0\n while (k < line.length && removed < -delta && line[k] === \" \") {\n k++\n removed++\n }\n return line.slice(k)\n })\n .join(\"\\n\")\n }\n\n private replaceRange(start: number, end: number, text: string): void {\n this.edits.push({ start, end, text })\n }\n\n private insertEdit(pos: number, text: string): void {\n this.edits.push({ start: pos, end: pos, text })\n }\n\n apply(): string {\n const edits = [...this.edits].sort((a, b) => a.start - b.start || a.end - b.end)\n let out = \"\"\n let cursor = 0\n for (const e of edits) {\n if (e.start < cursor) {\n throw new Error(`overlapping edits at ${e.start} (cursor ${cursor})`)\n }\n out += this.text.slice(cursor, e.start) + e.text\n cursor = e.end\n }\n out += this.text.slice(cursor)\n return out\n }\n}\n"]}
|
|
@@ -7,11 +7,14 @@ export interface MigrationResult {
|
|
|
7
7
|
readonly migrated: Record<string, any>;
|
|
8
8
|
readonly changes: MigrationChange[];
|
|
9
9
|
readonly warnings: string[];
|
|
10
|
+
/** Informational notices that are not config changes — they never flip `modified` or trigger a file write. */
|
|
11
|
+
readonly advisories: string[];
|
|
10
12
|
readonly modified: boolean;
|
|
11
13
|
}
|
|
12
14
|
export declare const AZURE_KNOWN_FIELDS: Set<string>;
|
|
13
15
|
export declare const MAC_SIGN_FIELDS: readonly ["identity", "entitlements", "entitlementsInherit", "entitlementsLoginHelper", "provisioningProfile", "type", "binaries", "requirements", "hardenedRuntime", "gatekeeperAssess", "strictVerify", "preAutoEntitlements", "timestamp", "additionalArguments"];
|
|
14
16
|
export declare const MAC_UNIVERSAL_FIELDS: readonly ["mergeASARs", "singleArchFiles", "x64ArchFiles"];
|
|
17
|
+
export declare const NSIS_WEB_ADVISORY: string;
|
|
15
18
|
/**
|
|
16
19
|
* Applies all v26→v27 config transformations to a parsed config object.
|
|
17
20
|
* Pure function — no I/O, safe to call in tests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-schema.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAOjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAMD,eAAO,MAAM,kBAAkB,aAU7B,CAAA;AAIF,eAAO,MAAM,eAAe,sQAelB,CAAA;AAGV,eAAO,MAAM,oBAAoB,4DAA6D,CAAA;
|
|
1
|
+
{"version":3,"file":"migrate-schema.d.ts","sourceRoot":"","sources":["../../src/cli/migrate-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAOjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAC3B,8GAA8G;IAC9G,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B;AAMD,eAAO,MAAM,kBAAkB,aAU7B,CAAA;AAIF,eAAO,MAAM,eAAe,sQAelB,CAAA;AAGV,eAAO,MAAM,oBAAoB,4DAA6D,CAAA;AAI9F,eAAO,MAAM,iBAAiB,QAEyK,CAAA;AAwBvM;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,eAAe,CA0QvE;AA8DD,eAAO,MAAM,yBAAyB,+FAAgG,CAAA;AAuEtI,eAAO,MAAM,UAAU,aAA8D,CAAA;AAgLrF,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAkB/D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE5D"}
|