UNPKG

node-version-alias

Version:

Resolve Node.js version aliases like 'latest', 'lts' or 'erbium'

60 lines (35 loc) 1.06 kB
import allNodeVersions from"all-node-versions"; export const getLtsAlias=async(alias,allNodeOpts)=>{ const ltsMajors=await getLtsMajors(allNodeOpts); const major=getLtsMajor(alias,ltsMajors); if(major===undefined){ return } return major.latest }; export const getLtsMajors=async(allNodeOpts)=>{ const{majors}=await allNodeVersions(allNodeOpts); return majors.filter(isLts) }; const isLts=({lts})=>lts!==undefined; const getLtsMajor=(alias,ltsMajors)=>{ if(LATEST_LTS.has(alias)){ return ltsMajors[0] } const major=getNumberedLts(alias,ltsMajors); if(major!==undefined){ return major } return getNamedLts(alias,ltsMajors) }; const LATEST_LTS=new Set(["lts","lts/*"]); const getNumberedLts=(alias,ltsMajors)=>{ const result=NUMBER_LTS_REGEXP.exec(alias); return result===null||result[1]==="0"?undefined:ltsMajors[result[1]] }; const NUMBER_LTS_REGEXP=/^lts\/-(\d+)$/u; const getNamedLts=(alias,ltsMajors)=>{ const name=alias.replace(LTS_PREFIX,"").toLowerCase(); return ltsMajors.find(({lts})=>lts===name) }; const LTS_PREFIX="lts/";