diff --git a/docs/Auto Update.md b/docs/Auto Update.md
index 093b08a3ad1..0c18a89331c 100644
--- a/docs/Auto Update.md
+++ b/docs/Auto Update.md
@@ -27,7 +27,8 @@ Simplified auto-update is not supported for Squirrel.Windows.
### Examples
* A [complete example](https://github.com/iffy/electron-updater-example) showing how to use.
-* An [encapsulated manual update via menu](https://github.com/electron-userland/electron-builder/blob/master/docs/encapsulated%20manual%20update%20via%20menu.js).
+* [Example in Typescript](https://github.com/develar/onshape-desktop-shell/blob/master/src/AppUpdater.ts) using system notifications.
+* An [encapsulated manual update via menu](https://github.com/electron-userland/electron-builder/blob/master/docs/encapsulated%20manual%20update%20via%20menu.js).
## File Generated and Uploaded in Addition
@@ -38,7 +39,7 @@ Simplified auto-update is not supported for Squirrel.Windows.
You can use a private repository for updates with electron-updater by setting the `GH_TOKEN` environment variable (on user machine) and `private` option.
If `GH_TOKEN` is set, electron-updater will use the GitHub API for updates allowing private repositories to work.
-Only for [very special](https://github.com/electron-userland/electron-builder/issues/1393#issuecomment-288191885) cases — not intended and not suitable for all users.
+Only for [very special](https://github.com/electron-userland/electron-builder/issues/1393#issuecomment-288191885) cases — not intended and not suitable for all users. Doesn't work [on macOs](https://github.com/electron-userland/electron-builder/issues/1370).
**Note:** The GitHub API currently has a rate limit of 5000 requests per user per hour. An update check uses up to 3 requests per check.
@@ -132,8 +133,8 @@ Emitted on progress. Only supported over Windows build, since `Squirrel.Mac` [do
| Name | Type |
| --- | --- |
-| **name**| string
|
-| **url**| string
|
+| name| string
|
+| url| string
|
| sha2| string
|
| headers| Object
|
@@ -145,7 +146,7 @@ Emitted on progress. Only supported over Windows build, since `Squirrel.Mac` [do
| Name | Type |
| --- | --- |
-| **versionInfo**| [VersionInfo](Publishing-Artifacts#VersionInfo)
|
+| versionInfo| [VersionInfo](Publishing-Artifacts#VersionInfo)
|
| fileInfo| [FileInfo](#FileInfo)
|
| downloadPromise| Promise<any>
\| null
|
| cancellationToken| [CancellationToken](Developer-API#CancellationToken)
|
@@ -154,6 +155,12 @@ Emitted on progress. Only supported over Windows build, since `Squirrel.Mac` [do
### Provider
**Kind**: class of [electron-updater/out/api](#module_electron-updater/out/api)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| requestHeaders| [RequestHeaders](Developer-API#RequestHeaders)
\| null
|
+
* [.Provider](#Provider)
* [`.getLatestVersion()`](#module_electron-updater/out/api.Provider+getLatestVersion) ⇒ Promise<module:electron-updater/out/api.T>
@@ -317,6 +324,18 @@ Emitted on progress. Only supported over Windows build, since `Squirrel.Mac` [do
### AppUpdater ⇐ internal:EventEmitter
**Kind**: class of [electron-updater/out/AppUpdater](#module_electron-updater/out/AppUpdater)
**Extends**: internal:EventEmitter
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
+| autoDownload = true
| boolean
| Automatically download an update when it is found. |
+| requestHeaders| [RequestHeaders](Developer-API#RequestHeaders)
\| null
| The request headers. |
+| logger = (<any>global).__test_app ? null : console
| [Logger](#Logger)
\| null
| The logger. You can pass [electron-log](https://github.com/megahertz/electron-log), [winston](https://github.com/winstonjs/winston) or another logger with the following interface: `{ info(), warn(), error() }`. Set it to `null` if you would like to disable a logging feature. |
+| signals = new UpdaterSignal(this)
| [UpdaterSignal](#UpdaterSignal)
| For type safety you can use signals, e.g. `autoUpdater.signals.updateDownloaded(() => {})` instead of `autoUpdater.on('update-available', () => {})` |
+| updateAvailable| boolean
| |
+| app| Electron:App
| |
+| versionInfo| [VersionInfo](Publishing-Artifacts#VersionInfo)
\| null
| |
+
* [.AppUpdater](#AppUpdater) ⇐ internal:EventEmitter
* [`.checkForUpdates()`](#module_electron-updater/out/AppUpdater.AppUpdater+checkForUpdates) ⇒ Promise<[UpdateCheckResult](#UpdateCheckResult)>
diff --git a/docs/Developer API.md b/docs/Developer API.md
index 7660ea95a14..e6c9ea6c228 100644
--- a/docs/Developer API.md
+++ b/docs/Developer API.md
@@ -131,6 +131,17 @@
### AppInfo
**Kind**: class of [electron-builder/out/appInfo](#module_electron-builder/out/appInfo)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| description = "smarten(this.metadata.description || \"\")"
| string
|
+| version| string
|
+| buildNumber| string
|
+| buildVersion| string
|
+| productName| string
|
+| productFilename| string
|
+
#### `appInfo.computePackageUrl()` ⇒ Promise< \| string>
@@ -248,6 +259,17 @@
### Node
**Kind**: class of [electron-builder/out/asar](#module_electron-builder/out/asar)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| files| Object<string, any>
|
+| unpacked| boolean
|
+| **size**| number
|
+| **offset**| number
|
+| executable| boolean
|
+| link| string
|
+
### `electron-builder/out/asar.readAsar(archive)` ⇒ Promise<[AsarFilesystem](#AsarFilesystem)>
@@ -439,9 +461,9 @@
* [`.addAllPattern()`](#module_electron-builder/out/fileMatcher.FileMatcher+addAllPattern)
* [`.addPattern(pattern)`](#module_electron-builder/out/fileMatcher.FileMatcher+addPattern)
* [`.computeParsedPatterns(result, fromDir)`](#module_electron-builder/out/fileMatcher.FileMatcher+computeParsedPatterns)
- * [`.containsOnlyIgnore()`](#module_electron-builder/out/fileMatcher.FileMatcher+containsOnlyIgnore) ⇒ "undefined"
\| "undefined"
+ * [`.containsOnlyIgnore()`](#module_electron-builder/out/fileMatcher.FileMatcher+containsOnlyIgnore) ⇒ boolean
* [`.createFilter(ignoreFiles, rawFilter, excludePatterns)`](#module_electron-builder/out/fileMatcher.FileMatcher+createFilter) ⇒ module:electron-builder-util/out/fs.__type
- * [`.isEmpty()`](#module_electron-builder/out/fileMatcher.FileMatcher+isEmpty) ⇒ "undefined"
\| "undefined"
+ * [`.isEmpty()`](#module_electron-builder/out/fileMatcher.FileMatcher+isEmpty) ⇒ boolean
* [`.copyFiles(patterns)`](#module_electron-builder/out/fileMatcher.copyFiles) ⇒ Promise<any>
* [`.createFileMatcher(info, appDir, resourcesPath, macroExpander, platformSpecificBuildOptions)`](#module_electron-builder/out/fileMatcher.createFileMatcher) ⇒ [FileMatcher](#FileMatcher)
* [`.getFileMatchers(config, name, defaultSrc, defaultDest, allowAdvancedMatching, macroExpander, customBuildOptions)`](#module_electron-builder/out/fileMatcher.getFileMatchers) ⇒ null
\| Array
@@ -450,14 +472,22 @@
### FileMatcher
**Kind**: class of [electron-builder/out/fileMatcher](#module_electron-builder/out/fileMatcher)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| from| string
|
+| to| string
|
+| patterns| Array<string>
|
+
* [.FileMatcher](#FileMatcher)
* [`.addAllPattern()`](#module_electron-builder/out/fileMatcher.FileMatcher+addAllPattern)
* [`.addPattern(pattern)`](#module_electron-builder/out/fileMatcher.FileMatcher+addPattern)
* [`.computeParsedPatterns(result, fromDir)`](#module_electron-builder/out/fileMatcher.FileMatcher+computeParsedPatterns)
- * [`.containsOnlyIgnore()`](#module_electron-builder/out/fileMatcher.FileMatcher+containsOnlyIgnore) ⇒ "undefined"
\| "undefined"
+ * [`.containsOnlyIgnore()`](#module_electron-builder/out/fileMatcher.FileMatcher+containsOnlyIgnore) ⇒ boolean
* [`.createFilter(ignoreFiles, rawFilter, excludePatterns)`](#module_electron-builder/out/fileMatcher.FileMatcher+createFilter) ⇒ module:electron-builder-util/out/fs.__type
- * [`.isEmpty()`](#module_electron-builder/out/fileMatcher.FileMatcher+isEmpty) ⇒ "undefined"
\| "undefined"
+ * [`.isEmpty()`](#module_electron-builder/out/fileMatcher.FileMatcher+isEmpty) ⇒ boolean
@@ -484,7 +514,7 @@
-#### `fileMatcher.containsOnlyIgnore()` ⇒ "undefined"
\| "undefined"
+#### `fileMatcher.containsOnlyIgnore()` ⇒ boolean
**Kind**: instance method of [FileMatcher](#FileMatcher)
@@ -499,7 +529,7 @@
-#### `fileMatcher.isEmpty()` ⇒ "undefined"
\| "undefined"
+#### `fileMatcher.isEmpty()` ⇒ boolean
**Kind**: instance method of [FileMatcher](#FileMatcher)
@@ -548,7 +578,7 @@
* [`.saveConfiguration()`](#module_electron-builder/out/fileTransformer.CompilerHost+saveConfiguration) ⇒ Promise<any>
* [`.createElectronCompilerHost(projectDir, cacheDir)`](#module_electron-builder/out/fileTransformer.createElectronCompilerHost) ⇒ Promise<[CompilerHost](#CompilerHost)>
* [`.createTransformer(srcDir, extraMetadata)`](#module_electron-builder/out/fileTransformer.createTransformer) ⇒ Promise<module:electron-builder-util/out/fs.__type>
- * [`.isElectronCompileUsed(info)`](#module_electron-builder/out/fileTransformer.isElectronCompileUsed) ⇒ "undefined"
\| "undefined"
+ * [`.isElectronCompileUsed(info)`](#module_electron-builder/out/fileTransformer.isElectronCompileUsed) ⇒ boolean
@@ -594,7 +624,7 @@
-### `electron-builder/out/fileTransformer.isElectronCompileUsed(info)` ⇒ "undefined"
\| "undefined"
+### `electron-builder/out/fileTransformer.isElectronCompileUsed(info)` ⇒ boolean
**Kind**: method of [electron-builder/out/fileTransformer](#module_electron-builder/out/fileTransformer)
| Param | Type |
@@ -633,6 +663,12 @@
### LinuxPackager ⇐ [PlatformPackager](#PlatformPackager)
**Kind**: class of [electron-builder/out/linuxPackager](#module_electron-builder/out/linuxPackager)
**Extends**: [PlatformPackager](#PlatformPackager)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| executableName| string
|
+
* [.LinuxPackager](#LinuxPackager) ⇐ [PlatformPackager](#PlatformPackager)
* [`.createTargets(targets, mapper, cleanupTasks)`](#module_electron-builder/out/linuxPackager.LinuxPackager+createTargets)
@@ -891,6 +927,12 @@
### MacPackager ⇐ [PlatformPackager](#PlatformPackager)
**Kind**: class of [electron-builder/out/macPackager](#module_electron-builder/out/macPackager)
**Extends**: [PlatformPackager](#PlatformPackager)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| codeSigningInfo| Promise<[CodeSigningInfo](#CodeSigningInfo)>
|
+
* [.MacPackager](#MacPackager) ⇐ [PlatformPackager](#PlatformPackager)
* [`.createTargets(targets, mapper, cleanupTasks)`](#module_electron-builder/out/macPackager.MacPackager+createTargets)
@@ -1247,6 +1289,17 @@
### PlatformPackager
**Kind**: class of [electron-builder/out/platformPackager](#module_electron-builder/out/platformPackager)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| packagerOptions| [PackagerOptions](Options#PackagerOptions)
|
+| projectDir| string
|
+| buildResourcesDir| string
|
+| config| [Config](Options#Config)
|
+| platformSpecificBuildOptions| module:electron-builder/out/platformPackager.DC
|
+| appInfo| [AppInfo](#AppInfo)
|
+
* [.PlatformPackager](#PlatformPackager)
* [`.createTargets(targets, mapper, cleanupTasks)`](#module_electron-builder/out/platformPackager.PlatformPackager+createTargets)
@@ -1497,6 +1550,13 @@
### PublishManager ⇐ [PublishContext](#PublishContext)
**Kind**: class of [electron-builder/out/publish/PublishManager](#module_electron-builder/out/publish/PublishManager)
**Extends**: [PublishContext](#PublishContext)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| publishTasks=| Array<Promise<any>>
|
+| progress = (<NodeJS.WritableStream>process.stdout).isTTY ? new MultiProgress() : null
| null
\| [MultiProgress](#MultiProgress)
|
+
* [.PublishManager](#PublishManager) ⇐ [PublishContext](#PublishContext)
* [`.awaitTasks()`](#module_electron-builder/out/publish/PublishManager.PublishManager+awaitTasks) ⇒ Promise<void>
@@ -1639,6 +1699,12 @@
### AppImageTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/appImage](#module_electron-builder/out/targets/appImage)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options = Object.assign({}, this.packager.platformSpecificBuildOptions, (<any>this.packager.config)[this.name])
| [LinuxBuildOptions](Options#LinuxBuildOptions)
|
+
* [.AppImageTarget](#AppImageTarget) ⇐ [Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder/out/targets/appImage.AppImageTarget+build) ⇒ Promise<any>
@@ -1673,6 +1739,12 @@
### AppXTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/appx](#module_electron-builder/out/targets/appx)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options = Object.assign({}, this.packager.platformSpecificBuildOptions, this.packager.config.appx)
| [AppXOptions](Options#AppXOptions)
|
+
* [.AppXTarget](#AppXTarget) ⇐ [Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder/out/targets/appx.AppXTarget+build) ⇒ Promise<any>
@@ -1741,6 +1813,12 @@
### ArchiveTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/ArchiveTarget](#module_electron-builder/out/targets/ArchiveTarget)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options = (<any>this.packager.config)[this.name]
| any
|
+
* [.ArchiveTarget](#ArchiveTarget) ⇐ [Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder/out/targets/ArchiveTarget.ArchiveTarget+build) ⇒ Promise<any>
@@ -1778,6 +1856,12 @@
### DmgTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/dmg](#module_electron-builder/out/targets/dmg)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options = this.packager.config.dmg
| undefined
\| null
\| [DmgOptions](Options#DmgOptions)
|
+
* [.DmgTarget](#DmgTarget) ⇐ [Target](#Target)
* [`.build(appPath, arch)`](#module_electron-builder/out/targets/dmg.DmgTarget+build) ⇒ Promise<void>
@@ -1838,6 +1922,12 @@
### FpmTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/fpm](#module_electron-builder/out/targets/fpm)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options = Object.assign({}, this.packager.platformSpecificBuildOptions, (<any>this.packager.config)[this.name])
| any
|
+
* [.FpmTarget](#FpmTarget) ⇐ [Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder/out/targets/fpm.FpmTarget+build) ⇒ Promise<any>
@@ -1871,6 +1961,13 @@
### LinuxTargetHelper
**Kind**: class of [electron-builder/out/targets/LinuxTargetHelper](#module_electron-builder/out/targets/LinuxTargetHelper)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| icons| Promise<Array<Array<string>>>
|
+| maxIconPath| string
\| null
|
+
* [.LinuxTargetHelper](#LinuxTargetHelper)
* [`.computeDesktopEntry(platformSpecificBuildOptions, exec, destination, extra)`](#module_electron-builder/out/targets/LinuxTargetHelper.LinuxTargetHelper+computeDesktopEntry) ⇒ Promise<string>
@@ -1913,6 +2010,12 @@
### NsisTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/nsis](#module_electron-builder/out/targets/nsis)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options| [NsisOptions](Options#NsisOptions)
|
+
* [.NsisTarget](#NsisTarget) ⇐ [Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder/out/targets/nsis.NsisTarget+build) ⇒ Promise<void>
@@ -1967,6 +2070,12 @@
### PkgTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/pkg](#module_electron-builder/out/targets/pkg)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options = this.packager.config.pkg || Object.create(null)
| [PkgOptions](Options#PkgOptions)
|
+
* [.PkgTarget](#PkgTarget) ⇐ [Target](#Target)
* [`.build(appPath, arch)`](#module_electron-builder/out/targets/pkg.PkgTarget+build) ⇒ Promise<any>
@@ -2011,6 +2120,12 @@
### SnapTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/snap](#module_electron-builder/out/targets/snap)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options = Object.assign({}, this.packager.platformSpecificBuildOptions, (<any>this.packager.config)[this.name])
| [SnapOptions](Options#SnapOptions)
|
+
* [.SnapTarget](#SnapTarget) ⇐ [Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder/out/targets/snap.SnapTarget+build) ⇒ Promise<any>
@@ -2048,6 +2163,12 @@
### NoOpTarget ⇐ [Target](#Target)
**Kind**: class of [electron-builder/out/targets/targetFactory](#module_electron-builder/out/targets/targetFactory)
**Extends**: [Target](#Target)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| options| null
|
+
* [.NoOpTarget](#NoOpTarget) ⇐ [Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder/out/targets/targetFactory.NoOpTarget+build) ⇒ Promise<any>
@@ -2144,7 +2265,7 @@
* [electron-builder/out/util/filter](#module_electron-builder/out/util/filter)
* [`.createFilter(src, patterns, ignoreFiles, rawFilter, excludePatterns)`](#module_electron-builder/out/util/filter.createFilter) ⇒ module:electron-builder-util/out/fs.__type
- * [`.hasMagic(pattern)`](#module_electron-builder/out/util/filter.hasMagic) ⇒ "undefined"
\| "undefined"
+ * [`.hasMagic(pattern)`](#module_electron-builder/out/util/filter.hasMagic) ⇒ boolean
@@ -2161,7 +2282,7 @@
-### `electron-builder/out/util/filter.hasMagic(pattern)` ⇒ "undefined"
\| "undefined"
+### `electron-builder/out/util/filter.hasMagic(pattern)` ⇒ boolean
**Kind**: method of [electron-builder/out/util/filter](#module_electron-builder/out/util/filter)
| Param | Type |
@@ -2259,12 +2380,12 @@
| Name | Type |
| --- | --- |
-| **path**| string
|
+| path| string
|
| cert| string
\| null
|
| name| string
\| null
|
| password| string
\| null
|
| site| string
\| null
|
-| **options**| [WinBuildOptions](Options#WinBuildOptions)
|
+| options| [WinBuildOptions](Options#WinBuildOptions)
|
@@ -2318,6 +2439,73 @@
### WinPackager ⇐ [PlatformPackager](#PlatformPackager)
**Kind**: class of [electron-builder/out/winPackager](#module_electron-builder/out/winPackager)
**Extends**: [PlatformPackager](#PlatformPackager)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| **[cscInfo=new Lazy<FileCodeSigningInfo | null>(() => {
+ const platformSpecificBuildOptions = this.platformSpecificBuildOptions
+ const subjectName = platformSpecificBuildOptions.certificateSubjectName
+ if (subjectName != null) {
+ return BluebirdPromise.resolve({subjectName})
+ }
+
+ const certificateSha1 = platformSpecificBuildOptions.certificateSha1
+ if (certificateSha1 != null) {
+ return BluebirdPromise.resolve({certificateSha1})
+ }
+
+ const certificateFile = platformSpecificBuildOptions.certificateFile
+ if (certificateFile != null) {
+ const certificatePassword = this.getCscPassword()
+ return BluebirdPromise.resolve({
+ file: certificateFile,
+ password: certificatePassword == null ? null : certificatePassword.trim(),
+ })
+ }
+ else {
+ const cscLink = process.env.WIN_CSC_LINK || this.packagerOptions.cscLink
+ if (cscLink != null) {
+ return downloadCertificate(cscLink, this.info.tempDirManager)
+ .then(path => {
+ return {
+ file: path,
+ password: this.getCscPassword(),
+ }
+ })
+ }
+ else {
+ return BluebirdPromise.resolve(null)
+ }
+ }
+ })]**| [Lazy](#Lazy)< \| [FileCodeSigningInfo](#FileCodeSigningInfo)>
|
+| **[computedPublisherName=new Lazy<Array<string> | null>(async () => {
+ let publisherName = (<WinBuildOptions>this.platformSpecificBuildOptions).publisherName
+ if (publisherName === null) {
+ return null
+ }
+
+ const cscInfo = await this.cscInfo.value
+ if (cscInfo == null) {
+ return null
+ }
+
+ if (publisherName == null && cscInfo.file != null) {
+ try {
+ // https://github.com/digitalbazaar/forge/issues/338#issuecomment-164831585
+ const p12Asn1 = forge.asn1.fromDer(await readFile(cscInfo.file, "binary"), false)
+ const p12 = (<any>forge).pkcs12.pkcs12FromAsn1(p12Asn1, false, cscInfo.password)
+ const bagType = (<any>forge.pki.oids).certBag
+ publisherName = p12.getBags({bagType: bagType})[bagType][0].cert.subject.getField("CN").value
+ }
+ catch (e) {
+ throw new Error(`Cannot extract publisher name from code signing certificate, please file issue. As workaround, set win.publisherName: ${e.stack || e}`)
+ }
+ }
+
+ return publisherName == null ? null : asArray(publisherName)
+ })]**| [Lazy](#Lazy)< \| Array>
|
+
* [.WinPackager](#WinPackager) ⇐ [PlatformPackager](#PlatformPackager)
* [`.createTargets(targets, mapper, cleanupTasks)`](#module_electron-builder/out/winPackager.WinPackager+createTargets)
@@ -2674,7 +2862,7 @@
| Name | Type |
| --- | --- |
-| **name**| string
|
+| name| string
|
| email| string
|
@@ -2685,10 +2873,10 @@
| Name | Type |
| --- | --- |
-| **appDir**| string
|
-| **electronVersion**| string
|
-| **platform**| [Platform](#Platform)
|
-| **arch**| string
|
+| appDir| string
|
+| electronVersion| string
|
+| platform| [Platform](#Platform)
|
+| arch| string
|
@@ -2704,7 +2892,7 @@ On Windows works only if [nsis.perMachine](https://github.com/electron-userland/
| Name | Type | Description |
| --- | --- | --- |
-| **ext**| string
\| Array<string>
| The extension (minus the leading period). e.g. `png`. |
+| ext| string
\| Array<string>
| The extension (minus the leading period). e.g. `png`. |
| name| string
\| null
| The name. e.g. `PNG`. Defaults to `ext`. |
| description| string
\| null
| *windows-only.* The description. |
| icon| string
\| null
| The path to icon (`.icns` for MacOS and `.ico` for Windows), relative to `build` (build resources directory). Defaults to `${firstExt}.icns`/`${firstExt}.ico` (if several extensions specified, first is used) or to application icon. |
@@ -2767,9 +2955,9 @@ Please note — on macOS [you need to register an `open-url` event handler](http
| Name | Type | Description |
| --- | --- | --- |
-| **name**| string
| The name. e.g. `IRC server URL`. |
+| name| string
| The name. e.g. `IRC server URL`. |
| role = Editor
| "Editor"
\| "Viewer"
\| "Shell"
\| "None"
| *macOS-only* The app’s role with respect to the type. |
-| **schemes**| Array<string>
| The schemes. e.g. `["irc", "ircs"]`. |
+| schemes| Array<string>
| The schemes. e.g. `["irc", "ircs"]`. |
@@ -2779,7 +2967,7 @@ Please note — on macOS [you need to register an `open-url` event handler](http
| Name | Type |
| --- | --- |
-| **url**| string
|
+| url| string
|
@@ -2802,7 +2990,7 @@ Please note — on macOS [you need to register an `open-url` event handler](http
| Name | Type | Description |
| --- | --- | --- |
-| **target**| string
| The target name. e.g. `snap`. |
+| target| string
| The target name. e.g. `snap`. |
| arch| Array<"x64" \| "ia32" \| "armv7l">
\| string
| The arch or list of archs. |
@@ -2821,6 +3009,15 @@ Please note — on macOS [you need to register an `open-url` event handler](http
### Platform
**Kind**: class of [electron-builder-core](#module_electron-builder-core)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| MAC = new Platform("mac", "mac", "darwin")
| [Platform](#Platform)
|
+| LINUX = new Platform("linux", "linux", "linux")
| [Platform](#Platform)
|
+| WINDOWS = new Platform("windows", "win", "win32")
| [Platform](#Platform)
|
+| OSX = Platform.MAC
| [Platform](#Platform)
|
+
* [.Platform](#Platform)
* [`.createTarget(type, archs)`](#module_electron-builder-core.Platform+createTarget) ⇒ Map<[Platform](#Platform) \| Map<[Arch](#Arch) \| Array<string>>>
@@ -2859,6 +3056,13 @@ Please note — on macOS [you need to register an `open-url` event handler](http
### Target
**Kind**: class of [electron-builder-core](#module_electron-builder-core)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| outDir| string
|
+| options| [TargetSpecificOptions](#TargetSpecificOptions)
\| null
\| undefined
|
+
* [.Target](#Target)
* [`.build(appOutDir, arch)`](#module_electron-builder-core.Target+build) ⇒ Promise<any>
@@ -2952,13 +3156,23 @@ Please note — on macOS [you need to register an `open-url` event handler](http
| Name | Type |
| --- | --- |
-| **name**| string
|
-| **package**| string
|
+| name| string
|
+| package| string
|
### BintrayClient
**Kind**: class of [electron-builder-http/out/bintray](#module_electron-builder-http/out/bintray)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| auth| string
\| null
|
+| repo| string
|
+| owner| string
|
+| user| string
|
+| packageName| string
|
+
* [.BintrayClient](#BintrayClient)
* [`.createVersion(version)`](#module_electron-builder-http/out/bintray.BintrayClient+createVersion) ⇒ Promise<any>
@@ -3149,7 +3363,7 @@ Please note — on macOS [you need to register an `open-url` event handler](http
| headers| [RequestHeaders](#RequestHeaders)
\| null
|
| skipDirCreation| boolean
|
| sha2| string
\| null
|
-| **cancellationToken**| [CancellationToken](#CancellationToken)
|
+| cancellationToken| [CancellationToken](#CancellationToken)
|
@@ -3195,6 +3409,13 @@ Please note — on macOS [you need to register an `open-url` event handler](http
### HttpExecutor
**Kind**: class of [electron-builder-http](#module_electron-builder-http)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| maxRedirects = 10
| "10"
|
+| debug = _debug("electron-builder")
| debug:Debugger
|
+
* [.HttpExecutor](#HttpExecutor)
* [`.download(url, destination, options)`](#module_electron-builder-http.HttpExecutor+download) ⇒ Promise<string>
@@ -3358,6 +3579,12 @@ Please note — on macOS [you need to register an `open-url` event handler](http
### BintrayPublisher ⇐ [HttpPublisher](#HttpPublisher)
**Kind**: class of [electron-publish/out/BintrayPublisher](#module_electron-publish/out/BintrayPublisher)
**Extends**: [HttpPublisher](#HttpPublisher)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| providerName = Bintray
| "Bintray"
|
+
* [.BintrayPublisher](#BintrayPublisher) ⇐ [HttpPublisher](#HttpPublisher)
* [`.deleteRelease()`](#module_electron-publish/out/BintrayPublisher.BintrayPublisher+deleteRelease) ⇒ Promise<any>
@@ -3470,6 +3697,12 @@ Please note — on macOS [you need to register an `open-url` event handler](http
### GitHubPublisher ⇐ [HttpPublisher](#HttpPublisher)
**Kind**: class of [electron-publish/out/gitHubPublisher](#module_electron-publish/out/gitHubPublisher)
**Extends**: [HttpPublisher](#HttpPublisher)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| providerName = GitHub
| "GitHub"
|
+
* [.GitHubPublisher](#GitHubPublisher) ⇐ [HttpPublisher](#HttpPublisher)
* [`.deleteRelease()`](#module_electron-publish/out/gitHubPublisher.GitHubPublisher+deleteRelease) ⇒ Promise<any>
@@ -3611,8 +3844,8 @@ Please note — on macOS [you need to register an `open-url` event handler](http
| Name | Type |
| --- | --- |
-| **cancellationToken**| [CancellationToken](#CancellationToken)
|
-| **progress**| [MultiProgress](#MultiProgress)
\| null
|
+| cancellationToken| [CancellationToken](#CancellationToken)
|
+| progress| [MultiProgress](#MultiProgress)
\| null
|
@@ -3959,6 +4192,12 @@ Please note — on macOS [you need to register an `open-url` event handler](http
### BaseGitHubProvider ⇐ [Provider](Auto-Update#Provider)
**Kind**: class of [electron-updater/out/GitHubProvider](#module_electron-updater/out/GitHubProvider)
**Extends**: [Provider](Auto-Update#Provider)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| baseUrl| module:http.RequestOptions
|
+
### GitHubProvider ⇐ [BaseGitHubProvider](#BaseGitHubProvider)
@@ -4177,7 +4416,7 @@ Start downloading update manually. You can use this method if `autoDownload` opt
* [`.copy(src, dest, stat)`](#module_electron-builder-util/out/fs.FileCopier+copy) ⇒ Promise<void>
* [`.copyDir(src, destination, filter, transformer, isUseHardLink)`](#module_electron-builder-util/out/fs.copyDir) ⇒ Promise<any>
* [`.copyFile(src, dest, stats, isUseHardLink)`](#module_electron-builder-util/out/fs.copyFile) ⇒ Promise<any>
- * [`.exists(file)`](#module_electron-builder-util/out/fs.exists) ⇒ Promise<"undefined" \| "undefined">
+ * [`.exists(file)`](#module_electron-builder-util/out/fs.exists) ⇒ Promise<boolean>
* [`.statOrNull(file)`](#module_electron-builder-util/out/fs.statOrNull) ⇒ Promise< \| module:fs.Stats>
* [`.unlinkIfExists(file)`](#module_electron-builder-util/out/fs.unlinkIfExists) ⇒ Promise<string \| void>
* [`.walk(initialDirPath, filter, consumer)`](#module_electron-builder-util/out/fs.walk) ⇒ Promise<Array<string>>
@@ -4230,7 +4469,7 @@ File permission is fixed — allow execute for all if owner can, allow read for
-### `electron-builder-util/out/fs.exists(file)` ⇒ Promise<"undefined" \| "undefined">
+### `electron-builder-util/out/fs.exists(file)` ⇒ Promise<boolean>
**Kind**: method of [electron-builder-util/out/fs](#module_electron-builder-util/out/fs)
| Param | Type |
@@ -4551,7 +4790,7 @@ File permission is fixed — allow execute for all if owner can, allow read for
* [`.getPlatformIconFileName(value, isMac)`](#module_electron-builder-util.getPlatformIconFileName) ⇒ undefined
\| null
\| string
* [`.getTempName(prefix)`](#module_electron-builder-util.getTempName) ⇒ string
* [`.handleProcess(event, childProcess, command, resolve, reject)`](#module_electron-builder-util.handleProcess)
- * [`.isEmptyOrSpaces(s)`](#module_electron-builder-util.isEmptyOrSpaces) ⇒ "undefined"
\| "undefined"
+ * [`.isEmptyOrSpaces(s)`](#module_electron-builder-util.isEmptyOrSpaces) ⇒ boolean
* [`.isPullRequest()`](#module_electron-builder-util.isPullRequest) ⇒ "undefined"
\| "undefined"
\| ""
* [`.prepareArgs(args, exePath)`](#module_electron-builder-util.prepareArgs) ⇒ Array<string>
* [`.removePassword(input)`](#module_electron-builder-util.removePassword) ⇒ string
@@ -4703,7 +4942,7 @@ File permission is fixed — allow execute for all if owner can, allow read for
-### `electron-builder-util.isEmptyOrSpaces(s)` ⇒ "undefined"
\| "undefined"
+### `electron-builder-util.isEmptyOrSpaces(s)` ⇒ boolean
**Kind**: method of [electron-builder-util](#module_electron-builder-util)
| Param | Type |
diff --git a/docs/Options.md b/docs/Options.md
index 4c3ce8f3a0f..40917b3d788 100644
--- a/docs/Options.md
+++ b/docs/Options.md
@@ -126,11 +126,11 @@ You can use [file macros](#file-macros) in the `from` and `to` fields as well.
| Name | Type |
| --- | --- |
-| **appOutDir**| string
|
-| **packager**| [PlatformPackager](Developer-API#PlatformPackager)<any>
|
-| **electronPlatformName**| string
|
-| **arch**| [Arch](Developer-API#Arch)
|
-| **targets**| Array<[Target](Developer-API#Target)>
|
+| appOutDir| string
|
+| packager| [PlatformPackager](Developer-API#PlatformPackager)<any>
|
+| electronPlatformName| string
|
+| arch| [Arch](Developer-API#Arch)
|
+| targets| Array<[Target](Developer-API#Target)>
|
@@ -157,8 +157,8 @@ AppX Options
| Name | Type |
| --- | --- |
-| **packager**| [PlatformPackager](Developer-API#PlatformPackager)<any>
|
-| **target**| [Target](Developer-API#Target)
\| null
|
+| packager| [PlatformPackager](Developer-API#PlatformPackager)<any>
|
+| target| [Target](Developer-API#Target)
\| null
|
| file| string
|
| data| Buffer
|
| safeArtifactName| string
|
@@ -172,21 +172,21 @@ AppX Options
| Name | Type |
| --- | --- |
-| **options**| [PackagerOptions](#PackagerOptions)
|
-| **metadata**| [Metadata](#Metadata)
|
-| **devMetadata**| [Metadata](#Metadata)
|
-| **config**| [Config](#Config)
|
-| **projectDir**| string
|
-| **appDir**| string
|
-| **electronVersion**| string
|
+| options| [PackagerOptions](#PackagerOptions)
|
+| metadata| [Metadata](#Metadata)
|
+| devMetadata| [Metadata](#Metadata)
|
+| config| [Config](#Config)
|
+| projectDir| string
|
+| appDir| string
|
+| electronVersion| string
|
| muonVersion| string
\| null
|
-| **isTwoPackageJsonProjectLayoutUsed**| boolean
|
-| **appInfo**| [AppInfo](Developer-API#AppInfo)
|
-| **tempDirManager**| [TmpDir](Developer-API#TmpDir)
|
-| **repositoryInfo**| Promise< \| [SourceRepositoryInfo](Developer-API#SourceRepositoryInfo)>
|
-| **isPrepackedAppAsar**| boolean
|
+| isTwoPackageJsonProjectLayoutUsed| boolean
|
+| appInfo| [AppInfo](Developer-API#AppInfo)
|
+| tempDirManager| [TmpDir](Developer-API#TmpDir)
|
+| repositoryInfo| Promise< \| [SourceRepositoryInfo](Developer-API#SourceRepositoryInfo)>
|
+| isPrepackedAppAsar| boolean
|
| prepackaged| string
\| null
|
-| **cancellationToken**| [CancellationToken](Developer-API#CancellationToken)
|
+| cancellationToken| [CancellationToken](Developer-API#CancellationToken)
|
@@ -201,8 +201,8 @@ AppX Options
| Name | Type |
| --- | --- |
-| **outDir**| string
|
-| **platformToTargets**| Map<[Platform](Developer-API#Platform) \| Map<String \| [Target](Developer-API#Target)>>
|
+| outDir| string
|
+| platformToTargets| Map<[Platform](Developer-API#Platform) \| Map<String \| [Target](Developer-API#Target)>>
|
@@ -596,6 +596,22 @@ Windows Specific Options
### Packager ⇐ [BuildInfo](#BuildInfo)
**Kind**: class of [electron-builder](#module_electron-builder)
**Extends**: [BuildInfo](#BuildInfo)
+**Properties**
+
+| Name | Type |
+| --- | --- |
+| projectDir| string
|
+| **appDir**| string
|
+| **metadata**| [Metadata](#Metadata)
|
+| **devMetadata**| [Metadata](#Metadata)
|
+| isTwoPackageJsonProjectLayoutUsed = true
| boolean
|
+| **electronVersion**| string
|
+| muonVersion| string
\| null
|
+| eventEmitter = new EventEmitter()
| internal:EventEmitter
|
+| **appInfo**| [AppInfo](Developer-API#AppInfo)
|
+| tempDirManager = new TmpDir()
| [TmpDir](Developer-API#TmpDir)
|
+| prepackaged| string
\| null
|
+
### `electron-builder.build(rawOptions)` ⇒ Promise<Array<string>>
diff --git a/docs/Publishing Artifacts.md b/docs/Publishing Artifacts.md
index 0924a339ce3..f979517600b 100644
--- a/docs/Publishing Artifacts.md
+++ b/docs/Publishing Artifacts.md
@@ -108,7 +108,7 @@ Generic (any HTTP(S) server) options.
| Name | Type | Description |
| --- | --- | --- |
-| **url**| string
| The base url. e.g. `https://bucket_name.s3.amazonaws.com`. You can use `${os}` (expanded to `mac`, `linux` or `win` according to target platform) and `${arch}` macros. |
+| url| string
| The base url. e.g. `https://bucket_name.s3.amazonaws.com`. You can use `${os}` (expanded to `mac`, `linux` or `win` according to target platform) and `${arch}` macros. |
| channel = "latest"
| string
\| null
| The channel. |
@@ -143,7 +143,7 @@ If `BT_TOKEN` is set and `GH_TOKEN` is not set — defaults to `[{provider: "bin
| Name | Type | Description |
| --- | --- | --- |
-| **provider**| "github"
\| "bintray"
\| "s3"
\| "generic"
| The provider. |
+| provider| "github"
\| "bintray"
\| "s3"
\| "generic"
| The provider. |
| owner| string
\| null
| The owner. |
| token| string
\| null
| |
@@ -161,7 +161,7 @@ Define `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID` [environment variables](h
| Name | Type | Description |
| --- | --- | --- |
-| **bucket**| string
| The bucket name. |
+| bucket| string
| The bucket name. |
| path = "/"
| string
\| null
| The directory path. |
| region| string
\| null
| The region. Is determined and set automatically when publishing. |
| channel = "latest"
| string
\| null
| The channel. |
@@ -184,12 +184,12 @@ Define `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID` [environment variables](h
| Name | Type | Description |
| --- | --- | --- |
-| **path**| string
| |
+| path| string
| |
| githubArtifactName| string
\| null
| |
-| **sha2**| string
| |
+| sha2| string
| |
| releaseName| string
\| null
| The release name. |
| releaseNotes| string
\| null
| The release notes. |
-| **releaseDate**| string
| The release date. |
+| releaseDate| string
| The release date. |
@@ -199,7 +199,7 @@ Define `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID` [environment variables](h
| Name | Type | Description |
| --- | --- | --- |
-| **version**| string
| The version. |
+| version| string
| The version. |
diff --git a/jsdoc/helpers.js b/jsdoc/helpers.js
index ae8f05672f8..634ca32e312 100644
--- a/jsdoc/helpers.js
+++ b/jsdoc/helpers.js
@@ -121,7 +121,16 @@ function link2(type, delimiter, root) {
function identifierToLink(id, root) {
let linked = resolveById(id)
if (!linked) {
- if (id.startsWith("module")) {
+ if (id.startsWith("module") &&
+ !id.startsWith("module:http.") &&
+ !id.startsWith("module:bluebird-lst.") &&
+ !id.startsWith("module:child_process.") &&
+ !id.startsWith("module:progress-ex") &&
+ !id.endsWith(".T") &&
+ !id.endsWith(".R") &&
+ !id.endsWith(".K") &&
+ !id.startsWith("module:fs.")
+ ) {
console.warn(`Unresolved member ${id}`)
}
return id
diff --git a/package.json b/package.json
index fd4e6fa5e1c..6583c8733fd 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"sanitize-filename": "^1.6.1",
"semver": "^5.3.0",
"stat-mode": "^0.2.2",
- "ts-jsdoc": "^1.1.1",
+ "ts-jsdoc": "^1.2.0",
"tunnel-agent": "^0.6.0",
"update-notifier": "^2.1.0",
"uuid-1345": "^0.99.6",
diff --git a/packages/electron-updater/src/AppUpdater.ts b/packages/electron-updater/src/AppUpdater.ts
index b779007ed62..a0b10e62fa4 100644
--- a/packages/electron-updater/src/AppUpdater.ts
+++ b/packages/electron-updater/src/AppUpdater.ts
@@ -27,20 +27,23 @@ export abstract class AppUpdater extends EventEmitter {
/**
* Automatically download an update when it is found.
*/
- public autoDownload = true
+ autoDownload = true
/**
* The request headers.
*/
- public requestHeaders: RequestHeaders | null
+ requestHeaders: RequestHeaders | null
/**
* The logger. You can pass [electron-log](https://github.com/megahertz/electron-log), [winston](https://github.com/winstonjs/winston) or another logger with the following interface: `{ info(), warn(), error() }`.
* Set it to `null` if you would like to disable a logging feature.
*/
- public logger: Logger | null = (global).__test_app ? null : console
+ logger: Logger | null = (global).__test_app ? null : console
- public readonly signals = new UpdaterSignal(this)
+ /**
+ * For type safety you can use signals, e.g. `autoUpdater.signals.updateDownloaded(() => {})` instead of `autoUpdater.on('update-available', () => {})`
+ */
+ readonly signals = new UpdaterSignal(this)
private _appUpdateConfigPath: string | null
@@ -56,7 +59,7 @@ export abstract class AppUpdater extends EventEmitter {
private readonly untilAppReady: Promise
private checkForUpdatesPromise: Promise | null
- protected readonly app: any
+ protected readonly app: Electron.App
protected versionInfo: VersionInfo | null
private fileInfo: FileInfo | null
diff --git a/yarn.lock b/yarn.lock
index 945ca6e0524..6f98033890b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -45,8 +45,8 @@
resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-0.6.8.tgz#fb38ae420be9c9b679bed3f974201120947b920f"
"@types/node@*":
- version "7.0.10"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.10.tgz#d860abb18c1b58b552c7c6cd8b2ba7adf6546fa3"
+ version "7.0.11"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.11.tgz#55680189f2335f080f0aeb57871f0b9823646d89"
"@types/source-map-support@^0.2.28":
version "0.2.28"
@@ -1350,8 +1350,8 @@ glob@~5.0.0:
path-is-absolute "^1.0.0"
globals@^9.0.0:
- version "9.16.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80"
+ version "9.17.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286"
globby@^6.1.0:
version "6.1.0"
@@ -2255,7 +2255,7 @@ mime@^1.3.4:
dependencies:
brace-expansion "^1.0.0"
-minimist@0.0.8, minimist@~0.0.1:
+minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
@@ -2263,6 +2263,10 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+minimist@~0.0.1:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+
mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
@@ -3165,9 +3169,9 @@ ts-babel@^3.0.0:
fs-extra-p "^4.1.0"
source-map-support "^0.4.14"
-ts-jsdoc@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ts-jsdoc/-/ts-jsdoc-1.1.1.tgz#3dbcc31885062ef438413ffb8c839920a86468fe"
+ts-jsdoc@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/ts-jsdoc/-/ts-jsdoc-1.2.0.tgz#7400db16493fe3292bf884122142bd02b755d085"
dependencies:
bluebird-lst "^1.0.2"
chalk "^1.1.3"
@@ -3231,8 +3235,8 @@ typical@^2.4.2, typical@^2.6.0:
resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.0.tgz#89d51554ab139848a65bcc2c8772f8fb450c40ed"
uglify-js@^2.6:
- version "2.8.15"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.15.tgz#835dd4cd5872554756e6874508d0d0561704d94d"
+ version "2.8.16"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.16.tgz#d286190b6eefc6fd65eb0ecac6551e0b0e8839a4"
dependencies:
source-map "~0.5.1"
yargs "~3.10.0"