From 939282558facd00836384ee4d12f8357eb78110c Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Thu, 16 Jul 2026 23:33:56 +0200 Subject: [PATCH 01/33] cosmetic(flatpak): normalize interface name convention Flatpak had *ConfigOptions type named as *OptionsConfig, which I am sure to be a typo. This normalizes it to keep convention in naming the same. --- packages/maker/flatpak/src/Config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/maker/flatpak/src/Config.ts b/packages/maker/flatpak/src/Config.ts index a71e56c677..9c5d9d4043 100644 --- a/packages/maker/flatpak/src/Config.ts +++ b/packages/maker/flatpak/src/Config.ts @@ -1,4 +1,4 @@ -export interface MakerFlatpakOptionsConfig { +export interface MakerFlatpakConfigOptions { /** * App id of the flatpak, used in the id field of a flatpak-builder manifest. * @@ -122,5 +122,5 @@ export interface MakerFlatpakOptionsConfig { } export interface MakerFlatpakConfig { - options?: MakerFlatpakOptionsConfig; + options?: MakerFlatpakConfigOptions; } From 6d7c3a522959c3d90114e6d7ffffb2b772399fe6 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Fri, 17 Jul 2026 00:39:11 +0200 Subject: [PATCH 02/33] fix(typedoc): duplicate `packages/plugin/*` --- typedoc.json | 1 - 1 file changed, 1 deletion(-) diff --git a/typedoc.json b/typedoc.json index fb0b0085ad..8fa3087520 100644 --- a/typedoc.json +++ b/typedoc.json @@ -5,7 +5,6 @@ "packages/api/core", "packages/maker/*", "packages/plugin/*", - "packages/plugin/*", "packages/publisher/*", "packages/utils/types" ] From ecd5fd7009ccf49c965ab0d3bb35a86cd40dbe6c Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Fri, 17 Jul 2026 00:41:10 +0200 Subject: [PATCH 03/33] fix(typedoc): externally document `listr2` types --- typedoc.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/typedoc.json b/typedoc.json index 8fa3087520..0cee8d5582 100644 --- a/typedoc.json +++ b/typedoc.json @@ -7,5 +7,13 @@ "packages/plugin/*", "packages/publisher/*", "packages/utils/types" - ] + ], + "externalSymbolLinkMappings": { + "listr2": { + "ListrTask": "https://listr2.kilic.dev/api/listr2/interfaces/ListrTask.html" + } + }, + "packageOptions": { + "excludeExternals": true + } } From 181c8c89b6b5969eef2b584f8fc186fd7bd54a92 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Fri, 17 Jul 2026 00:42:33 +0200 Subject: [PATCH 04/33] fix(maker-deb): expose `*ConfigOptions` --- packages/maker/deb/src/MakerDeb.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/maker/deb/src/MakerDeb.ts b/packages/maker/deb/src/MakerDeb.ts index b024cae802..7d07c48292 100644 --- a/packages/maker/deb/src/MakerDeb.ts +++ b/packages/maker/deb/src/MakerDeb.ts @@ -61,3 +61,4 @@ export default class MakerDeb extends MakerBase { } export { MakerDeb, MakerDebConfig }; +export type { MakerDebConfigOptions } from './Config.ts'; From 6e59625c11d94af96c55b75fb6158ce199784adb Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Fri, 17 Jul 2026 00:42:53 +0200 Subject: [PATCH 05/33] fix(maker-flatpak): expose `*ConfigOptions` --- packages/maker/flatpak/src/MakerFlatpak.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/maker/flatpak/src/MakerFlatpak.ts b/packages/maker/flatpak/src/MakerFlatpak.ts index e109a05ffb..b2a15b5a61 100644 --- a/packages/maker/flatpak/src/MakerFlatpak.ts +++ b/packages/maker/flatpak/src/MakerFlatpak.ts @@ -59,3 +59,4 @@ export default class MakerFlatpak extends MakerBase { } export { MakerFlatpak, MakerFlatpakConfig }; +export type { MakerFlatpakConfigOptions } from './Config.ts'; From a6ea65f5d87c124cb68fc61c00af559b1e5d0527 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Fri, 17 Jul 2026 00:43:05 +0200 Subject: [PATCH 06/33] fix(maker-rpm): expose `*ConfigOptions` --- packages/maker/rpm/src/MakerRpm.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/maker/rpm/src/MakerRpm.ts b/packages/maker/rpm/src/MakerRpm.ts index 52349b577e..55c2c1b98a 100644 --- a/packages/maker/rpm/src/MakerRpm.ts +++ b/packages/maker/rpm/src/MakerRpm.ts @@ -64,3 +64,4 @@ export default class MakerRpm extends MakerBase { } export { MakerRpm, MakerRpmConfig }; +export type { MakerRpmConfigOptions } from './Config.ts'; From 3fd32db013f6d9b8a74d4acf20fd71456a7ec509 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Fri, 17 Jul 2026 00:50:00 +0200 Subject: [PATCH 07/33] fix(publisher-static): expose `StaticArtifact` It should be also exposed, as `keyForArtifact` access in TypeScript is protected, not private, so it is a part of the public API of this package as well. --- packages/publisher/base-static/src/PublisherStatic.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/publisher/base-static/src/PublisherStatic.ts b/packages/publisher/base-static/src/PublisherStatic.ts index 2f60d8fb00..3e53530ea2 100644 --- a/packages/publisher/base-static/src/PublisherStatic.ts +++ b/packages/publisher/base-static/src/PublisherStatic.ts @@ -46,3 +46,4 @@ export default abstract class PublisherStatic< } export { PublisherStatic, StaticPublisherConfig, PublisherOptions }; +export type { StaticArtifact }; From c5a41be1286b9ebdfee17db24977058afaa0d475 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Fri, 17 Jul 2026 00:51:11 +0200 Subject: [PATCH 08/33] fix(publisher-bitbucket): expose `*Auth` and `*Repository` --- packages/publisher/bitbucket/src/PublisherBitbucket.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/publisher/bitbucket/src/PublisherBitbucket.ts b/packages/publisher/bitbucket/src/PublisherBitbucket.ts index 1377f4331a..ce3a4f543f 100644 --- a/packages/publisher/bitbucket/src/PublisherBitbucket.ts +++ b/packages/publisher/bitbucket/src/PublisherBitbucket.ts @@ -98,3 +98,4 @@ export default class PublisherBitbucket extends PublisherBase Date: Fri, 17 Jul 2026 00:51:33 +0200 Subject: [PATCH 09/33] fix(publisher-github): expose `*Repository` --- packages/publisher/github/src/PublisherGitHub.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/publisher/github/src/PublisherGitHub.ts b/packages/publisher/github/src/PublisherGitHub.ts index 1f4a47235d..da705e00f9 100644 --- a/packages/publisher/github/src/PublisherGitHub.ts +++ b/packages/publisher/github/src/PublisherGitHub.ts @@ -250,3 +250,4 @@ export default class PublisherGitHub extends PublisherBase Date: Sun, 19 Jul 2026 16:19:43 +0200 Subject: [PATCH 10/33] fix(plugin-vite): expose `VitePlugin*Config` --- packages/plugin/vite/src/VitePlugin.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/plugin/vite/src/VitePlugin.ts b/packages/plugin/vite/src/VitePlugin.ts index 7219b25051..de0fee69b1 100644 --- a/packages/plugin/vite/src/VitePlugin.ts +++ b/packages/plugin/vite/src/VitePlugin.ts @@ -537,4 +537,8 @@ function getServerURLs(urls: vite.ResolvedServerUrls) { return output; } -export { VitePlugin }; +export { VitePlugin, VitePluginConfig }; +export type { + VitePluginBuildConfig, + VitePluginRendererConfig, +} from './Config.ts'; From bb23404f0c4f4411a15b5e2a52ea6c7df062a34c Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Sun, 19 Jul 2026 17:06:01 +0200 Subject: [PATCH 11/33] refactor(maker-dmg): type-to-interface config conversion Makes `MakerDMGConfig` an interface like in most other makers, this is to unify documentation and modules to have similar patterns. --- packages/maker/dmg/src/Config.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/maker/dmg/src/Config.ts b/packages/maker/dmg/src/Config.ts index 003053532f..513243ed87 100644 --- a/packages/maker/dmg/src/Config.ts +++ b/packages/maker/dmg/src/Config.ts @@ -1,6 +1,8 @@ import type { ElectronInstallerDMGOptions } from 'electron-installer-dmg'; -export type MakerDMGConfig = Omit< +export interface MakerDMGConfig extends Omit< ElectronInstallerDMGOptions, 'name' | 'appPath' | 'out' -> & { name?: string }; +> { + name?: string; +} From 48a21c63c3a2f2d6013e81b949e7b182d6c3274b Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Sun, 19 Jul 2026 17:08:04 +0200 Subject: [PATCH 12/33] refactor(maker-msix): type-to-interface config convertion Like in c935fee7d, this makes `MakerMSIXConfig` an interface. --- packages/maker/msix/src/Config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/maker/msix/src/Config.ts b/packages/maker/msix/src/Config.ts index ed4fe809bf..8d129c1299 100644 --- a/packages/maker/msix/src/Config.ts +++ b/packages/maker/msix/src/Config.ts @@ -15,10 +15,10 @@ type SemiPartial = Omit & Partial>; * * @see https://github.com/bitdisaster/electron-windows-msix/blob/master/src/types.ts */ -export type MakerMSIXConfig = Omit< +export interface MakerMSIXConfig extends Omit< MSIXPackagingOptions, 'outputDir' | 'appDir' | 'manifestVariables' -> & { +> { manifestVariables?: SemiPartial< ManifestGenerationVariables, | 'packageDescription' @@ -42,4 +42,4 @@ export type MakerMSIXConfig = Omit< * `my-app-win32-x64-1.2.3` */ outputFileName?: string | (() => string | Promise); -}; +} From cb8bb19624f144bdaf6826b9b7ac1295a32d38cf Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Sun, 19 Jul 2026 17:23:09 +0200 Subject: [PATCH 13/33] docs(maker-msix): make `SemiPartial` inline type I assume `SemiPartial` is not part of type API but a convenient alias to transform types, so `@inline` is there to make it behave like this as well in TypeDoc. --- packages/maker/msix/src/Config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/maker/msix/src/Config.ts b/packages/maker/msix/src/Config.ts index 8d129c1299..9b1d45d9d5 100644 --- a/packages/maker/msix/src/Config.ts +++ b/packages/maker/msix/src/Config.ts @@ -3,6 +3,7 @@ import { PackagingOptions as MSIXPackagingOptions, } from 'electron-windows-msix'; +/** @inline */ type SemiPartial = Omit & Partial>; /** From cd2484db937edbea15544614a757fe4a241bc482 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Sun, 19 Jul 2026 22:56:06 +0200 Subject: [PATCH 14/33] refactor(typedoc): unify/improve configuration This change renames typedoc.json into typedoc.jsonc that is also supported while being more recognized by editors that TypeDoc also supports comments, adds explaintation to some properties, removes undocumented .gitignore rule of per-package configs and merges unused / not properly set up typedoc.base.json into typedoc.jsonc packageOptions field, given this was probably an intent of this configuration before yet it might have been abadonded / unfinished. --- .gitignore | 1 - .oxfmtrc.json | 1 - typedoc.base.json | 4 ---- typedoc.json | 19 ------------------- typedoc.jsonc | 30 ++++++++++++++++++++++++++++++ 5 files changed, 30 insertions(+), 25 deletions(-) delete mode 100644 typedoc.base.json delete mode 100644 typedoc.json create mode 100644 typedoc.jsonc diff --git a/.gitignore b/.gitignore index 4b8ac00ec4..1d750531b4 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ packages/plugin/webpack/spec/fixtures/apps/native-modules/package-lock.json packages/plugin/fuses/spec/fixture/out .links reports -packages/**/typedoc.json .vscode/settings.json .pnp.* .yarn/* diff --git a/.oxfmtrc.json b/.oxfmtrc.json index f446597108..c19507d437 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -14,7 +14,6 @@ "packages/*/*/index.ts", "packages/*/*/README.md", "packages/*/*/tsconfig.json", - "packages/*/*/typedoc.json", "packages/api/core/spec/fixture/api-tester/package.json", "packages/api/core/spec/fixture/bad_external_forge_config/bad.js", "packages/plugin/webpack/spec/**/.webpack", diff --git a/typedoc.base.json b/typedoc.base.json deleted file mode 100644 index 0eaa4ce92c..0000000000 --- a/typedoc.base.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://typedoc.org/schema.json", - "excludeInternal": true -} diff --git a/typedoc.json b/typedoc.json deleted file mode 100644 index 0cee8d5582..0000000000 --- a/typedoc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://typedoc.org/schema.json", - "entryPointStrategy": "packages", - "entryPoints": [ - "packages/api/core", - "packages/maker/*", - "packages/plugin/*", - "packages/publisher/*", - "packages/utils/types" - ], - "externalSymbolLinkMappings": { - "listr2": { - "ListrTask": "https://listr2.kilic.dev/api/listr2/interfaces/ListrTask.html" - } - }, - "packageOptions": { - "excludeExternals": true - } -} diff --git a/typedoc.jsonc b/typedoc.jsonc new file mode 100644 index 0000000000..ede3fade60 --- /dev/null +++ b/typedoc.jsonc @@ -0,0 +1,30 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPointStrategy": "packages", + "entryPoints": [ + "packages/api/core", + "packages/maker/*", + "packages/plugin/*", + "packages/publisher/*", + "packages/utils/types" + ], + "externalSymbolLinkMappings": { + "listr2": { + // ListrTask is referenced by @electron-forge/shared-types + "ListrTask": "https://listr2.kilic.dev/api/listr2/interfaces/ListrTask.html" + } + }, + // Replaces previous *.base.json concept: it is + // a per-package default documentation. It can still + // be overwritten if needed with a per-package config. + "packageOptions": { + "excludeInternal": true, + // Usually, we want to use "externalSymbolLinkMappings" + // to point out symbols that are in external packages, + // while allow for exceptions if Typedoc docs offer + // better quality of documentation or upstream docs + // are manually maintained and in risk of being + // out-of-date. + "excludeExternals": true + } +} From 1699d64c0ee6e291a0669dd86928a8c67c2027c2 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 05:35:25 +0200 Subject: [PATCH 15/33] refactor(core): type-to-interface conversions Interfaces are both easier to inline and document in Typedoc, as well as hold more information about relationship between types when documented, outside of being believed as generally preferred performance-wise. --- packages/api/core/src/util/forge-config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/api/core/src/util/forge-config.ts b/packages/api/core/src/util/forge-config.ts index c4e5a8f016..241c3a0087 100644 --- a/packages/api/core/src/util/forge-config.ts +++ b/packages/api/core/src/util/forge-config.ts @@ -106,11 +106,11 @@ export function unregisterForgeConfigForDirectory(dir: string): void { registeredForgeConfigs.delete(path.resolve(dir)); } -export type BuildIdentifierMap = Record; -export type BuildIdentifierConfig = { +export interface BuildIdentifierMap extends Record {} +export interface BuildIdentifierConfig { map: BuildIdentifierMap; __isMagicBuildIdentifierMap: true; -}; +} export function fromBuildIdentifier( map: BuildIdentifierMap, From 36db7f8102128c7f274ad1cecaccda8677aadad7 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 05:46:23 +0200 Subject: [PATCH 16/33] docs(core): document `BuildIndentifier*` references inline Add proper tags to generate correct inline documentation for BuildIdentifierMap and BuildIdentifierConfig references in API. --- packages/api/core/src/api/make.ts | 1 + packages/api/core/src/util/forge-config.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/packages/api/core/src/api/make.ts b/packages/api/core/src/api/make.ts index 9a8ab8f902..11bac4b7fa 100644 --- a/packages/api/core/src/api/make.ts +++ b/packages/api/core/src/api/make.ts @@ -33,6 +33,7 @@ type MakerImpl = { new (...args: any[]): MakerBase; }; +/** @inline */ type MakeTargets = ForgeConfigMaker[] | string[]; function generateTargets( diff --git a/packages/api/core/src/util/forge-config.ts b/packages/api/core/src/util/forge-config.ts index 241c3a0087..92572c455c 100644 --- a/packages/api/core/src/util/forge-config.ts +++ b/packages/api/core/src/util/forge-config.ts @@ -106,9 +106,12 @@ export function unregisterForgeConfigForDirectory(dir: string): void { registeredForgeConfigs.delete(path.resolve(dir)); } +/** @inline */ export interface BuildIdentifierMap extends Record {} +/** @inline */ export interface BuildIdentifierConfig { map: BuildIdentifierMap; + /** @internal */ __isMagicBuildIdentifierMap: true; } From 4886b0413124953bc153817e53176e7b075aa36c Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:14:20 +0200 Subject: [PATCH 17/33] fix(maker-msix): add `Maker*ManifestVariables` alias Adds MakerMSIXConfigManifestVariables alias that offers better documentation and direct access to `MakerMSIXConfig.manifestVariables`, replacing need to inline SemiPartial and documenting properties without need to expose used types from `electron-windows-msix` for TypeDoc to recognize and link interface hierarchy. --- packages/maker/msix/src/Config.ts | 21 +++++++++++---------- packages/maker/msix/src/MakerMSIX.ts | 1 + 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/maker/msix/src/Config.ts b/packages/maker/msix/src/Config.ts index 9b1d45d9d5..b1daee6f1c 100644 --- a/packages/maker/msix/src/Config.ts +++ b/packages/maker/msix/src/Config.ts @@ -3,9 +3,18 @@ import { PackagingOptions as MSIXPackagingOptions, } from 'electron-windows-msix'; -/** @inline */ type SemiPartial = Omit & Partial>; +export interface MakerMSIXConfigManifestVariables extends SemiPartial< + ManifestGenerationVariables, + | 'packageDescription' + | 'appExecutable' + | 'packageVersion' + | 'publisher' + | 'packageIdentity' + | 'targetArch' +> {} + /** * The configuration object for the MSIX maker. * The `outputDir` and `appDir` parameters are preconfigured by Forge so that the @@ -20,15 +29,7 @@ export interface MakerMSIXConfig extends Omit< MSIXPackagingOptions, 'outputDir' | 'appDir' | 'manifestVariables' > { - manifestVariables?: SemiPartial< - ManifestGenerationVariables, - | 'packageDescription' - | 'appExecutable' - | 'packageVersion' - | 'publisher' - | 'packageIdentity' - | 'targetArch' - >; + manifestVariables?: MakerMSIXConfigManifestVariables; /** * The base name of the generated `.msix` file, without the `.msix` * extension (the maker always appends `.msix`). This only overrides the diff --git a/packages/maker/msix/src/MakerMSIX.ts b/packages/maker/msix/src/MakerMSIX.ts index ba79b61d0b..1e694c7f6d 100644 --- a/packages/maker/msix/src/MakerMSIX.ts +++ b/packages/maker/msix/src/MakerMSIX.ts @@ -73,3 +73,4 @@ export default class MakerMSIX extends MakerBase { } export { MakerMSIX, MakerMSIXConfig }; +export type { MakerMSIXConfigManifestVariables } from './Config.ts'; From ed207c5dbf080ed96eb58e5ec49c9318fe8a327b Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:22:26 +0200 Subject: [PATCH 18/33] refactor(maker-snap): make `MakerSnapConfig` an interface --- packages/maker/snap/src/Config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/maker/snap/src/Config.ts b/packages/maker/snap/src/Config.ts index ff6250f282..6bc7bcd8e6 100644 --- a/packages/maker/snap/src/Config.ts +++ b/packages/maker/snap/src/Config.ts @@ -1,4 +1,4 @@ import { Options, SnapcraftConfig } from 'electron-installer-snap'; -export type MakerSnapConfig = Omit & - SnapcraftConfig; +export interface MakerSnapConfig + extends Omit, SnapcraftConfig {} From 7e3ac1209bd375e91c9788f329423125a1a4cfd8 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:23:07 +0200 Subject: [PATCH 19/33] refactor(maker-squirrel): make `MakerSquirrelConfig` an interface --- packages/maker/squirrel/src/MakerSquirrel.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/maker/squirrel/src/MakerSquirrel.ts b/packages/maker/squirrel/src/MakerSquirrel.ts index 4f45123e05..e05526e22f 100644 --- a/packages/maker/squirrel/src/MakerSquirrel.ts +++ b/packages/maker/squirrel/src/MakerSquirrel.ts @@ -11,10 +11,10 @@ import { Options as ElectronWinstallerOptions, } from 'electron-winstaller'; -export type MakerSquirrelConfig = Omit< +export interface MakerSquirrelConfig extends Omit< ElectronWinstallerOptions, 'appDirectory' | 'outputDirectory' ->; +> {} export default class MakerSquirrel extends MakerBase { name = 'squirrel'; From e25bbcad55e1704f7542d15800f20a19b9b3aacd Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:25:10 +0200 Subject: [PATCH 20/33] refactor(maker-wix): make `MakerWixConfig` an interface --- packages/maker/wix/src/Config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/maker/wix/src/Config.ts b/packages/maker/wix/src/Config.ts index 6e99c8e03d..50de63eb2e 100644 --- a/packages/maker/wix/src/Config.ts +++ b/packages/maker/wix/src/Config.ts @@ -1,6 +1,6 @@ import { MSICreator, type MSICreatorOptions } from 'electron-wix-msi'; -export type MakerWixConfig = Omit< +export interface MakerWixConfig extends Omit< MSICreatorOptions, | 'appDirectory' | 'outputDirectory' @@ -9,7 +9,7 @@ export type MakerWixConfig = Omit< | 'version' | 'manufacturer' | 'exe' -> & { +> { /** * The app's description * @@ -44,4 +44,4 @@ export type MakerWixConfig = Omit< * Allows for the modification of the MSICreator before create is called. */ beforeCreate?: (creator: MSICreator) => Promise | void; -}; +} From e5951b457c826a8e7b057f84e076c8a7ec11a4b3 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:28:36 +0200 Subject: [PATCH 21/33] fix(maker-wix): drop MSICreatorOptions from API It is no longer needed to be exposed and is in fact not even part of API. --- packages/maker/wix/src/MakerWix.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/maker/wix/src/MakerWix.ts b/packages/maker/wix/src/MakerWix.ts index 53c7109dff..cc2db6e8a6 100644 --- a/packages/maker/wix/src/MakerWix.ts +++ b/packages/maker/wix/src/MakerWix.ts @@ -4,7 +4,7 @@ import { styleText } from 'node:util'; import { getNameFromAuthor } from '@electron-forge/core-utils'; import { MakerBase, type MakerOptions } from '@electron-forge/maker-base'; import { ForgePlatform } from '@electron-forge/shared-types'; -import { MSICreator, type MSICreatorOptions } from 'electron-wix-msi'; +import { MSICreator } from 'electron-wix-msi'; import semver from 'semver'; import { MakerWixConfig } from './Config.js'; @@ -74,4 +74,4 @@ export default class MakerWix extends MakerBase { } } -export { MakerWix, MakerWixConfig, MSICreatorOptions }; +export { MakerWix, MakerWixConfig }; From 220d34f4c4ff33fc5516b030b35c75f4a40073fd Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:31:04 +0200 Subject: [PATCH 22/33] docs(plugin-webpack): mark aliases as inline --- packages/plugin/webpack/src/Config.ts | 2 ++ packages/plugin/webpack/src/WebpackConfig.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/plugin/webpack/src/Config.ts b/packages/plugin/webpack/src/Config.ts index 504151ca2b..33a3c2e380 100644 --- a/packages/plugin/webpack/src/Config.ts +++ b/packages/plugin/webpack/src/Config.ts @@ -65,6 +65,7 @@ export interface WebpackPluginEntryPointNoWindow extends WebpackPluginEntryPoint js: string; } +/** @inline */ export type WebpackPluginEntryPoint = | WebpackPluginEntryPointLocalWindow | WebpackPluginEntryPointNoWindow @@ -188,6 +189,7 @@ export interface WebpackPluginConfig { >; } +/** @inline */ export type WebpackConfiguration = | RawWebpackConfiguration | WebpackConfigurationFactory; diff --git a/packages/plugin/webpack/src/WebpackConfig.ts b/packages/plugin/webpack/src/WebpackConfig.ts index 0b7193d852..5c84edfc0d 100644 --- a/packages/plugin/webpack/src/WebpackConfig.ts +++ b/packages/plugin/webpack/src/WebpackConfig.ts @@ -31,6 +31,7 @@ type WebpackMode = 'production' | 'development'; const d = debug('electron-forge:plugin:webpack:webpackconfig'); +/** @inline */ export type ConfigurationFactory = ( env: string | Record | unknown, args: Record, From 7fedc3e1d30d7736b61a5909541bf97fe436a3c0 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:32:09 +0200 Subject: [PATCH 23/33] fix(plugin-webpack): expose needed types --- packages/plugin/webpack/src/WebpackPlugin.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/plugin/webpack/src/WebpackPlugin.ts b/packages/plugin/webpack/src/WebpackPlugin.ts index bfd3d139d0..87873bb8d0 100644 --- a/packages/plugin/webpack/src/WebpackPlugin.ts +++ b/packages/plugin/webpack/src/WebpackPlugin.ts @@ -817,3 +817,10 @@ the generated files). Instead, it is ${JSON.stringify(pj.main)}`); } export { WebpackPlugin, WebpackPluginConfig }; +export type { + WebpackPluginRendererConfig, + WebpackPluginEntryPointLocalWindow, + WebpackPluginEntryPointNoWindow, + WebpackPluginEntryPointPreloadOnly, + WebpackPreloadEntryPoint, +} from './Config.ts'; From 4a97abb98e11a2d32ec4c46b519e98715c751068 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:34:32 +0200 Subject: [PATCH 24/33] refactor(shared-types): make `ElectronProcess` an interface --- packages/utils/types/src/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/utils/types/src/index.ts b/packages/utils/types/src/index.ts index 63836a1435..7ecc1c8b46 100644 --- a/packages/utils/types/src/index.ts +++ b/packages/utils/types/src/index.ts @@ -33,7 +33,9 @@ export type ForgeListrTaskFn = ListrTask< Ctx, ListrDefaultRenderer >['task']; -export type ElectronProcess = ChildProcess & { restarted: boolean }; +export interface ElectronProcess extends ChildProcess { + restarted: boolean; +} export type ForgePlatform = OfficialPlatform; export type ForgeArch = OfficialArch | 'all'; From 8f7cb9ba9a47369b69b92e09fd0a391c1c02a76e Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:37:07 +0200 Subject: [PATCH 25/33] fix(typedoc): selectively include externals in packages This sets `excludeExternals: false` for TypeDoc in dmg, msix, snap, squirrel and wix makers, so it is possible to mix and display external and internal properties in the documentation. --- packages/maker/dmg/typedoc.jsonc | 4 ++++ packages/maker/msix/typedoc.jsonc | 4 ++++ packages/maker/snap/typedoc.jsonc | 4 ++++ packages/maker/squirrel/typedoc.jsonc | 4 ++++ packages/maker/wix/typedoc.jsonc | 4 ++++ 5 files changed, 20 insertions(+) create mode 100644 packages/maker/dmg/typedoc.jsonc create mode 100644 packages/maker/msix/typedoc.jsonc create mode 100644 packages/maker/snap/typedoc.jsonc create mode 100644 packages/maker/squirrel/typedoc.jsonc create mode 100644 packages/maker/wix/typedoc.jsonc diff --git a/packages/maker/dmg/typedoc.jsonc b/packages/maker/dmg/typedoc.jsonc new file mode 100644 index 0000000000..ee3bc14d19 --- /dev/null +++ b/packages/maker/dmg/typedoc.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "excludeExternals": false +} diff --git a/packages/maker/msix/typedoc.jsonc b/packages/maker/msix/typedoc.jsonc new file mode 100644 index 0000000000..ee3bc14d19 --- /dev/null +++ b/packages/maker/msix/typedoc.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "excludeExternals": false +} diff --git a/packages/maker/snap/typedoc.jsonc b/packages/maker/snap/typedoc.jsonc new file mode 100644 index 0000000000..ee3bc14d19 --- /dev/null +++ b/packages/maker/snap/typedoc.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "excludeExternals": false +} diff --git a/packages/maker/squirrel/typedoc.jsonc b/packages/maker/squirrel/typedoc.jsonc new file mode 100644 index 0000000000..ee3bc14d19 --- /dev/null +++ b/packages/maker/squirrel/typedoc.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "excludeExternals": false +} diff --git a/packages/maker/wix/typedoc.jsonc b/packages/maker/wix/typedoc.jsonc new file mode 100644 index 0000000000..ee3bc14d19 --- /dev/null +++ b/packages/maker/wix/typedoc.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "excludeExternals": false +} From e777f72d9427a7d039a91c85e25b40e6c6b6cae9 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 06:39:01 +0200 Subject: [PATCH 26/33] docs(typedoc): add documentations to external symbols This links some external symbols to their respective documentation, which helps in browsing type hierarchy or types in Electron Forge that are reused from another packages. --- typedoc.jsonc | 52 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/typedoc.jsonc b/typedoc.jsonc index ede3fade60..a09e5f58e0 100644 --- a/typedoc.jsonc +++ b/typedoc.jsonc @@ -8,10 +8,58 @@ "packages/publisher/*", "packages/utils/types" ], + "sourceLinkExternal": false, "externalSymbolLinkMappings": { + // @electron-forge/shared-types + "@electron/packager": { + "OfficialArch": "https://packages.electronjs.org/packager/v20.0.3/types/OfficialArch.html", + "OfficialPlatform": "https://packages.electronjs.org/packager/v20.0.3/types/OfficialPlatform.html", + "Options": "https://packages.electronjs.org/packager/v20.0.3/interfaces/Options.html" + }, + "@electron/rebuild": { + "RebuildOptions": "https://packages.electronjs.org/rebuild/v4.2.0/interfaces/RebuildOptions.html" + }, "listr2": { - // ListrTask is referenced by @electron-forge/shared-types - "ListrTask": "https://listr2.kilic.dev/api/listr2/interfaces/ListrTask.html" + "ListrBaseClassOptions": "https://listr2.kilic.dev/api/listr2/interfaces/ListrBaseClassOptions.html", + "ListrTask": "https://listr2.kilic.dev/api/listr2/interfaces/ListrTask.html", + "TaskWrapper": "https://listr2.kilic.dev/api/listr2/interfaces/ListrTaskWrapper.html", + "ListrDefaultRenderer": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrDefaultRenderer.html", + "ListrDefaultRendererValue": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrDefaultRendererValue.html", + "ListrSimpleRenderer": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrSimpleRenderer.html", + "ListrSimpleRendererValue": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrSimpleRendererValue.html" + }, + "@types/node": { + "\"child_process\".ChildProcess": "https://nodejs.org/docs/latest/api/child_process.html#class-childprocess" + }, + // @electron-forge/maker-snap + "electron-installer-snap": { + "createSnap.Options": "https://electron-userland.github.io/electron-installer-snap/master/interfaces/createsnap.snapcraftoptions.html", + "createSnap.SnapcraftConfig": "https://electron-userland.github.io/electron-installer-snap/master/modules/createsnap.html#customsnapcraftconfig" + }, + // @electron-forge/plugin-fuses + "@electron/fuses": { + "FuseConfig": "https://packages.electronjs.org/fuses/v2.1.3/types/FuseConfig.html" + }, + // @electron-forge/plugin-webpack + "webpack": { + "exports.Configuration": "https://webpack.js.org/configuration/" + }, + "webpack-dev-server": { + "Configuration": "https://webpack.js.org/configuration/dev-server/" + }, + // @electron-forge/publisher-gcs + "@google-cloud/storage": { + "ConfigMetadata": "https://docs.cloud.google.com/storage/docs/metadata", + "StorageOptions": "https://docs.cloud.google.com/nodejs/docs/reference/storage/latest/storage/storageoptions", + "UploadOptions": "https://docs.cloud.google.com/nodejs/docs/reference/storage/latest/storage/uploadoptions" + }, + // @electron-forge/publisher-github + "@octokit/core": { + "OctokitOptions": "https://github.com/octokit/core.js#options" + }, + // @electron-forge/publisher-s3 + "@aws-sdk/types": { + "Credentials": "https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-types/Interface/Credentials/" } }, // Replaces previous *.base.json concept: it is From 45b64823b6523c28c9a56e33cdb63b60fd7a29e6 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 07:04:11 +0200 Subject: [PATCH 27/33] fix(makers): correct/add links in Readmes' to symbols --- packages/maker/deb/README.md | 2 +- packages/maker/flatpak/README.md | 2 +- packages/maker/rpm/README.md | 2 +- packages/maker/snap/README.md | 2 ++ packages/maker/squirrel/README.md | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/maker/deb/README.md b/packages/maker/deb/README.md index e973f24025..0b4d005889 100644 --- a/packages/maker/deb/README.md +++ b/packages/maker/deb/README.md @@ -2,7 +2,7 @@ `@electron-forge/maker-deb` builds .deb packages, which are the standard package format for Debian-based Linux distributions such as Ubuntu. You can only build the deb target on Linux or macOS machines with the fakeroot and dpkg packages installed. -Configuration options are documented in [`MakerDebConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_deb.InternalOptions.MakerDebConfigOptions.html). +Configuration options are documented in [`MakerDebConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_deb.MakerDebConfigOptions.html). ```javascript { diff --git a/packages/maker/flatpak/README.md b/packages/maker/flatpak/README.md index 9f1d629a26..880ae02860 100644 --- a/packages/maker/flatpak/README.md +++ b/packages/maker/flatpak/README.md @@ -4,7 +4,7 @@ You can only build the Flatpak target if you have `flatpak`, `flatpak-builder`, and `eu-strip` _\(usually part of the `elfutils` package\)_ installed on your system. -Configuration options are documented in [`MakerFlatpakOptionsConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_flatpak.InternalOptions.MakerFlatpakOptionsConfig.html). +Configuration options are documented in [`MakerFlatpakOptionsConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_flatpak.MakerFlatpakConfigOptions.html). ```javascript { diff --git a/packages/maker/rpm/README.md b/packages/maker/rpm/README.md index 9171676957..b2507fb143 100644 --- a/packages/maker/rpm/README.md +++ b/packages/maker/rpm/README.md @@ -4,7 +4,7 @@ You can only build the RPM target on Linux machines with the `rpm` or `rpm-build` packages installed. -Configuration options are documented in [`MakerRpmConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_rpm.InternalOptions.MakerRpmConfigOptions.html). +Configuration options are documented in [`MakerRpmConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_rpm.MakerRpmConfigOptions.html). ```javascript { diff --git a/packages/maker/snap/README.md b/packages/maker/snap/README.md index 4b6c189e25..116cf724ad 100644 --- a/packages/maker/snap/README.md +++ b/packages/maker/snap/README.md @@ -4,6 +4,8 @@ You can only build the Snapcraft target on Linux systems with the `snapcraft` package installed. +Configuration options are documented in [`MakerSnapConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_snap.MakerSnapConfig.html). + ```javascript { name: '@electron-forge/maker-snap', diff --git a/packages/maker/squirrel/README.md b/packages/maker/squirrel/README.md index dad1fd827f..60d5d69c80 100644 --- a/packages/maker/squirrel/README.md +++ b/packages/maker/squirrel/README.md @@ -7,7 +7,7 @@ Pre-requisites: * Windows machine * Linux machine with `mono` and `wine` installed. -Configuration options are documented in [`MakerSquirrelConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_squirrel.InternalOptions.Options.html). +Configuration options are documented in [`MakerSquirrelConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_squirrel.MakerSquirrelConfig.html). ```javascript { From d098faf3ffa70fd9a9a2ab06be48283b5f88b3fc Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 07:12:27 +0200 Subject: [PATCH 28/33] cosmetic(typedoc): fix formatting with `oxfmt` --- packages/maker/dmg/typedoc.jsonc | 2 +- packages/maker/msix/typedoc.jsonc | 2 +- packages/maker/snap/typedoc.jsonc | 2 +- packages/maker/squirrel/typedoc.jsonc | 2 +- packages/maker/wix/typedoc.jsonc | 2 +- typedoc.jsonc | 30 +++++++++++++-------------- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/packages/maker/dmg/typedoc.jsonc b/packages/maker/dmg/typedoc.jsonc index ee3bc14d19..295a210546 100644 --- a/packages/maker/dmg/typedoc.jsonc +++ b/packages/maker/dmg/typedoc.jsonc @@ -1,4 +1,4 @@ { "$schema": "https://typedoc.org/schema.json", - "excludeExternals": false + "excludeExternals": false, } diff --git a/packages/maker/msix/typedoc.jsonc b/packages/maker/msix/typedoc.jsonc index ee3bc14d19..295a210546 100644 --- a/packages/maker/msix/typedoc.jsonc +++ b/packages/maker/msix/typedoc.jsonc @@ -1,4 +1,4 @@ { "$schema": "https://typedoc.org/schema.json", - "excludeExternals": false + "excludeExternals": false, } diff --git a/packages/maker/snap/typedoc.jsonc b/packages/maker/snap/typedoc.jsonc index ee3bc14d19..295a210546 100644 --- a/packages/maker/snap/typedoc.jsonc +++ b/packages/maker/snap/typedoc.jsonc @@ -1,4 +1,4 @@ { "$schema": "https://typedoc.org/schema.json", - "excludeExternals": false + "excludeExternals": false, } diff --git a/packages/maker/squirrel/typedoc.jsonc b/packages/maker/squirrel/typedoc.jsonc index ee3bc14d19..295a210546 100644 --- a/packages/maker/squirrel/typedoc.jsonc +++ b/packages/maker/squirrel/typedoc.jsonc @@ -1,4 +1,4 @@ { "$schema": "https://typedoc.org/schema.json", - "excludeExternals": false + "excludeExternals": false, } diff --git a/packages/maker/wix/typedoc.jsonc b/packages/maker/wix/typedoc.jsonc index ee3bc14d19..295a210546 100644 --- a/packages/maker/wix/typedoc.jsonc +++ b/packages/maker/wix/typedoc.jsonc @@ -1,4 +1,4 @@ { "$schema": "https://typedoc.org/schema.json", - "excludeExternals": false + "excludeExternals": false, } diff --git a/typedoc.jsonc b/typedoc.jsonc index a09e5f58e0..dc4896a13a 100644 --- a/typedoc.jsonc +++ b/typedoc.jsonc @@ -6,7 +6,7 @@ "packages/maker/*", "packages/plugin/*", "packages/publisher/*", - "packages/utils/types" + "packages/utils/types", ], "sourceLinkExternal": false, "externalSymbolLinkMappings": { @@ -14,10 +14,10 @@ "@electron/packager": { "OfficialArch": "https://packages.electronjs.org/packager/v20.0.3/types/OfficialArch.html", "OfficialPlatform": "https://packages.electronjs.org/packager/v20.0.3/types/OfficialPlatform.html", - "Options": "https://packages.electronjs.org/packager/v20.0.3/interfaces/Options.html" + "Options": "https://packages.electronjs.org/packager/v20.0.3/interfaces/Options.html", }, "@electron/rebuild": { - "RebuildOptions": "https://packages.electronjs.org/rebuild/v4.2.0/interfaces/RebuildOptions.html" + "RebuildOptions": "https://packages.electronjs.org/rebuild/v4.2.0/interfaces/RebuildOptions.html", }, "listr2": { "ListrBaseClassOptions": "https://listr2.kilic.dev/api/listr2/interfaces/ListrBaseClassOptions.html", @@ -26,41 +26,41 @@ "ListrDefaultRenderer": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrDefaultRenderer.html", "ListrDefaultRendererValue": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrDefaultRendererValue.html", "ListrSimpleRenderer": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrSimpleRenderer.html", - "ListrSimpleRendererValue": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrSimpleRendererValue.html" + "ListrSimpleRendererValue": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrSimpleRendererValue.html", }, "@types/node": { - "\"child_process\".ChildProcess": "https://nodejs.org/docs/latest/api/child_process.html#class-childprocess" + "\"child_process\".ChildProcess": "https://nodejs.org/docs/latest/api/child_process.html#class-childprocess", }, // @electron-forge/maker-snap "electron-installer-snap": { "createSnap.Options": "https://electron-userland.github.io/electron-installer-snap/master/interfaces/createsnap.snapcraftoptions.html", - "createSnap.SnapcraftConfig": "https://electron-userland.github.io/electron-installer-snap/master/modules/createsnap.html#customsnapcraftconfig" + "createSnap.SnapcraftConfig": "https://electron-userland.github.io/electron-installer-snap/master/modules/createsnap.html#customsnapcraftconfig", }, // @electron-forge/plugin-fuses "@electron/fuses": { - "FuseConfig": "https://packages.electronjs.org/fuses/v2.1.3/types/FuseConfig.html" + "FuseConfig": "https://packages.electronjs.org/fuses/v2.1.3/types/FuseConfig.html", }, // @electron-forge/plugin-webpack "webpack": { - "exports.Configuration": "https://webpack.js.org/configuration/" + "exports.Configuration": "https://webpack.js.org/configuration/", }, "webpack-dev-server": { - "Configuration": "https://webpack.js.org/configuration/dev-server/" + "Configuration": "https://webpack.js.org/configuration/dev-server/", }, // @electron-forge/publisher-gcs "@google-cloud/storage": { "ConfigMetadata": "https://docs.cloud.google.com/storage/docs/metadata", "StorageOptions": "https://docs.cloud.google.com/nodejs/docs/reference/storage/latest/storage/storageoptions", - "UploadOptions": "https://docs.cloud.google.com/nodejs/docs/reference/storage/latest/storage/uploadoptions" + "UploadOptions": "https://docs.cloud.google.com/nodejs/docs/reference/storage/latest/storage/uploadoptions", }, // @electron-forge/publisher-github "@octokit/core": { - "OctokitOptions": "https://github.com/octokit/core.js#options" + "OctokitOptions": "https://github.com/octokit/core.js#options", }, // @electron-forge/publisher-s3 "@aws-sdk/types": { - "Credentials": "https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-types/Interface/Credentials/" - } + "Credentials": "https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-types/Interface/Credentials/", + }, }, // Replaces previous *.base.json concept: it is // a per-package default documentation. It can still @@ -73,6 +73,6 @@ // better quality of documentation or upstream docs // are manually maintained and in risk of being // out-of-date. - "excludeExternals": true - } + "excludeExternals": true, + }, } From 7a5a12e27943238fd9f4b7497995f992d38dc0e3 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Mon, 20 Jul 2026 07:18:30 +0200 Subject: [PATCH 29/33] refactor(shared-types): convert `Forge*Options` to interfaces Make ForgeRebuildOptions and ForgePackagerOptions interfaces for improved documentation in TypeDoc. --- packages/utils/types/src/index.ts | 8 ++++---- packages/utils/types/typedoc.jsonc | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 packages/utils/types/typedoc.jsonc diff --git a/packages/utils/types/src/index.ts b/packages/utils/types/src/index.ts index 7ecc1c8b46..e3f5b256ff 100644 --- a/packages/utils/types/src/index.ts +++ b/packages/utils/types/src/index.ts @@ -126,14 +126,14 @@ export interface IForgePluginInterface { } /* eslint-enable @typescript-eslint/no-explicit-any */ -export type ForgeRebuildOptions = Omit< +export interface ForgeRebuildOptions extends Omit< RebuildOptions, 'buildPath' | 'electronVersion' | 'arch' ->; -export type ForgePackagerOptions = Omit< +> {} +export interface ForgePackagerOptions extends Omit< ElectronPackagerOptions, 'dir' | 'arch' | 'platform' | 'out' | 'electronVersion' ->; +> {} export interface ResolvedForgeConfig { /** * A string to uniquely identify artifacts of this build, will be appended diff --git a/packages/utils/types/typedoc.jsonc b/packages/utils/types/typedoc.jsonc new file mode 100644 index 0000000000..295a210546 --- /dev/null +++ b/packages/utils/types/typedoc.jsonc @@ -0,0 +1,4 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "excludeExternals": false, +} From 2eed105fbfdd4c855049ef13a10e6bda51832d23 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Wed, 29 Jul 2026 07:27:25 +0200 Subject: [PATCH 30/33] docs(shared-types): document some external types as `@inline` Even though there is no tag at upstream for that, these types were meant most likely to be introduced as inline to the interface. While upstream documents this mostly in the API docs in the interface comment, it is also possible to alter the resolution for them, so exact type is accessible by API consumers. --- packages/utils/types/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/utils/types/src/index.ts b/packages/utils/types/src/index.ts index e3f5b256ff..aeb4c3655a 100644 --- a/packages/utils/types/src/index.ts +++ b/packages/utils/types/src/index.ts @@ -126,6 +126,10 @@ export interface IForgePluginInterface { } /* eslint-enable @typescript-eslint/no-explicit-any */ +/** + * @inlineType RebuildMode + * @inlineType ModuleType + */ export interface ForgeRebuildOptions extends Omit< RebuildOptions, 'buildPath' | 'electronVersion' | 'arch' From 034f6ac8a122b0c7e3b0c32554fd5d05312e9e20 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Wed, 29 Jul 2026 08:00:34 +0200 Subject: [PATCH 31/33] fix(typedoc): document other missed external symbols --- typedoc.jsonc | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/typedoc.jsonc b/typedoc.jsonc index dc4896a13a..1c66f9a3b3 100644 --- a/typedoc.jsonc +++ b/typedoc.jsonc @@ -15,6 +15,25 @@ "OfficialArch": "https://packages.electronjs.org/packager/v20.0.3/types/OfficialArch.html", "OfficialPlatform": "https://packages.electronjs.org/packager/v20.0.3/types/OfficialPlatform.html", "Options": "https://packages.electronjs.org/packager/v20.0.3/interfaces/Options.html", + "HookFunction": "https://packages.electronjs.org/packager/v20.0.3/types/HookFunction.html", + "FinalizePackageTargetsHookFunction": "https://packages.electronjs.org/packager/v20.0.3/types/FinalizePackageTargetsHookFunction.html", + "IgnoreFunction": "https://packages.electronjs.org/packager/v20.0.3/types/IgnoreFunction.html", + "PackagerOsxSignOptions": "https://packages.electronjs.org/packager/v20.0.3/interfaces/PackagerOsxSignOptions.html", + "PackagerUniversalOptions": "https://packages.electronjs.org/packager/v20.0.3/interfaces/PackagerUniversalOptions.html", + "MacOSProtocol": "https://packages.electronjs.org/packager/v20.0.3/interfaces/MacOSProtocol.html", + "Win32MetadataOptions": "https://packages.electronjs.org/packager/v20.0.3/interfaces/Win32MetadataOptions.html", + "PackagerWindowsSignOptions": "https://packages.electronjs.org/packager/v20.0.3/interfaces/PackagerWindowsSignOptions.html", + // Ignored as not part of Forge for API consumers + "Options.dir": "#", + "Options.arch": "#", + "Options.platform": "#", + "Options.out": "#", + }, + "@electron/get": { + "ElectronDownloadRequestOptions": "https://packages.electronjs.org/get/v4.0.2/interfaces/ElectronDownloadRequestOptions.html" + }, + "@electron/asar": { + "CreateOptions": "https://packages.electronjs.org/asar/v4.0.1/types/CreateOptions.html" }, "@electron/rebuild": { "RebuildOptions": "https://packages.electronjs.org/rebuild/v4.2.0/interfaces/RebuildOptions.html", @@ -29,13 +48,37 @@ "ListrSimpleRendererValue": "https://listr2.kilic.dev/api/listr2/type-aliases/ListrSimpleRendererValue.html", }, "@types/node": { - "\"child_process\".ChildProcess": "https://nodejs.org/docs/latest/api/child_process.html#class-childprocess", + "\"child_process\".ChildProcess": "https://nodejs.org/docs/latest/api/child_process.htmll#child_processforkmodulepath-args-options", + // Ignored as part of Node.js docs (there's intentional link to Node docs instead in hierarchy) + "\"child_process\".fork": "#", + "\"child_process\".spawn": "#", + "\"child_process\".exec": "#", + "EventEmitter.defaultMaxListeners": "#", + }, + // @electron-forge/maker-dmg + "electron-installer-dmg": { + // Links to in-interface names + "__type.name": "#name", }, // @electron-forge/maker-snap "electron-installer-snap": { "createSnap.Options": "https://electron-userland.github.io/electron-installer-snap/master/interfaces/createsnap.snapcraftoptions.html", "createSnap.SnapcraftConfig": "https://electron-userland.github.io/electron-installer-snap/master/modules/createsnap.html#customsnapcraftconfig", }, + // @electron-forge/maker-squirrel + "@electron/windows-sign": { + "SignToolOptions": "https://packages.electronjs.org/windows-sign/v2.0.6/interfaces/SignToolOptions.html", + }, + "electron-winstaller": { + // Links to in-interface names + "SquirrelWindowsOptions.authors": "#authors", + "SquirrelWindowsOptions.certificateFile": "#certificatefile", + "SquirrelWindowsOptions.certificatePassword": "#certificatepassword", + "SquirrelWindowsOptions.remoteReleases": "#remotereleases", + "SquirrelWindowsOptions.owners": "#owners", + "SquirrelWindowsOptions.usePackageJson": "#usepackagejson", + "SquirrelWindowsOptions.windowsSign": "#windowssign", + }, // @electron-forge/plugin-fuses "@electron/fuses": { "FuseConfig": "https://packages.electronjs.org/fuses/v2.1.3/types/FuseConfig.html", From 747a0d1b5f85ee59c055390c48d288d3d7813dfd Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Wed, 29 Jul 2026 08:06:05 +0200 Subject: [PATCH 32/33] docs(plugin-webpack): document intentionally not exported types I intentionally did not add documentation to `default`, as I was unsure if documentation of entire class, with all relevant types for it, should land into the public API. --- packages/plugin/webpack/typedoc.jsonc | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 packages/plugin/webpack/typedoc.jsonc diff --git a/packages/plugin/webpack/typedoc.jsonc b/packages/plugin/webpack/typedoc.jsonc new file mode 100644 index 0000000000..40956abdd2 --- /dev/null +++ b/packages/plugin/webpack/typedoc.jsonc @@ -0,0 +1,9 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "intentionallyNotExported": [ + // This requires exposure of entire class / logic + // of WebpackConfig, and I am not even sure if + // this is even intended to be in public API + "src/WebpackConfig.ts:default" + ] +} From fc0048c9380575c70c7a64fac492125fd2918235 Mon Sep 17 00:00:00 2001 From: SpacingBat3 Date: Wed, 29 Jul 2026 12:54:05 +0200 Subject: [PATCH 33/33] docs: fix readmes' links for TypeDoc v27+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A follow-up to 45b64823b, which overhauls docs to point towards correct docs – previous ones were most likely outdated as well after the TypeDoc bump. See: https://github.com/TypeStrong/typedoc/commit/8e66abe59ffb388abd289bb0929d2dce1476bc27 See: 45b64823b6523c28c9a56e33cdb63b60fd7a29e6 --- packages/api/core/README.md | 2 +- packages/maker/appx/README.md | 2 +- packages/maker/deb/README.md | 2 +- packages/maker/dmg/README.md | 2 +- packages/maker/flatpak/README.md | 2 +- packages/maker/msix/README.md | 2 +- packages/maker/pkg/README.md | 2 +- packages/maker/rpm/README.md | 2 +- packages/maker/snap/README.md | 2 +- packages/maker/squirrel/README.md | 2 +- packages/maker/wix/README.md | 2 +- packages/maker/zip/README.md | 2 +- packages/publisher/bitbucket/README.md | 2 +- packages/publisher/electron-release-server/README.md | 2 +- packages/publisher/github/README.md | 2 +- packages/publisher/nucleus/README.md | 2 +- packages/publisher/s3/README.md | 2 +- packages/publisher/snapcraft/README.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/api/core/README.md b/packages/api/core/README.md index 8bff6ec21a..bfb499bd90 100644 --- a/packages/api/core/README.md +++ b/packages/api/core/README.md @@ -12,7 +12,7 @@ import { api } from '@electron-forge/core'; api.package(import.meta.dirname); ``` -The named export `api` has it's methods documented over at [ForgeAPI](https://js.electronforge.io/classes/_electron_forge_core.ForgeAPI.html). +The named export `api` has it's methods documented over at [ForgeAPI](https://js.electronforge.io/classes/_electron-forge_core.ForgeAPI.html). All the methods are async and expose the core forge methods, please note that all user-side configuration is still done through your forge config file or the "config.forge" section of your package.json. This API simply let's you call the methods in diff --git a/packages/maker/appx/README.md b/packages/maker/appx/README.md index 998b2c312e..157ba7fce7 100644 --- a/packages/maker/appx/README.md +++ b/packages/maker/appx/README.md @@ -4,7 +4,7 @@ You can only build the AppX target on Windows machines with the Windows 10 SDK installed. -Configuration options are documented in [`MakerAppXConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_appx.MakerAppXConfig.html). +Configuration options are documented in [`MakerAppXConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-appx.MakerAppXConfig.html). ```javascript { diff --git a/packages/maker/deb/README.md b/packages/maker/deb/README.md index 0b4d005889..efbae46d04 100644 --- a/packages/maker/deb/README.md +++ b/packages/maker/deb/README.md @@ -2,7 +2,7 @@ `@electron-forge/maker-deb` builds .deb packages, which are the standard package format for Debian-based Linux distributions such as Ubuntu. You can only build the deb target on Linux or macOS machines with the fakeroot and dpkg packages installed. -Configuration options are documented in [`MakerDebConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_deb.MakerDebConfigOptions.html). +Configuration options are documented in [`MakerDebConfigOptions`](https://js.electronforge.io/interfaces/_electron-forge_maker-dmg.MakerDMGConfig.html). ```javascript { diff --git a/packages/maker/dmg/README.md b/packages/maker/dmg/README.md index 360593408a..fbded7b6ff 100644 --- a/packages/maker/dmg/README.md +++ b/packages/maker/dmg/README.md @@ -2,7 +2,7 @@ `@electron-forge/maker-dmg` builds `.dmg` files, which are the standard format for sharing macOS apps. You can only build the DMG target on macOS machines. -Configuration options are documented in [`MakerDMGConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_dmg.MakerDMGConfig.html). +Configuration options are documented in [`MakerDMGConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-dmg.MakerDMGConfig.html). ```javascript { diff --git a/packages/maker/flatpak/README.md b/packages/maker/flatpak/README.md index 880ae02860..386e28387d 100644 --- a/packages/maker/flatpak/README.md +++ b/packages/maker/flatpak/README.md @@ -4,7 +4,7 @@ You can only build the Flatpak target if you have `flatpak`, `flatpak-builder`, and `eu-strip` _\(usually part of the `elfutils` package\)_ installed on your system. -Configuration options are documented in [`MakerFlatpakOptionsConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_flatpak.MakerFlatpakConfigOptions.html). +Configuration options are documented in [`MakerFlatpakOptionsConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-flatpak.MakerFlatpakConfigOptions.html). ```javascript { diff --git a/packages/maker/msix/README.md b/packages/maker/msix/README.md index c2ecbca0df..6868430588 100644 --- a/packages/maker/msix/README.md +++ b/packages/maker/msix/README.md @@ -8,7 +8,7 @@ You can only build the MSIX target on Windows machines with the Windows 10 SDK installed. -Configuration options are documented in [`MakerMSIXConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_msix.MakerMSIXConfig.html). +Configuration options are documented in [`MakerMSIXConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-msix.MakerMSIXConfig.html). maker-msix utilizes @electron/windows-sign via the `windowsSignOptions` property. See the [windows-sign documentation](https://github.com/electron/windows-sign/blob/main/README.md) for details. diff --git a/packages/maker/pkg/README.md b/packages/maker/pkg/README.md index ffb05ada74..0f50fd7738 100644 --- a/packages/maker/pkg/README.md +++ b/packages/maker/pkg/README.md @@ -2,7 +2,7 @@ `@electron-forge/maker-pkg` builds `.pkg` files for macOS. These are used to upload your application to the Mac App Store or just as an alternate distribution method for macOS users. You can only build the Pkg target on macOS machines while targeting the `darwin` or `mas` platforms. -Configuration options are documented in [`MakerPkgConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_pkg.MakerPKGConfig.html). +Configuration options are documented in [`MakerPkgConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-pkg.MakerPKGConfig.html). ```javascript { diff --git a/packages/maker/rpm/README.md b/packages/maker/rpm/README.md index b2507fb143..010a369884 100644 --- a/packages/maker/rpm/README.md +++ b/packages/maker/rpm/README.md @@ -4,7 +4,7 @@ You can only build the RPM target on Linux machines with the `rpm` or `rpm-build` packages installed. -Configuration options are documented in [`MakerRpmConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_rpm.MakerRpmConfigOptions.html). +Configuration options are documented in [`MakerRpmConfigOptions`](https://js.electronforge.io/interfaces/_electron-forge_maker-rpm.MakerRpmConfigOptions.html). ```javascript { diff --git a/packages/maker/snap/README.md b/packages/maker/snap/README.md index 116cf724ad..b594b9bec4 100644 --- a/packages/maker/snap/README.md +++ b/packages/maker/snap/README.md @@ -4,7 +4,7 @@ You can only build the Snapcraft target on Linux systems with the `snapcraft` package installed. -Configuration options are documented in [`MakerSnapConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_snap.MakerSnapConfig.html). +Configuration options are documented in [`MakerSnapConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-snap.MakerSnapConfig.html). ```javascript { diff --git a/packages/maker/squirrel/README.md b/packages/maker/squirrel/README.md index 60d5d69c80..c56df8812d 100644 --- a/packages/maker/squirrel/README.md +++ b/packages/maker/squirrel/README.md @@ -7,7 +7,7 @@ Pre-requisites: * Windows machine * Linux machine with `mono` and `wine` installed. -Configuration options are documented in [`MakerSquirrelConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_squirrel.MakerSquirrelConfig.html). +Configuration options are documented in [`MakerSquirrelConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-squirrel.MakerSquirrelConfig.html). ```javascript { diff --git a/packages/maker/wix/README.md b/packages/maker/wix/README.md index 82e458c702..8c0ad98e3e 100644 --- a/packages/maker/wix/README.md +++ b/packages/maker/wix/README.md @@ -7,7 +7,7 @@ Pre-requisites: * `light` and `candle` installed from [the WiX toolkit](https://github.com/felixrieseberg/electron-wix-msi#prerequisites). -Configuration options are documented in [`MakerWixConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_wix.MakerWixConfig.html). +Configuration options are documented in [`MakerWixConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-wix.MakerWixConfig.html). ```javascript { diff --git a/packages/maker/zip/README.md b/packages/maker/zip/README.md index fdd9b2bc95..7f65e33223 100644 --- a/packages/maker/zip/README.md +++ b/packages/maker/zip/README.md @@ -2,7 +2,7 @@ `@electron-forge/maker-zip` builds basic `.zip` files containing your packaged application. There are no platform specific dependencies for using this maker and it will run on any platform. -Note: There are no configuration options for this target. +Configuration options are documented in [`MakerZIPConfig`](https://js.electronforge.io/interfaces/_electron-forge_maker-zip.MakerZIPConfig.html). ```javascript { diff --git a/packages/publisher/bitbucket/README.md b/packages/publisher/bitbucket/README.md index 9c74c55b57..9e4820ec69 100644 --- a/packages/publisher/bitbucket/README.md +++ b/packages/publisher/bitbucket/README.md @@ -4,7 +4,7 @@ This publish target is for Bitbucket Cloud only and will not work with self hosted Bitbucket Server instances. -Configuration options are documented in [`PublisherBitbucketConfig`](https://js.electronforge.io/interfaces/_electron_forge_publisher_bitbucket.PublisherBitbucketConfig.html). +Configuration options are documented in [`PublisherBitbucketConfig`](https://js.electronforge.io/interfaces/_electron-forge_publisher-bitbucket.PublisherBitbucketConfig.html). ```javascript title=forge.config.js module.exports = { diff --git a/packages/publisher/electron-release-server/README.md b/packages/publisher/electron-release-server/README.md index 4df46df78b..76eea0a511 100644 --- a/packages/publisher/electron-release-server/README.md +++ b/packages/publisher/electron-release-server/README.md @@ -4,7 +4,7 @@ Please note that Electron Release Server is a community powered project and is not associated with Electron Forge or the Electron project directly. -Configuration options are documented in [`PublisherERSConfig`](https://js.electronforge.io/interfaces/_electron_forge_publisher_electron_release_server.PublisherERSConfig.html). +Configuration options are documented in [`PublisherERSConfig`](https://js.electronforge.io/interfaces/_electron-forge_publisher-electron-release-server.PublisherERSConfig.html). ```javascript title=forge.config.js module.exports = { diff --git a/packages/publisher/github/README.md b/packages/publisher/github/README.md index a6548cb780..45ad5e2257 100644 --- a/packages/publisher/github/README.md +++ b/packages/publisher/github/README.md @@ -2,7 +2,7 @@ `@electron-forge/publisher-github` publishes all your artifacts to GitHub releases, this allows your users to download the files straight from your repository or if your repository is open source you can use [update.electronjs.org](https://github.com/electron/update.electronjs.org) and get a free hosted update service. -Configuration options are documented in [`PublisherGitHubConfig`](https://js.electronforge.io/interfaces/_electron_forge_publisher_github.PublisherGitHubConfig.html). +Configuration options are documented in [`PublisherGitHubConfig`](https://js.electronforge.io/interfaces/_electron-forge_publisher-github.PublisherGitHubConfig.html). ```javascript title=forge.config.js module.exports = { diff --git a/packages/publisher/nucleus/README.md b/packages/publisher/nucleus/README.md index e891f34221..e370685418 100644 --- a/packages/publisher/nucleus/README.md +++ b/packages/publisher/nucleus/README.md @@ -5,7 +5,7 @@ Check out the README at [`atlassian/nucleus`](https://github.com/atlassian/nucleus) for more information on this project. Configuration options are documented in [`Publisher -NucleusConfig](https://js.electronforge.io/interfaces/_electron_forge_publisher_nucleus.PublisherNucleusConfig.html). +NucleusConfig](https://js.electronforge.io/interfaces/_electron-forge_publisher-nucleus.PublisherNucleusConfig.html). ```javascript title=forge.config.js module.exports = { diff --git a/packages/publisher/s3/README.md b/packages/publisher/s3/README.md index 85b237673f..84e3ba7a87 100644 --- a/packages/publisher/s3/README.md +++ b/packages/publisher/s3/README.md @@ -8,7 +8,7 @@ By default, all files are positioned at the following key: ${config.folder || appVersion}/${artifactName} ``` -Configuration options are documented in [PublisherS3Config](https://js.electronforge.io/interfaces/_electron_forge_publisher_s3.PublisherS3Config.html). +Configuration options are documented in [PublisherS3Config](https://js.electronforge.io/interfaces/_electron-forge_publisher-s3.PublisherS3Config.html). ```javascript title=forge.config.js module.exports = { diff --git a/packages/publisher/snapcraft/README.md b/packages/publisher/snapcraft/README.md index d2c45979a9..b90944c234 100644 --- a/packages/publisher/snapcraft/README.md +++ b/packages/publisher/snapcraft/README.md @@ -4,7 +4,7 @@ The Snapcraft target publishes your .snap artifacts to the Snap Store. All confi This target requires that the system has the snapcraft utility installed. -Configuration options are documented in [PublisherSnapConfig](https://js.electronforge.io/interfaces/_electron_forge_publisher_snapcraft.PublisherSnapcraftConfig.html). +Configuration options are documented in [PublisherSnapConfig](https://js.electronforge.io/interfaces/_electron-forge_publisher-snapcraft.PublisherSnapcraftConfig.html). ```javascript title=forge.config.js module.exports = {