@@ -27,47 +27,58 @@ const getNodeReleaseStatus = (now, support) => {
2727 *
2828 * @returns {Promise<Array<import('../../types').NodeRelease>> }
2929 */
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 } ) ;
3532
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+ }
3840
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+ }
4550
46- // Get the major release status based on our Release Schedule
47- const status = getNodeReleaseStatus ( new Date ( ) , support ) ;
51+ return true ;
52+ }
53+ ) ;
4854
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 ) ;
6357
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+ } ;
7182 } ) ;
7283} ;
7384
0 commit comments