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