@@ -24,13 +24,21 @@ module.exports = function () {
24
24
25
25
const fullProjectVersions = readdirSync (
26
26
`ember-api-docs-data/json-docs/${ p } `
27
- ) . filter ( ( v ) => v . match ( / \d + \. \d + \. \d + / ) ) ;
27
+ ) . filter ( ( v ) => ! ! semver . valid ( v ) ) ;
28
28
29
29
// 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 ) ;
34
42
35
43
const uniqueProjectVersions = [ ...new Set ( projectVersions ) ] ;
36
44
@@ -45,9 +53,18 @@ module.exports = function () {
45
53
const oldVersions = [ '1.13' , '2.18' , '3.28' , '4.4' , '4.8' , '4.12' ] ;
46
54
47
55
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
+ }
48
65
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' )
51
68
) {
52
69
return ;
53
70
}
@@ -56,14 +73,25 @@ module.exports = function () {
56
73
57
74
const sortedPatchVersions = fullProjectVersions
58
75
. 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
+ }
61
87
} )
62
88
. sort ( cmp ) ;
63
89
64
90
const highestPatchVersion =
65
91
sortedPatchVersions [ sortedPatchVersions . length - 1 ] ;
66
92
93
+ if ( ! highestPatchVersion ) return ;
94
+
67
95
const revIndex = require ( `${ __dirname } /ember-api-docs-data/rev-index/${ p } -${ highestPatchVersion } .json` ) ;
68
96
69
97
[ 'classes' , 'namespaces' , 'modules' ] . forEach ( ( entity ) => {
0 commit comments