UNPKG

all-node-versions

Version:
54 lines (35 loc) 1.12 kB
import semver from"semver"; import{groupBy}from"./group.js"; export const normalizeIndex=(index)=>{ const indexItems=index.map(normalizeVersion); const versions=getAllVersions(indexItems); const majors=getMajors(indexItems); return{versions,majors} }; const normalizeVersion=({version,lts,npm})=>{ const versionA=version.slice(1); const major=semver.major(versionA); return{version:versionA,major,lts,npm} }; const getAllVersions=(indexItems)=>indexItems.map(getVersionField); const getVersionField=({version,npm})=>({node:version,npm}); const getMajors=(indexItems)=>{ const groups=groupBy(indexItems,"major"); return Object.values(groups).map(getMajorInfo).sort(compareMajor) }; const getMajorInfo=(versions)=>{ const[{major,version:latest}]=versions; const lts=getLts(versions); return{major,latest,...lts} }; const getLts=(versions)=>{ const ltsVersion=versions.find(getLtsField); if(ltsVersion===undefined){ return{} } const lts=ltsVersion.lts.toLowerCase(); return{lts} }; const getLtsField=({lts})=>typeof lts==="string"; const compareMajor=({major:majorA},{major:majorB})=> majorA<majorB?1:-1;