Skip to content

Commit

Permalink
resolving conflicts and linting
Browse files Browse the repository at this point in the history
  • Loading branch information
burnhamup committed Mar 16, 2021
1 parent e83fa7c commit 4ac63f2
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 54 deletions.
10 changes: 5 additions & 5 deletions packages/electron-updater/src/NsisUpdater.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import { BaseUpdater, InstallOptions } from "./BaseUpdater"
import { DifferentialDownloaderOptions } from "./differentialDownloader/DifferentialDownloader"
import { FileWithEmbeddedBlockMapDifferentialDownloader } from "./differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader"
import { GenericDifferentialDownloader } from "./differentialDownloader/GenericDifferentialDownloader"
import { DOWNLOAD_PROGRESS, ResolvedUpdateFileInfo, blockmapFiles } from "./main"
import { DOWNLOAD_PROGRESS, ResolvedUpdateFileInfo } from "./main"
import { blockmapFiles } from "./util"
import { findFile, Provider } from "./providers/Provider"
import { unlink } from "fs-extra"
import { verifySignature } from "./windowsExecutableCodeSignatureVerifier"
Expand Down Expand Up @@ -137,7 +138,7 @@ export class NsisUpdater extends BaseUpdater {
if (this._testOnlyOptions != null && !this._testOnlyOptions.isUseDifferentialDownload) {
return true
}
const blockmapFileUrls = blockmapFiles(fileInfo, downloadUpdateOptions.updateInfoAndProvider.info, this.app);
const blockmapFileUrls = blockmapFiles(fileInfo.url, downloadUpdateOptions.updateInfoAndProvider.info.version, this.app.version)
this._logger.info(`Download block maps (old: "${blockmapFileUrls[0]}", new: ${blockmapFileUrls[1]})`)

const downloadBlockMap = async (url: URL): Promise<BlockMap> => {
Expand Down Expand Up @@ -171,9 +172,8 @@ export class NsisUpdater extends BaseUpdater {
downloadOptions.onProgress = it => this.emit(DOWNLOAD_PROGRESS, it)
}

const blockMapDataList = await Promise.all(blockmapFileUrls.map(u => downloadBlockMap(u)));
await new GenericDifferentialDownloader(fileInfo.info, this.httpExecutor, downloadOptions)
.download(blockMapDataList[0], blockMapDataList[1])
const blockMapDataList = await Promise.all(blockmapFileUrls.map(u => downloadBlockMap(u)))
await new GenericDifferentialDownloader(fileInfo.info, this.httpExecutor, downloadOptions).download(blockMapDataList[0], blockMapDataList[1])
return false
} catch (e) {
this._logger.error(`Cannot download differentially, fallback to full download: ${e.stack || e}`)
Expand Down
36 changes: 0 additions & 36 deletions packages/electron-updater/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { AppAdapter } from "./AppAdapter"
import { CancellationToken, PackageFileInfo, ProgressInfo, UpdateFileInfo, UpdateInfo } from "builder-util-runtime"
import { EventEmitter } from "events"
import { URL } from "url"
import { AppUpdater } from "./AppUpdater"
import { LoginCallback } from "./electronHttpExecutor"
import escapeRegExp from "lodash.escaperegexp"

export { AppUpdater, NoOpLogger } from "./AppUpdater"
export { UpdateInfo }
Expand Down Expand Up @@ -112,37 +110,3 @@ export interface Logger {

debug?(message: string): void
}
<<<<<<< HEAD
=======

// if baseUrl path doesn't ends with /, this path will be not prepended to passed pathname for new URL(input, base)
/** @internal */
export function newBaseUrl(url: string): URL {
const result = new URL(url)
if (!result.pathname.endsWith("/")) {
result.pathname += "/"
}
return result
}

// addRandomQueryToAvoidCaching is false by default because in most cases URL already contains version number,
// so, it makes sense only for Generic Provider for channel files
export function newUrlFromBase(pathname: string, baseUrl: URL, addRandomQueryToAvoidCaching = false): URL {
const result = new URL(pathname, baseUrl)
// search is not propagated (search is an empty string if not specified)
const search = baseUrl.search
if (search != null && search.length !== 0) {
result.search = search
}
else if (addRandomQueryToAvoidCaching) {
result.search = `noCache=${Date.now().toString(32)}`
}
return result
}

export function blockmapFiles(fileInfo: ResolvedUpdateFileInfo, updateInfo: UpdateInfo, app: AppAdapter): URL[] {
const newBlockMapUrl = newUrlFromBase(`${fileInfo.url.pathname}.blockmap`, fileInfo.url)
const oldBlockMapUrl = newUrlFromBase(`${fileInfo.url.pathname.replace(new RegExp(escapeRegExp(updateInfo.version), "g"), app.version)}.blockmap`, fileInfo.url)
return [oldBlockMapUrl, newBlockMapUrl];
}
>>>>>>> 5d147ceb (Refactored and added test case)
8 changes: 8 additions & 0 deletions packages/electron-updater/src/util.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// if baseUrl path doesn't ends with /, this path will be not prepended to passed pathname for new URL(input, base)
import { URL } from "url"
// @ts-ignore
import * as escapeRegExp from "lodash.escaperegexp"

/** @internal */
export function newBaseUrl(url: string): URL {
Expand Down Expand Up @@ -27,3 +29,9 @@ export function newUrlFromBase(pathname: string, baseUrl: URL, addRandomQueryToA
export function getChannelFilename(channel: string): string {
return `${channel}.yml`
}

export function blockmapFiles(baseUrl: URL, oldVersion: string, newVersion: string): URL[] {
const newBlockMapUrl = newUrlFromBase(`${baseUrl.pathname}.blockmap`, baseUrl)
const oldBlockMapUrl = newUrlFromBase(`${baseUrl.pathname.replace(new RegExp(escapeRegExp(newVersion), "g"), oldVersion)}.blockmap`, baseUrl)
return [oldBlockMapUrl, newBlockMapUrl]
}
14 changes: 14 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 2 additions & 13 deletions test/src/urlUtilTest.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { URL } from "url"
import { newUrlFromBase, blockmapFiles } from "electron-updater"
import { TestAppAdapter } from "./helpers/TestAppAdapter"
import { newUrlFromBase, blockmapFiles } from "electron-updater/out/util"

test("newUrlFromBase", () => {
const fileUrl = new URL("https://AWS_S3_HOST/bucket-yashraj/electron%20Setup%2011.0.3.exe")
Expand All @@ -20,17 +19,7 @@ test("create blockmap urls", () => {
const baseUrlString = `https://gitlab.com/artifacts/master/raw/electron%20Setup%20${newVersion}.exe`
const baseUrl = new URL(baseUrlString)

const fileInfo = {url: baseUrl, info: {url: baseUrlString, sha512: ''}};
const updateInfo = {
version: newVersion,
files: [fileInfo.info],
path: baseUrlString,
sha512: '',
releaseDate: 'Today',
}
const app = new TestAppAdapter(oldVersion, '')

const blockMapUrls = blockmapFiles(fileInfo, updateInfo, app);
const blockMapUrls = blockmapFiles(baseUrl, oldVersion, newVersion)

expect(blockMapUrls[0].href).toBe('https://gitlab.com/artifacts/master/raw/electron%20Setup%201.1.9-2+ed8ccd.exe.blockmap');
expect(blockMapUrls[1].href).toBe('https://gitlab.com/artifacts/master/raw/electron%20Setup%201.1.9-3+be4a1f.exe.blockmap');
Expand Down

0 comments on commit 4ac63f2

Please sign in to comment.