| 24 | * @returns {Promise<Array<import('../../types').NodeRelease>>} |
| 25 | */ |
| 26 | const generateReleaseData = async () => { |
| 27 | const majors = await getMajorNodeReleases(); |
| 28 | |
| 29 | return majors.map(([, major]) => { |
| 30 | const versions = Object.values(major.releases); |
| 31 | const latestVersion = versions[0]; |
| 32 | const initialVersion = versions[versions.length - 1]; |
| 33 | |
| 34 | // Get the major release status based on our Release Schedule |
| 35 | const status = getNodeReleaseStatus( |
| 36 | latestVersion, |
| 37 | major.support.phases.dates.end |
| 38 | ); |
| 39 | |
| 40 | const minorVersions = Object.entries(major.releases).map(([, release]) => ({ |
| 41 | modules: release.modules.version || '', |
| 42 | npm: release.dependencies.npm || '', |
| 43 | releaseDate: release.releaseDate, |
| 44 | v8: release.dependencies.v8, |
| 45 | version: release.semver.raw, |
| 46 | versionWithPrefix: `v${release.semver.raw}`, |
| 47 | })); |
| 48 | |
| 49 | return { |
| 50 | status, |
| 51 | major: latestVersion.semver.major, |
| 52 | version: latestVersion.semver.raw, |
| 53 | versionWithPrefix: `v${latestVersion.semver.raw}`, |
| 54 | codename: major.support.codename || '', |
| 55 | npm: latestVersion.dependencies.npm || '', |
| 56 | v8: latestVersion.dependencies.v8, |
| 57 | latestReleaseDate: latestVersion.releaseDate, |
| 58 | initialReleaseDate: initialVersion.releaseDate, |
| 59 | modules: latestVersion.modules.version || '', |
| 60 | minorVersions, |
| 61 | }; |
| 62 | }); |
| 63 | }; |
| 64 | |
| 65 | export default generateReleaseData; |