@@ -10,7 +10,11 @@ module.exports = async function (alias = 'lts_active', opts = {}) {
1010 const latestOfMajorOnly = opts . latestOfMajorOnly || false
1111
1212 const a = Array . isArray ( alias ) ? alias : [ alias ]
13- const versions = await getLatestVersionsByCodename ( now , cache , mirror )
13+ const versions = await getLatestVersionsByCodename ( {
14+ now,
15+ cache,
16+ mirror
17+ } )
1418
1519 // Reduce to an object
1620 let m = a . reduce ( ( m , a ) => {
@@ -70,7 +74,7 @@ function getVersions (cache, mirror) {
7074 } ) . json ( )
7175}
7276
73- async function getLatestVersionsByCodename ( now , cache , mirror ) {
77+ async function getLatestVersionsByCodename ( { now, cache, mirror } ) {
7478 const schedule = await getSchedule ( cache )
7579 const versions = await getVersions ( cache , mirror )
7680
@@ -102,6 +106,10 @@ async function getLatestVersionsByCodename (now, cache, mirror) {
102106 end : s && s . end && new Date ( s . end ) ,
103107 releaseDate : new Date ( ver . date ) ,
104108 isLts : false ,
109+ isSupported : false ,
110+ isMaintenance : false ,
111+ isSecurity : ver . security ,
112+ modules : ver . modules ,
105113 files : ver . files || [ ] ,
106114 dependencies : {
107115 npm : ver . npm ,
@@ -112,30 +120,38 @@ async function getLatestVersionsByCodename (now, cache, mirror) {
112120 }
113121 }
114122
115- // All versions get added to all
116- obj . all . push ( v )
123+ // Is in any supported period
124+ if ( now > v . start && now < v . end ) {
125+ v . isSupported = true
117126
118- // Add specific version references
119- obj [ v . version ] = obj [ `v${ v . version } ` ] = v
127+ // Is in maintenence period
128+ if ( now > v . maintenance ) {
129+ v . isMaintenance = true
130+ }
131+
132+ // Latest lts
133+ if ( now > v . lts ) {
134+ v . isLts = true
135+ }
136+ }
120137
121138 // The new version is higher than the last stored version for this release line
122139 if ( ! obj [ versionName ] || semver . gt ( ver . version , obj [ versionName ] . version ) ) {
123140 // Version and codename alias
124141 obj [ versionName ] = obj [ codename ] = v
125142
126- if ( now > v . start && now < v . end ) {
143+ if ( v . isSupported ) {
127144 supported [ versionName ] = v
128145
129- if ( now < v . maintenance ) {
146+ if ( ! v . isMaintenance ) {
130147 active [ versionName ] = v
131148 }
132149
133150 // Latest lts
134- if ( now > v . lts ) {
151+ if ( v . isLts ) {
135152 lts [ versionName ] = v
136- v . isLts = true
137153
138- if ( now < v . maintenance ) {
154+ if ( ! v . isMaintenance ) {
139155 ltsActive [ versionName ] = v
140156 }
141157
@@ -151,6 +167,12 @@ async function getLatestVersionsByCodename (now, cache, mirror) {
151167 }
152168 }
153169
170+ // All versions get added to all
171+ obj . all . push ( v )
172+
173+ // Add specific version references
174+ obj [ v . version ] = obj [ `v${ v . version } ` ] = v
175+
154176 return obj
155177 } , {
156178 all : [ ]
0 commit comments