Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/khaki-sheep-bake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"electron-updater": patch
---

chore(refactor): refactoring code to reduce cyclical imports in order to migrate to rollup + vite (which have much more strict module resolutions)
2 changes: 1 addition & 1 deletion packages/electron-updater/src/AppImageUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import { DownloadUpdateOptions } from "./AppUpdater"
import { BaseUpdater, InstallOptions } from "./BaseUpdater"
import { DifferentialDownloaderOptions } from "./differentialDownloader/DifferentialDownloader"
import { FileWithEmbeddedBlockMapDifferentialDownloader } from "./differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader"
import { DOWNLOAD_PROGRESS, ResolvedUpdateFileInfo } from "./main"
import { findFile, Provider } from "./providers/Provider"
import { DOWNLOAD_PROGRESS, ResolvedUpdateFileInfo } from "./exports"

export class AppImageUpdater extends BaseUpdater {
constructor(options?: AllPublishOptions | null, app?: any) {
Expand Down
15 changes: 3 additions & 12 deletions packages/electron-updater/src/AppUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,26 +26,17 @@ import { createTempUpdateFile, DownloadedUpdateHelper } from "./DownloadedUpdate
import { ElectronAppAdapter } from "./ElectronAppAdapter"
import { ElectronHttpExecutor, getNetSession, LoginCallback } from "./electronHttpExecutor"
import { GenericProvider } from "./providers/GenericProvider"
import {
DOWNLOAD_PROGRESS,
Logger,
Provider,
ResolvedUpdateFileInfo,
UPDATE_DOWNLOADED,
UpdateCheckResult,
UpdateDownloadedEvent,
UpdaterSignal,
VerifyUpdateSupport,
} from "./main"
import { createClient, isUrlProbablySupportMultiRangeRequests } from "./providerFactory"
import { ProviderPlatform } from "./providers/Provider"
import { Provider, ProviderPlatform } from "./providers/Provider"
import type { TypedEmitter } from "tiny-typed-emitter"
import Session = Electron.Session
import type { AuthInfo } from "electron"
import { gunzipSync } from "zlib"
import { blockmapFiles } from "./util"
import { DifferentialDownloaderOptions } from "./differentialDownloader/DifferentialDownloader"
import { GenericDifferentialDownloader } from "./differentialDownloader/GenericDifferentialDownloader"
import { DOWNLOAD_PROGRESS, Logger, ResolvedUpdateFileInfo, UPDATE_DOWNLOADED, UpdateCheckResult, UpdateDownloadedEvent, UpdaterSignal } from "./exports"
import { VerifyUpdateSupport } from "./main"

export type AppUpdaterEvents = {
error: (error: Error, message?: string) => void
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-updater/src/DebUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import { AllPublishOptions } from "builder-util-runtime"
import { AppAdapter } from "./AppAdapter"
import { DownloadUpdateOptions } from "./AppUpdater"
import { BaseUpdater, InstallOptions } from "./BaseUpdater"
import { DOWNLOAD_PROGRESS } from "./main"
import { findFile } from "./providers/Provider"
import { DOWNLOAD_PROGRESS } from "./exports"

export class DebUpdater extends BaseUpdater {
constructor(options?: AllPublishOptions | null, app?: AppAdapter) {
Expand Down
3 changes: 2 additions & 1 deletion packages/electron-updater/src/DownloadedUpdateHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import { createHash } from "crypto"
import { createReadStream } from "fs"
// @ts-ignore
import * as isEqual from "lodash.isequal"
import { Logger, ResolvedUpdateFileInfo } from "./main"
import { ResolvedUpdateFileInfo } from "./exports"
import { Logger } from "./exports"
import { pathExists, readJson, emptyDir, outputJson, unlink } from "fs-extra"
import * as path from "path"

Expand Down
3 changes: 2 additions & 1 deletion packages/electron-updater/src/MacUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import * as path from "path"
import { createServer, IncomingMessage, Server, ServerResponse } from "http"
import { AppAdapter } from "./AppAdapter"
import { AppUpdater, DownloadUpdateOptions } from "./AppUpdater"
import { ResolvedUpdateFileInfo, UpdateDownloadedEvent } from "./main"
import { ResolvedUpdateFileInfo } from "./main"
import { UpdateDownloadedEvent } from "./exports"
import { findFile } from "./providers/Provider"
import AutoUpdater = Electron.AutoUpdater
import { execFileSync } from "child_process"
Expand Down
3 changes: 2 additions & 1 deletion packages/electron-updater/src/NsisUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import { DownloadUpdateOptions } from "./AppUpdater"
import { BaseUpdater, InstallOptions } from "./BaseUpdater"
import { DifferentialDownloaderOptions } from "./differentialDownloader/DifferentialDownloader"
import { FileWithEmbeddedBlockMapDifferentialDownloader } from "./differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader"
import { DOWNLOAD_PROGRESS, VerifyUpdateCodeSignature } from "./main"
import { DOWNLOAD_PROGRESS } from "./exports"
import { VerifyUpdateCodeSignature } from "./main"
import { findFile, Provider } from "./providers/Provider"
import { unlink } from "fs-extra"
import { verifySignature } from "./windowsExecutableCodeSignatureVerifier"
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-updater/src/PacmanUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AllPublishOptions } from "builder-util-runtime"
import { AppAdapter } from "./AppAdapter"
import { DownloadUpdateOptions } from "./AppUpdater"
import { BaseUpdater, InstallOptions } from "./BaseUpdater"
import { DOWNLOAD_PROGRESS } from "./main"
import { DOWNLOAD_PROGRESS } from "./exports"
import { findFile } from "./providers/Provider"

export class PacmanUpdater extends BaseUpdater {
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-updater/src/RpmUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AllPublishOptions } from "builder-util-runtime"
import { AppAdapter } from "./AppAdapter"
import { DownloadUpdateOptions } from "./AppUpdater"
import { BaseUpdater, InstallOptions } from "./BaseUpdater"
import { DOWNLOAD_PROGRESS } from "./main"
import { DOWNLOAD_PROGRESS } from "./exports"
import { findFile } from "./providers/Provider"

export class RpmUpdater extends BaseUpdater {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { close, open } from "fs-extra"
import { createWriteStream } from "fs"
import { OutgoingHttpHeaders, RequestOptions } from "http"
import { ProgressInfo, CancellationToken } from "builder-util-runtime"
import { Logger } from "../main"
import { Logger } from "../exports"
import { copyData } from "./DataSplitter"
import { URL } from "url"
import { computeOperations, Operation, OperationKind } from "./downloadPlanBuilder"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BlockMap, BlockMapFile } from "builder-util-runtime/out/blockMapApi"
import { Logger } from "../main"
import { Logger } from "../exports"

export enum OperationKind {
COPY,
Expand Down
81 changes: 81 additions & 0 deletions packages/electron-updater/src/exports.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import { CancellationToken, PackageFileInfo, ProgressInfo, UpdateFileInfo, UpdateInfo } from "builder-util-runtime"
import { EventEmitter } from "events"
import { URL } from "url"
import { LoginCallback } from "./electronHttpExecutor"

export const DOWNLOAD_PROGRESS = "download-progress"
export const UPDATE_DOWNLOADED = "update-downloaded"

export interface Logger {
info(message?: any): void

warn(message?: any): void

error(message?: any): void

debug?(message: string): void
}

export class UpdaterSignal {
constructor(private emitter: EventEmitter) {}

/**
* Emitted when an authenticating proxy is [asking for user credentials](https://github.com/electron/electron/blob/master/docs/api/client-request.md#event-login).
*/
login(handler: LoginHandler): void {
addHandler(this.emitter, "login", handler)
}

progress(handler: (info: ProgressInfo) => void): void {
addHandler(this.emitter, DOWNLOAD_PROGRESS, handler)
}

updateDownloaded(handler: (info: UpdateDownloadedEvent) => void): void {
addHandler(this.emitter, UPDATE_DOWNLOADED, handler)
}

updateCancelled(handler: (info: UpdateInfo) => void): void {
addHandler(this.emitter, "update-cancelled", handler)
}
}

const isLogEvent = false

export function addHandler(emitter: EventEmitter, event: UpdaterEvents, handler: (...args: Array<any>) => void): void {
if (isLogEvent) {
emitter.on(event, (...args: Array<any>) => {
console.log("%s %s", event, args)
handler(...args)
})
} else {
emitter.on(event, handler)
}
}

export interface UpdateCheckResult {
readonly isUpdateAvailable: boolean

readonly updateInfo: UpdateInfo

readonly downloadPromise?: Promise<Array<string>> | null

readonly cancellationToken?: CancellationToken

/** @deprecated */
readonly versionInfo: UpdateInfo
}

export interface UpdateDownloadedEvent extends UpdateInfo {
downloadedFile: string
}

export interface ResolvedUpdateFileInfo {
readonly url: URL
readonly info: UpdateFileInfo

packageInfo?: PackageFileInfo
}

export type UpdaterEvents = "login" | "checking-for-update" | "update-available" | "update-not-available" | "update-cancelled" | "download-progress" | "update-downloaded" | "error"

export type LoginHandler = (authInfo: any, callback: LoginCallback) => void
85 changes: 3 additions & 82 deletions packages/electron-updater/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import { CancellationToken, PackageFileInfo, ProgressInfo, UpdateFileInfo, UpdateInfo } from "builder-util-runtime"
import { EventEmitter } from "events"
import { existsSync, readFileSync } from "fs-extra"
import * as path from "path"
import { URL } from "url"
import { AppUpdater } from "./AppUpdater"
import { LoginCallback } from "./electronHttpExecutor"
import { UpdateInfo } from "builder-util-runtime"

export { BaseUpdater } from "./BaseUpdater"
export { AppUpdater, NoOpLogger } from "./AppUpdater"
export { CancellationToken, PackageFileInfo, ProgressInfo, UpdateFileInfo, UpdateInfo }
export { Provider } from "./providers/Provider"
export { AppImageUpdater } from "./AppImageUpdater"
export { DebUpdater } from "./DebUpdater"
Expand All @@ -17,6 +13,8 @@ export { RpmUpdater } from "./RpmUpdater"
export { MacUpdater } from "./MacUpdater"
export { NsisUpdater } from "./NsisUpdater"

export * from "./exports"

// autoUpdater to mimic electron bundled autoUpdater
let _autoUpdater: any

Expand Down Expand Up @@ -69,83 +67,6 @@ Object.defineProperty(exports, "autoUpdater", {
},
})

export interface ResolvedUpdateFileInfo {
readonly url: URL
readonly info: UpdateFileInfo

packageInfo?: PackageFileInfo
}

export interface UpdateCheckResult {
readonly isUpdateAvailable: boolean

readonly updateInfo: UpdateInfo

readonly downloadPromise?: Promise<Array<string>> | null

readonly cancellationToken?: CancellationToken

/** @deprecated */
readonly versionInfo: UpdateInfo
}

export type UpdaterEvents = "login" | "checking-for-update" | "update-available" | "update-not-available" | "update-cancelled" | "download-progress" | "update-downloaded" | "error"

export const DOWNLOAD_PROGRESS = "download-progress"
export const UPDATE_DOWNLOADED = "update-downloaded"

export type LoginHandler = (authInfo: any, callback: LoginCallback) => void

export class UpdaterSignal {
constructor(private emitter: EventEmitter) {}

/**
* Emitted when an authenticating proxy is [asking for user credentials](https://github.com/electron/electron/blob/master/docs/api/client-request.md#event-login).
*/
login(handler: LoginHandler): void {
addHandler(this.emitter, "login", handler)
}

progress(handler: (info: ProgressInfo) => void): void {
addHandler(this.emitter, DOWNLOAD_PROGRESS, handler)
}

updateDownloaded(handler: (info: UpdateDownloadedEvent) => void): void {
addHandler(this.emitter, UPDATE_DOWNLOADED, handler)
}

updateCancelled(handler: (info: UpdateInfo) => void): void {
addHandler(this.emitter, "update-cancelled", handler)
}
}

export interface UpdateDownloadedEvent extends UpdateInfo {
downloadedFile: string
}

const isLogEvent = false

function addHandler(emitter: EventEmitter, event: UpdaterEvents, handler: (...args: Array<any>) => void): void {
if (isLogEvent) {
emitter.on(event, (...args: Array<any>) => {
console.log("%s %s", event, args)
handler(...args)
})
} else {
emitter.on(event, handler)
}
}

export interface Logger {
info(message?: any): void

warn(message?: any): void

error(message?: any): void

debug?(message: string): void
}

/**
* return null if verify signature succeed
* return error message if verify signature failed
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { CancellationToken, BitbucketOptions, newError, UpdateInfo } from "builder-util-runtime"
import { AppUpdater } from "../AppUpdater"
import { ResolvedUpdateFileInfo } from "../main"
import { ResolvedUpdateFileInfo } from "../exports"
import { getChannelFilename, newBaseUrl, newUrlFromBase } from "../util"
import { parseUpdateInfo, Provider, ProviderRuntimeOptions, resolveFiles } from "./Provider"

Expand Down
2 changes: 1 addition & 1 deletion packages/electron-updater/src/providers/GenericProvider.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { GenericServerOptions, HttpError, newError, UpdateInfo } from "builder-util-runtime"
import { AppUpdater } from "../AppUpdater"
import { ResolvedUpdateFileInfo } from "../main"
import { ResolvedUpdateFileInfo } from "../exports"
import { getChannelFilename, newBaseUrl, newUrlFromBase } from "../util"
import { parseUpdateInfo, Provider, ProviderRuntimeOptions, resolveFiles } from "./Provider"

Expand Down
2 changes: 1 addition & 1 deletion packages/electron-updater/src/providers/GitHubProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { CancellationToken, GithubOptions, githubUrl, HttpError, newError, parse
import * as semver from "semver"
import { URL } from "url"
import { AppUpdater } from "../AppUpdater"
import { ResolvedUpdateFileInfo } from "../main"
import { ResolvedUpdateFileInfo } from "../exports"
import { getChannelFilename, newBaseUrl, newUrlFromBase } from "../util"
import { parseUpdateInfo, Provider, ProviderRuntimeOptions, resolveFiles } from "./Provider"

Expand Down
2 changes: 1 addition & 1 deletion packages/electron-updater/src/providers/KeygenProvider.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { CancellationToken, KeygenOptions, newError, UpdateInfo } from "builder-util-runtime"
import { AppUpdater } from "../AppUpdater"
import { ResolvedUpdateFileInfo } from "../main"
import { ResolvedUpdateFileInfo } from "../exports"
import { getChannelFilename, newBaseUrl, newUrlFromBase } from "../util"
import { parseUpdateInfo, Provider, ProviderRuntimeOptions, resolveFiles } from "./Provider"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { AppUpdater } from "../AppUpdater"
import { URL } from "url"
import { getChannelFilename, newUrlFromBase } from "../util"
import { BaseGitHubProvider } from "./GitHubProvider"
import { ResolvedUpdateFileInfo } from "../main"
import { ResolvedUpdateFileInfo } from "../exports"
import { getFileList, ProviderRuntimeOptions } from "./Provider"

export interface PrivateGitHubUpdateInfo extends UpdateInfo {
Expand Down
2 changes: 1 addition & 1 deletion packages/electron-updater/src/providers/Provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { OutgoingHttpHeaders, RequestOptions } from "http"
import { load } from "js-yaml"
import { URL } from "url"
import { ElectronHttpExecutor } from "../electronHttpExecutor"
import { ResolvedUpdateFileInfo } from "../main"
import { ResolvedUpdateFileInfo } from "../exports"
import { newUrlFromBase } from "../util"

export type ProviderPlatform = "darwin" | "linux" | "win32"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { parseDn } from "builder-util-runtime"
import { execFile, execFileSync } from "child_process"
import * as os from "os"
import { Logger } from "./main"
import { Logger } from "./exports"
import * as path from "path"

// $certificateInfo = (Get-AuthenticodeSignature 'xxx\yyy.exe'
Expand Down
Loading