@@ -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