@@ -453,9 +453,18 @@ class ExtensionSpecificDistributionManager {
453453 void extLogger . log (
454454 `Searching for latest release including ${ requiredAssetName } .` ,
455455 ) ;
456+
457+ const versionRange = this . usingNightlyReleases ( )
458+ ? undefined
459+ : this . versionRange ;
460+ const orderBySemver = ! this . usingNightlyReleases ( ) ;
461+ const includePrerelease =
462+ this . usingNightlyReleases ( ) || this . config . includePrerelease ;
463+
456464 return this . createReleasesApiConsumer ( ) . getLatestRelease (
457- this . versionRange ,
458- this . config . includePrerelease ,
465+ versionRange ,
466+ orderBySemver ,
467+ includePrerelease ,
459468 ( release ) => {
460469 // v2.12.3 was released with a bug that causes the extension to fail
461470 // so we force the extension to ignore it.
@@ -512,6 +521,14 @@ class ExtensionSpecificDistributionManager {
512521 }
513522 }
514523
524+ private usingNightlyReleases ( ) : boolean {
525+ return (
526+ ! this . config . ownerName &&
527+ ! this . config . repositoryName &&
528+ this . config . channel === "nightly"
529+ ) ;
530+ }
531+
515532 private async bumpDistributionFolderIndex ( ) : Promise < void > {
516533 const index = this . extensionContext . globalState . get (
517534 ExtensionSpecificDistributionManager . _currentDistributionFolderIndexStateKey ,
@@ -584,7 +601,8 @@ export class ReleasesApiConsumer {
584601 }
585602
586603 public async getLatestRelease (
587- versionRange : semver . Range ,
604+ versionRange : semver . Range | undefined ,
605+ orderBySemver = true ,
588606 includePrerelease = false ,
589607 additionalCompatibilityCheck ?: ( release : GithubRelease ) => boolean ,
590608 ) : Promise < Release > {
@@ -597,12 +615,14 @@ export class ReleasesApiConsumer {
597615 return false ;
598616 }
599617
600- const version = semver . parse ( release . tag_name ) ;
601- if (
602- version === null ||
603- ! semver . satisfies ( version , versionRange , { includePrerelease } )
604- ) {
605- return false ;
618+ if ( versionRange !== undefined ) {
619+ const version = semver . parse ( release . tag_name ) ;
620+ if (
621+ version === null ||
622+ ! semver . satisfies ( version , versionRange , { includePrerelease } )
623+ ) {
624+ return false ;
625+ }
606626 }
607627
608628 return (
@@ -611,10 +631,9 @@ export class ReleasesApiConsumer {
611631 } ) ;
612632 // Tag names must all be parsable to semvers due to the previous filtering step.
613633 const latestRelease = compatibleReleases . sort ( ( a , b ) => {
614- const versionComparison = semver . compare (
615- semver . parse ( b . tag_name ) ! ,
616- semver . parse ( a . tag_name ) ! ,
617- ) ;
634+ const versionComparison = orderBySemver
635+ ? semver . compare ( semver . parse ( b . tag_name ) ! , semver . parse ( a . tag_name ) ! )
636+ : b . id - a . id ;
618637 if ( versionComparison !== 0 ) {
619638 return versionComparison ;
620639 }
0 commit comments