UNPKG

dce-dev-wizard

Version:

Wizard for managing development apps at Harvard DCE.

48 lines (44 loc) 1.58 kB
// 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> => { // Get node versions let nodeVersions: NodeVersionArray = []; let retries = 3; while (retries > 0) { try { const nodeVersionsResponse = await fetch('https://nodejs.org/download/release/index.json'); nodeVersions = await nodeVersionsResponse.json(); break; } catch (error) { retries -= 1; if (retries === 0) { throw error; } } } if (nodeVersions.length === 0) { throw new Error('Unable to fetch Node.js versions from the Node.js website.'); } 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;