@@ -24,13 +24,21 @@ module.exports = function () {
2424
2525 const fullProjectVersions = readdirSync (
2626 `ember-api-docs-data/json-docs/${ p } `
27- ) . filter ( ( v ) => v . match ( / \d + \. \d + \. \d + / ) ) ;
27+ ) . filter ( ( v ) => ! ! semver . valid ( v ) ) ;
2828
2929 // add landing page for each of the projects versions
30- const projectVersions = fullProjectVersions . map ( ( v ) => {
31- let [ , major , minor ] = v . match ( / ( \d + ) \. ( \d + ) \. \d + / ) ;
32- return `${ major } .${ minor } ` ;
33- } ) ; // uniq
30+ const projectVersions = fullProjectVersions
31+ . map ( ( v ) => {
32+ let parsed = semver . parse ( v ) ;
33+ if ( ! parsed ) return null ;
34+ if ( parsed . prerelease && parsed . prerelease . length > 0 ) {
35+ return `${ parsed . major } .${ parsed . minor } .${
36+ parsed . patch
37+ } -${ parsed . prerelease . join ( '.' ) } `;
38+ }
39+ return `${ parsed . major } .${ parsed . minor } ` ;
40+ } )
41+ . filter ( Boolean ) ;
3442
3543 const uniqueProjectVersions = [ ...new Set ( projectVersions ) ] ;
3644
@@ -45,9 +53,18 @@ module.exports = function () {
4553 const oldVersions = [ '1.13' , '2.18' , '3.28' , '4.4' , '4.8' , '4.12' ] ;
4654
4755 uniqueProjectVersions . forEach ( ( uniqVersion ) => {
56+ let isPreRelease = uniqVersion . includes ( '-' ) ;
57+ let baseVersion = isPreRelease ? uniqVersion . split ( '-' ) [ 0 ] : uniqVersion ;
58+
59+ if (
60+ ! oldVersions . includes ( baseVersion ) &&
61+ ! semver . valid ( `${ baseVersion } .0` )
62+ ) {
63+ return ;
64+ }
4865 if (
49- ! oldVersions . includes ( uniqVersion ) &&
50- ! semver . gte ( `${ uniqVersion } .0` , '5.0.0' )
66+ ! oldVersions . includes ( baseVersion ) &&
67+ ! semver . gte ( `${ baseVersion } .0` , '5.0.0' )
5168 ) {
5269 return ;
5370 }
@@ -56,14 +73,25 @@ module.exports = function () {
5673
5774 const sortedPatchVersions = fullProjectVersions
5875 . filter ( ( projectVersion ) => {
59- // console.log("comparing", projectVersion, uniqVersion, semver.satisfies(projectVersion, uniqVersion))
60- return semver . satisfies ( projectVersion , uniqVersion ) ;
76+ let parsed = semver . parse ( projectVersion ) ;
77+ if ( ! parsed ) return false ;
78+ if ( isPreRelease ) {
79+ return (
80+ `${ parsed . major } .${ parsed . minor } .${
81+ parsed . patch
82+ } -${ parsed . prerelease . join ( '.' ) } ` === uniqVersion
83+ ) ;
84+ } else {
85+ return `${ parsed . major } .${ parsed . minor } ` === uniqVersion ;
86+ }
6187 } )
6288 . sort ( cmp ) ;
6389
6490 const highestPatchVersion =
6591 sortedPatchVersions [ sortedPatchVersions . length - 1 ] ;
6692
93+ if ( ! highestPatchVersion ) return ;
94+
6795 const revIndex = require ( `${ __dirname } /ember-api-docs-data/rev-index/${ p } -${ highestPatchVersion } .json` ) ;
6896
6997 [ 'classes' , 'namespaces' , 'modules' ] . forEach ( ( entity ) => {
0 commit comments