From 91e109257346923451f90914901581bf67e64524 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Tue, 14 Dec 2021 14:28:00 -0700 Subject: [PATCH 01/13] WIP channel support --- .../src/providers/GitHubProvider.ts | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index eaa5756130..5417d12b45 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -57,8 +57,34 @@ export class GitHubProvider extends BaseGitHubProvider { let tag: string | null try { if (this.updater.allowPrerelease) { - // noinspection TypeScriptValidateJSTypes - tag = hrefRegExp.exec(latestRelease.element("link").attribute("href"))![1] + const currentChannel = this.updater?.channel || null; + for (const element of feed.getElements("entry")) { + // noinspection TypeScriptValidateJSTypes + const hrefElement = hrefRegExp.exec(element.element("link").attribute("href"))! + + // If this is null then something is wrong and skip this release + if (hrefElement == null) continue + + //Get Channel from this release + const hrefChannel = semver.prerelease(hrefElement[1])?.[0] + + //If no channel is set by the current version, then grab latest (including prerelease) + if (currentChannel == null) { + // Skip any "custom" channels + if (hrefChannel != null && hrefChannel !== 'alpha' && hrefChannel !== 'beta') continue + tag = element + break + } + + // Skip Production release + if (hrefChannel == null) continue + + // Get next release in the same channel + if (hrefChannel === currentChannel) { + tag = element + break + } + } } else { tag = await this.getLatestTagName(cancellationToken) for (const element of feed.getElements("entry")) { From 6baafaa45a740320c72c47ab82b5c723618eeb42 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Thu, 16 Dec 2021 18:05:06 -0700 Subject: [PATCH 02/13] Added logic for preRelease channel update ymls, and path for alpha/beta to release. --- .../electron-updater/src/providers/GitHubProvider.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 5417d12b45..ab41791afc 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -57,7 +57,7 @@ export class GitHubProvider extends BaseGitHubProvider { let tag: string | null try { if (this.updater.allowPrerelease) { - const currentChannel = this.updater?.channel || null; + const currentChannel = this.updater?.channel || this.updater.currentVersion.prerelease?.[0] || null; for (const element of feed.getElements("entry")) { // noinspection TypeScriptValidateJSTypes const hrefElement = hrefRegExp.exec(element.element("link").attribute("href"))! @@ -69,9 +69,12 @@ export class GitHubProvider extends BaseGitHubProvider { const hrefChannel = semver.prerelease(hrefElement[1])?.[0] //If no channel is set by the current version, then grab latest (including prerelease) - if (currentChannel == null) { + if (currentChannel == null || currentChannel == 'alpha' || currentChannel == 'beta'){ // Skip any "custom" channels if (hrefChannel != null && hrefChannel !== 'alpha' && hrefChannel !== 'beta') continue + // Skip alphas if in Beta Channel + if (currentChannel == 'beta' && hrefChannel == 'alpha') continue + // Get tag tag = element break } @@ -103,7 +106,7 @@ export class GitHubProvider extends BaseGitHubProvider { throw newError(`No published versions on GitHub`, "ERR_UPDATER_NO_PUBLISHED_VERSIONS") } - const channelFile = getChannelFilename(this.getDefaultChannelName()) + const channelFile = getChannelFilename(this.updater.allowPrerelease ? this.getCustomChannelName(semver.prerelease(tag)?.[0] || 'latest') : this.getDefaultChannelName()) const channelFileUrl = newUrlFromBase(this.getBaseDownloadPath(tag, channelFile), this.baseUrl) const requestOptions = this.createRequestOptions(channelFileUrl) let rawData: string From 3a3385c8818a23670addbfc0222e086ab3fda445 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Thu, 16 Dec 2021 18:21:18 -0700 Subject: [PATCH 03/13] element should of been hrefChannel --- packages/electron-updater/src/providers/GitHubProvider.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index ab41791afc..9ce29d328f 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -66,7 +66,7 @@ export class GitHubProvider extends BaseGitHubProvider { if (hrefElement == null) continue //Get Channel from this release - const hrefChannel = semver.prerelease(hrefElement[1])?.[0] + const hrefChannel = semver.prerelease(hrefElement[1])?.[0] || null ; //If no channel is set by the current version, then grab latest (including prerelease) if (currentChannel == null || currentChannel == 'alpha' || currentChannel == 'beta'){ @@ -75,7 +75,7 @@ export class GitHubProvider extends BaseGitHubProvider { // Skip alphas if in Beta Channel if (currentChannel == 'beta' && hrefChannel == 'alpha') continue // Get tag - tag = element + tag = hrefChannel break } @@ -84,7 +84,7 @@ export class GitHubProvider extends BaseGitHubProvider { // Get next release in the same channel if (hrefChannel === currentChannel) { - tag = element + tag = hrefChannel break } } From 49ff117cac7779abc84f31e6a8c95a208933fdfa Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Thu, 16 Dec 2021 18:42:26 -0700 Subject: [PATCH 04/13] Fixed compile errors --- packages/electron-updater/src/providers/GitHubProvider.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 9ce29d328f..5d0744c798 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -54,10 +54,10 @@ export class GitHubProvider extends BaseGitHubProvider { const feed = parseXml(feedXml) // noinspection TypeScriptValidateJSTypes let latestRelease = feed.element("entry", false, `No published versions on GitHub`) - let tag: string | null + let tag: string | null = null try { if (this.updater.allowPrerelease) { - const currentChannel = this.updater?.channel || this.updater.currentVersion.prerelease?.[0] || null; + const currentChannel = this.updater?.channel || String(semver.prerelease(this.updater.currentVersion)?.[0]) || null; for (const element of feed.getElements("entry")) { // noinspection TypeScriptValidateJSTypes const hrefElement = hrefRegExp.exec(element.element("link").attribute("href"))! @@ -106,7 +106,7 @@ export class GitHubProvider extends BaseGitHubProvider { throw newError(`No published versions on GitHub`, "ERR_UPDATER_NO_PUBLISHED_VERSIONS") } - const channelFile = getChannelFilename(this.updater.allowPrerelease ? this.getCustomChannelName(semver.prerelease(tag)?.[0] || 'latest') : this.getDefaultChannelName()) + const channelFile = getChannelFilename(this.updater.allowPrerelease ? this.getCustomChannelName(String(semver.prerelease(tag)?.[0]) || 'latest') : this.getDefaultChannelName()) const channelFileUrl = newUrlFromBase(this.getBaseDownloadPath(tag, channelFile), this.baseUrl) const requestOptions = this.createRequestOptions(channelFileUrl) let rawData: string From 57dabb7251fa7ad07fa0026ecccbb4ef11dc5b9d Mon Sep 17 00:00:00 2001 From: KenCorma <37089104+KenCorma@users.noreply.github.com> Date: Mon, 20 Dec 2021 11:24:17 -0700 Subject: [PATCH 05/13] Added Changeset --- .changeset/github-channel-support.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/github-channel-support.md diff --git a/.changeset/github-channel-support.md b/.changeset/github-channel-support.md new file mode 100644 index 0000000000..60fe7c634b --- /dev/null +++ b/.changeset/github-channel-support.md @@ -0,0 +1,5 @@ +--- +"electron-updater": patch +--- + +feat(updater): Add Channel Support for Github with PreRelease From f3b6e552cec1368e5b69790ee78a88281f31381b Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Mon, 17 Jan 2022 11:04:36 -0700 Subject: [PATCH 06/13] Changed patch to minor in changeset --- .changeset/github-channel-support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/github-channel-support.md b/.changeset/github-channel-support.md index 60fe7c634b..9d81d975f6 100644 --- a/.changeset/github-channel-support.md +++ b/.changeset/github-channel-support.md @@ -1,5 +1,5 @@ --- -"electron-updater": patch +"electron-updater": minor --- feat(updater): Add Channel Support for Github with PreRelease From 577ac226f25f462da51eafe079fa3c5f17054f28 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Mon, 17 Jan 2022 11:05:08 -0700 Subject: [PATCH 07/13] Fixed some ts formating issues. --- .../src/providers/GitHubProvider.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 5d0744c798..fc98731e19 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -31,7 +31,7 @@ export abstract class BaseGitHubProvider extends Provider< protected computeGithubBasePath(result: string): string { // https://github.com/electron-userland/electron-builder/issues/1903#issuecomment-320881211 const host = this.options.host - return host != null && host !== "github.com" && host !== "api.github.com" ? `/api/v3${result}` : result + return host !== null && host !== "github.com" && host !== "api.github.com" ? `/api/v3${result}` : result } } @@ -63,24 +63,28 @@ export class GitHubProvider extends BaseGitHubProvider { const hrefElement = hrefRegExp.exec(element.element("link").attribute("href"))! // If this is null then something is wrong and skip this release - if (hrefElement == null) continue + if (hrefElement === null) + continue //Get Channel from this release const hrefChannel = semver.prerelease(hrefElement[1])?.[0] || null ; //If no channel is set by the current version, then grab latest (including prerelease) - if (currentChannel == null || currentChannel == 'alpha' || currentChannel == 'beta'){ + if (currentChannel === null || currentChannel === 'alpha' || currentChannel === 'beta'){ // Skip any "custom" channels - if (hrefChannel != null && hrefChannel !== 'alpha' && hrefChannel !== 'beta') continue + if (hrefChannel != null && hrefChannel !== 'alpha' && hrefChannel !== 'beta') + continue // Skip alphas if in Beta Channel - if (currentChannel == 'beta' && hrefChannel == 'alpha') continue + if (currentChannel === 'beta' && hrefChannel === 'alpha') + continue // Get tag tag = hrefChannel break } // Skip Production release - if (hrefChannel == null) continue + if (hrefChannel === null) + continue // Get next release in the same channel if (hrefChannel === currentChannel) { @@ -106,7 +110,7 @@ export class GitHubProvider extends BaseGitHubProvider { throw newError(`No published versions on GitHub`, "ERR_UPDATER_NO_PUBLISHED_VERSIONS") } - const channelFile = getChannelFilename(this.updater.allowPrerelease ? this.getCustomChannelName(String(semver.prerelease(tag)?.[0]) || 'latest') : this.getDefaultChannelName()) + const channelFile = getChannelFilename(this.updater.allowPrerelease ? this.getCustomChannelName(String(semver.prerelease(tag)?.[0] || 'latest')) : this.getDefaultChannelName()) const channelFileUrl = newUrlFromBase(this.getBaseDownloadPath(tag, channelFile), this.baseUrl) const requestOptions = this.createRequestOptions(channelFileUrl) let rawData: string From 76bfe7cb9be99260c973312ccfb66cf12cd95811 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Wed, 19 Jan 2022 15:46:27 -0700 Subject: [PATCH 08/13] Compressed logic using @mmaietta 's suggestion, popped out the hrefTag to be easier to use. --- .../src/providers/GitHubProvider.ts | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index fc98731e19..71409bc33d 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -57,7 +57,7 @@ export class GitHubProvider extends BaseGitHubProvider { let tag: string | null = null try { if (this.updater.allowPrerelease) { - const currentChannel = this.updater?.channel || String(semver.prerelease(this.updater.currentVersion)?.[0]) || null; + const currentChannel = this.updater?.channel || String(semver.prerelease(this.updater.currentVersion)?.[0]) || null for (const element of feed.getElements("entry")) { // noinspection TypeScriptValidateJSTypes const hrefElement = hrefRegExp.exec(element.element("link").attribute("href"))! @@ -66,30 +66,26 @@ export class GitHubProvider extends BaseGitHubProvider { if (hrefElement === null) continue - //Get Channel from this release - const hrefChannel = semver.prerelease(hrefElement[1])?.[0] || null ; - - //If no channel is set by the current version, then grab latest (including prerelease) - if (currentChannel === null || currentChannel === 'alpha' || currentChannel === 'beta'){ - // Skip any "custom" channels - if (hrefChannel != null && hrefChannel !== 'alpha' && hrefChannel !== 'beta') - continue - // Skip alphas if in Beta Channel - if (currentChannel === 'beta' && hrefChannel === 'alpha') - continue - // Get tag - tag = hrefChannel - break + // This Release's Tag + const hrefTag = hrefElement[1] + //Get Channel from this release's tag + const hrefChannel = semver.prerelease(hrefTag)?.[0] || null + + + const shouldFetchVersion = !currentChannel || ['alpha', 'beta'].includes(currentChannel) + const isCustomChannel = !['alpha', 'beta'].includes(hrefChannel) + // Allow moving from alpha to beta but not down + const channelMismatch = currentChannel === 'beta' && hrefChannel === 'alpha' + + if (shouldFetchVersion && !isCustomChannel && !channelMismatch) { + tag = hrefTag + break } - // Skip Production release - if (hrefChannel === null) - continue - - // Get next release in the same channel - if (hrefChannel === currentChannel) { - tag = hrefChannel - break + const isNextPreRelease = hrefChannel && hrefChannel === currentChannel + if (isNextPreRelease) { + tag = hrefTag + break } } } else { From 15dffdfc5294321b06dd7b7db2030e33189c6d49 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Thu, 20 Jan 2022 17:47:02 -0700 Subject: [PATCH 09/13] Added String gaurd to cunstom channel includes. --- packages/electron-updater/src/providers/GitHubProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 71409bc33d..108770393e 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -73,7 +73,7 @@ export class GitHubProvider extends BaseGitHubProvider { const shouldFetchVersion = !currentChannel || ['alpha', 'beta'].includes(currentChannel) - const isCustomChannel = !['alpha', 'beta'].includes(hrefChannel) + const isCustomChannel = !['alpha', 'beta'].includes(String(hrefChannel)) // Allow moving from alpha to beta but not down const channelMismatch = currentChannel === 'beta' && hrefChannel === 'alpha' From ad83d5f4d80250fb5af07fbb44a0768dccf1e643 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Tue, 25 Jan 2022 20:28:15 -0700 Subject: [PATCH 10/13] Added backwards compatibility with prereleases that use latests --- .../src/providers/GitHubProvider.ts | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 108770393e..704b195172 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -106,18 +106,36 @@ export class GitHubProvider extends BaseGitHubProvider { throw newError(`No published versions on GitHub`, "ERR_UPDATER_NO_PUBLISHED_VERSIONS") } - const channelFile = getChannelFilename(this.updater.allowPrerelease ? this.getCustomChannelName(String(semver.prerelease(tag)?.[0] || 'latest')) : this.getDefaultChannelName()) - const channelFileUrl = newUrlFromBase(this.getBaseDownloadPath(tag, channelFile), this.baseUrl) - const requestOptions = this.createRequestOptions(channelFileUrl) + let rawData: string - try { - rawData = (await this.executor.request(requestOptions, cancellationToken))! - } catch (e) { - if (!this.updater.allowPrerelease && e instanceof HttpError && e.statusCode === 404) { - throw newError(`Cannot find ${channelFile} in the latest release artifacts (${channelFileUrl}): ${e.stack || e.message}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND") + let channelFile: string = '' + let channelFileUrl: string = '' + const fetchData = async (channelName: string) => { + channelFile = getChannelFilename(channelName) + channelFileUrl = newUrlFromBase(this.getBaseDownloadPath(String(tag), channelFile), this.baseUrl) + const requestOptions = this.createRequestOptions(channelFileUrl) + try { + return (await this.executor.request(requestOptions, cancellationToken))! + } catch (e) { + if (e instanceof HttpError && e.statusCode === 404) { + throw newError(`Cannot find ${channelFile} in the latest release artifacts (${channelFileUrl}): ${e.stack || e.message}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND") + } + throw e } - throw e - } + } + + try { + const channel = this.updater.allowPrerelease ? this.getCustomChannelName(String(semver.prerelease(tag)?.[0] || 'latest')) : this.getDefaultChannelName() + rawData = await fetchData(channel) + } catch (e) { + if (this.updater.allowPrerelease) { + // Allow fallback to `latest.yml` + rawData = await fetchData(this.getDefaultChannelName()) + } else { + throw e + } + } + const result = parseUpdateInfo(rawData, channelFile, channelFileUrl) if (result.releaseName == null) { From c4590db50e96638a3dab7be85da1d11781e74bb5 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Tue, 25 Jan 2022 20:33:07 -0700 Subject: [PATCH 11/13] Channelfileurl should of been 'any' datatype --- packages/electron-updater/src/providers/GitHubProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 704b195172..8e9de601ff 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -109,7 +109,7 @@ export class GitHubProvider extends BaseGitHubProvider { let rawData: string let channelFile: string = '' - let channelFileUrl: string = '' + let channelFileUrl: any = '' const fetchData = async (channelName: string) => { channelFile = getChannelFilename(channelName) channelFileUrl = newUrlFromBase(this.getBaseDownloadPath(String(tag), channelFile), this.baseUrl) From d953f691d731b2c0fcf7af5d25d5cc5134f8ed30 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Thu, 27 Jan 2022 09:37:00 -0700 Subject: [PATCH 12/13] Applied lint fix --- .../src/providers/GitHubProvider.ts | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 8e9de601ff..274ba865c5 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -57,35 +57,33 @@ export class GitHubProvider extends BaseGitHubProvider { let tag: string | null = null try { if (this.updater.allowPrerelease) { - const currentChannel = this.updater?.channel || String(semver.prerelease(this.updater.currentVersion)?.[0]) || null + const currentChannel = this.updater?.channel || String(semver.prerelease(this.updater.currentVersion)?.[0]) || null for (const element of feed.getElements("entry")) { // noinspection TypeScriptValidateJSTypes const hrefElement = hrefRegExp.exec(element.element("link").attribute("href"))! // If this is null then something is wrong and skip this release - if (hrefElement === null) - continue + if (hrefElement === null) continue // This Release's Tag const hrefTag = hrefElement[1] //Get Channel from this release's tag - const hrefChannel = semver.prerelease(hrefTag)?.[0] || null - + const hrefChannel = semver.prerelease(hrefTag)?.[0] || null - const shouldFetchVersion = !currentChannel || ['alpha', 'beta'].includes(currentChannel) - const isCustomChannel = !['alpha', 'beta'].includes(String(hrefChannel)) + const shouldFetchVersion = !currentChannel || ["alpha", "beta"].includes(currentChannel) + const isCustomChannel = !["alpha", "beta"].includes(String(hrefChannel)) // Allow moving from alpha to beta but not down - const channelMismatch = currentChannel === 'beta' && hrefChannel === 'alpha' - + const channelMismatch = currentChannel === "beta" && hrefChannel === "alpha" + if (shouldFetchVersion && !isCustomChannel && !channelMismatch) { - tag = hrefTag - break + tag = hrefTag + break } const isNextPreRelease = hrefChannel && hrefChannel === currentChannel if (isNextPreRelease) { - tag = hrefTag - break + tag = hrefTag + break } } } else { @@ -106,36 +104,34 @@ export class GitHubProvider extends BaseGitHubProvider { throw newError(`No published versions on GitHub`, "ERR_UPDATER_NO_PUBLISHED_VERSIONS") } - let rawData: string - let channelFile: string = '' - let channelFileUrl: any = '' + let channelFile: string = "" + let channelFileUrl: any = "" const fetchData = async (channelName: string) => { channelFile = getChannelFilename(channelName) channelFileUrl = newUrlFromBase(this.getBaseDownloadPath(String(tag), channelFile), this.baseUrl) const requestOptions = this.createRequestOptions(channelFileUrl) try { - return (await this.executor.request(requestOptions, cancellationToken))! + return (await this.executor.request(requestOptions, cancellationToken))! } catch (e) { - if (e instanceof HttpError && e.statusCode === 404) { - throw newError(`Cannot find ${channelFile} in the latest release artifacts (${channelFileUrl}): ${e.stack || e.message}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND") - } - throw e + if (e instanceof HttpError && e.statusCode === 404) { + throw newError(`Cannot find ${channelFile} in the latest release artifacts (${channelFileUrl}): ${e.stack || e.message}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND") + } + throw e } - } - - try { - const channel = this.updater.allowPrerelease ? this.getCustomChannelName(String(semver.prerelease(tag)?.[0] || 'latest')) : this.getDefaultChannelName() + } + + try { + const channel = this.updater.allowPrerelease ? this.getCustomChannelName(String(semver.prerelease(tag)?.[0] || "latest")) : this.getDefaultChannelName() rawData = await fetchData(channel) - } catch (e) { + } catch (e) { if (this.updater.allowPrerelease) { - // Allow fallback to `latest.yml` - rawData = await fetchData(this.getDefaultChannelName()) + // Allow fallback to `latest.yml` + rawData = await fetchData(this.getDefaultChannelName()) } else { - throw e + throw e } - } - + } const result = parseUpdateInfo(rawData, channelFile, channelFileUrl) if (result.releaseName == null) { From be34e5248dcb71cf382a185b7b8dbc4377d90df8 Mon Sep 17 00:00:00 2001 From: Kendal Cormany Date: Thu, 27 Jan 2022 13:21:41 -0700 Subject: [PATCH 13/13] removed string type from channelFile --- packages/electron-updater/src/providers/GitHubProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/electron-updater/src/providers/GitHubProvider.ts b/packages/electron-updater/src/providers/GitHubProvider.ts index 274ba865c5..4324dcdf74 100644 --- a/packages/electron-updater/src/providers/GitHubProvider.ts +++ b/packages/electron-updater/src/providers/GitHubProvider.ts @@ -105,7 +105,7 @@ export class GitHubProvider extends BaseGitHubProvider { } let rawData: string - let channelFile: string = "" + let channelFile = "" let channelFileUrl: any = "" const fetchData = async (channelName: string) => { channelFile = getChannelFilename(channelName)