dce-dev-wizard
Version:
Wizard for managing development apps at Harvard DCE.
31 lines (28 loc) • 1.23 kB
text/typescript
// Import shared types
import NodeVersionArray from '../types/NodeVersionArray';
/**
* Get the current LTS Node version from the Node.js website.
* @author Gabe Abrams
* @returns major version of Node.js (e.g. 22) or null if not found
*/
const getCurrentEvenLTSNodeVersion = async (): Promise<number | null> => {
const nodeVersionsResponse = await fetch('https://nodejs.org/download/release/index.json');
const nodeVersions: NodeVersionArray = await nodeVersionsResponse.json();
let currentEvenMajorLTSVersion: number | null = null;
nodeVersions.forEach((version) => {
const versionParts = version.version.split('.');
const majorVersion = Number.parseInt(versionParts[0].replace('v', ''), 10);
const isEven = (majorVersion % 2 === 0);
const isLTS = (version.lts !== false);
if (isLTS && isEven) {
// Check if this is the first even major LTS version
// or if it's greater than the current one
if (!currentEvenMajorLTSVersion || majorVersion > currentEvenMajorLTSVersion) {
// Update the current even major LTS version
currentEvenMajorLTSVersion = majorVersion;
}
}
});
return currentEvenMajorLTSVersion;
};
export default getCurrentEvenLTSNodeVersion;