@@ -812,13 +812,16 @@ function getTagUrl(repoUrl, tag) {
812
812
return `${ withTrailingSlash ( repoUrl ) } releases/tag/${ tag } ` ;
813
813
}
814
814
function stringifyLinkReferenceDefinitions ( repoUrl , releases ) {
815
- const releasesOrderedByVersion = releases
815
+ // A list of release versions in descending SemVer order
816
+ const descendingSemverVersions = releases
816
817
. map ( ( { version } ) => version )
817
818
. sort ( ( a , b ) => {
818
819
return semver_1 . default . gt ( a , b ) ? - 1 : 1 ;
819
820
} ) ;
820
- const orderedReleases = releases . map ( ( { version } ) => version ) ;
821
- const hasReleases = orderedReleases . length > 0 ;
821
+ const latestSemverVersion = descendingSemverVersions [ 0 ] ;
822
+ // A list of release versions in chronological order
823
+ const chronologicalVersions = releases . map ( ( { version } ) => version ) ;
824
+ const hasReleases = chronologicalVersions . length > 0 ;
822
825
// The "Unreleased" section represents all changes made since the *highest*
823
826
// release, not the most recent release. This is to accomodate patch releases
824
827
// of older versions that don't represent the latest set of changes.
@@ -830,24 +833,30 @@ function stringifyLinkReferenceDefinitions(repoUrl, releases) {
830
833
// If there have not been any releases yet, the repo URL is used directly as
831
834
// the link definition.
832
835
const unreleasedLinkReferenceDefinition = `[${ constants_1 . unreleased } ]: ${ hasReleases
833
- ? getCompareUrl ( repoUrl , `v${ releasesOrderedByVersion [ 0 ] } ` , 'HEAD' )
836
+ ? getCompareUrl ( repoUrl , `v${ latestSemverVersion } ` , 'HEAD' )
834
837
: withTrailingSlash ( repoUrl ) } `;
835
838
// The "previous" release that should be used for comparison is not always
836
839
// the most recent release chronologically. The _highest_ version that is
837
840
// lower than the current release is used as the previous release, so that
838
841
// patch releases on older releases can be accomodated.
839
842
const releaseLinkReferenceDefinitions = releases
840
843
. map ( ( { version } ) => {
841
- if ( version === orderedReleases [ orderedReleases . length - 1 ] ) {
842
- return `[${ version } ]: ${ getTagUrl ( repoUrl , `v${ version } ` ) } ` ;
844
+ let diffUrl ;
845
+ if ( version === chronologicalVersions [ chronologicalVersions . length - 1 ] ) {
846
+ diffUrl = getTagUrl ( repoUrl , `v${ version } ` ) ;
843
847
}
844
- const versionIndex = orderedReleases . indexOf ( version ) ;
845
- const previousVersion = orderedReleases
846
- . slice ( versionIndex )
847
- . find ( ( releaseVersion ) => {
848
- return semver_1 . default . gt ( version , releaseVersion ) ;
849
- } ) ;
850
- return `[${ version } ]: ${ getCompareUrl ( repoUrl , `v${ previousVersion } ` , `v${ version } ` ) } ` ;
848
+ else {
849
+ const versionIndex = chronologicalVersions . indexOf ( version ) ;
850
+ const previousVersion = chronologicalVersions
851
+ . slice ( versionIndex )
852
+ . find ( ( releaseVersion ) => {
853
+ return semver_1 . default . gt ( version , releaseVersion ) ;
854
+ } ) ;
855
+ diffUrl = previousVersion
856
+ ? getCompareUrl ( repoUrl , `v${ previousVersion } ` , `v${ version } ` )
857
+ : getTagUrl ( repoUrl , `v${ version } ` ) ;
858
+ }
859
+ return `[${ version } ]: ${ diffUrl } ` ;
851
860
} )
852
861
. join ( '\n' ) ;
853
862
return `${ unreleasedLinkReferenceDefinition } \n${ releaseLinkReferenceDefinitions } ${ releases . length > 0 ? '\n' : '' } ` ;
@@ -1443,12 +1452,9 @@ function getAllLoggedPrNumbers(changelog) {
1443
1452
const prNumbersWithChangelogEntries = [ ] ;
1444
1453
for ( const description of changeDescriptions ) {
1445
1454
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1446
- const matchResults = description . match ( / ^ \[ # ( \d + ) \] / u) ;
1447
- if ( matchResults === null ) {
1448
- continue ;
1449
- }
1450
- const prNumber = matchResults [ 1 ] ;
1451
- prNumbersWithChangelogEntries . push ( prNumber ) ;
1455
+ const matchResults = description . matchAll ( / \[ # ( \d + ) \] / gu) ;
1456
+ const prNumbers = Array . from ( matchResults , ( result ) => result [ 1 ] ) ;
1457
+ prNumbersWithChangelogEntries . push ( ...prNumbers ) ;
1452
1458
}
1453
1459
return prNumbersWithChangelogEntries ;
1454
1460
}
0 commit comments