Skip to content

Commit fd432c4

Browse files
committed
feat(releaseData): add minorVersions prop
1 parent 0a04f29 commit fd432c4

File tree

1 file changed

+47
-36
lines changed

1 file changed

+47
-36
lines changed

apps/site/next-data/generators/releaseData.mjs

+47-36
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)