// 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;
