@@ -27,47 +27,58 @@ const getNodeReleaseStatus = (now, support) => {
27
27
*
28
28
* @returns {Promise<Array<import('../../types').NodeRelease>> }
29
29
*/
30
- const generateReleaseData = ( ) => {
31
- return nodevu ( { fetch : fetch } ) . then ( nodevuOutput => {
32
- // Filter out those without documented support
33
- // Basically those not in schedule.json
34
- const majors = Object . values ( nodevuOutput ) . filter ( major => ! ! major . support ) ;
30
+ const generateReleaseData = async ( ) => {
31
+ const nodevuOutput = await nodevu ( { fetch : fetch } ) ;
35
32
36
- const nodeReleases = majors . map ( major => {
37
- const [ latestVersion ] = Object . values ( major . releases ) ;
33
+ const majors = Object . entries ( nodevuOutput ) . filter (
34
+ ( [ version , { support } ] ) => {
35
+ // Filter out those without documented support
36
+ // Basically those not in schedule.json
37
+ if ( ! support ) {
38
+ return false ;
39
+ }
38
40
39
- const support = {
40
- currentStart : major . support . phases . dates . start ,
41
- ltsStart : major . support . phases . dates . lts ,
42
- maintenanceStart : major . support . phases . dates . maintenance ,
43
- endOfLife : major . support . phases . dates . end ,
44
- } ;
41
+ // nodevu returns duplicated v0.x versions (v0.12, v0.10, ...).
42
+ // This behavior seems intentional as the case is hardcoded in nodevu,
43
+ // see https://github.com/cutenode/nodevu/blob/0c8538c70195fb7181e0a4d1eeb6a28e8ed95698/core/index.js#L24.
44
+ // This line ignores those duplicated versions and takes the latest
45
+ // v0.x version (v0.12.18). It is also consistent with the legacy
46
+ // nodejs.org implementation.
47
+ if ( version . startsWith ( 'v0.' ) && version !== 'v0.12' ) {
48
+ return false ;
49
+ }
45
50
46
- // Get the major release status based on our Release Schedule
47
- const status = getNodeReleaseStatus ( new Date ( ) , support ) ;
51
+ return true ;
52
+ }
53
+ ) ;
48
54
49
- return {
50
- ...support ,
51
- status,
52
- major : latestVersion . semver . major ,
53
- version : latestVersion . semver . raw ,
54
- versionWithPrefix : `v${ latestVersion . semver . raw } ` ,
55
- codename : major . support . codename || '' ,
56
- isLts : status === 'LTS' ,
57
- npm : latestVersion . dependencies . npm || '' ,
58
- v8 : latestVersion . dependencies . v8 || '' ,
59
- releaseDate : latestVersion . releaseDate || '' ,
60
- modules : latestVersion . modules . version || '' ,
61
- } ;
62
- } ) ;
55
+ return majors . map ( ( [ , major ] ) => {
56
+ const [ latestVersion ] = Object . values ( major . releases ) ;
63
57
64
- // nodevu returns duplicated v0.x versions (v0.12, v0.10, ...).
65
- // This behavior seems intentional as the case is hardcoded in nodevu,
66
- // see https://github.com/cutenode/nodevu/blob/0c8538c70195fb7181e0a4d1eeb6a28e8ed95698/core/index.js#L24.
67
- // This line ignores those duplicated versions and takes the latest
68
- // v0.x version (v0.12.18). It is also consistent with the legacy
69
- // nodejs.org implementation.
70
- return nodeReleases . filter ( r => r . major !== 0 || r . version === '0.12.18' ) ;
58
+ const support = {
59
+ currentStart : major . support . phases . dates . start ,
60
+ ltsStart : major . support . phases . dates . lts ,
61
+ maintenanceStart : major . support . phases . dates . maintenance ,
62
+ endOfLife : major . support . phases . dates . end ,
63
+ } ;
64
+
65
+ // Get the major release status based on our Release Schedule
66
+ const status = getNodeReleaseStatus ( new Date ( ) , support ) ;
67
+
68
+ return {
69
+ ...support ,
70
+ status,
71
+ major : latestVersion . semver . major ,
72
+ version : latestVersion . semver . raw ,
73
+ versionWithPrefix : `v${ latestVersion . semver . raw } ` ,
74
+ codename : major . support . codename || '' ,
75
+ isLts : status === 'LTS' ,
76
+ npm : latestVersion . dependencies . npm || '' ,
77
+ v8 : latestVersion . dependencies . v8 || '' ,
78
+ releaseDate : latestVersion . releaseDate || '' ,
79
+ modules : latestVersion . modules . version || '' ,
80
+ minorVersions : major . releases ,
81
+ } ;
71
82
} ) ;
72
83
} ;
73
84
0 commit comments