UNPKG

all-node-versions

Version:
57 lines (41 loc) 1.28 kB
import{env}from"node:process"; import{handleOfflineError}from"./cache/offline.js"; import{readCachedVersions,writeCachedVersions}from"./cache/read.js"; import{fetchIndex}from"./fetch.js"; import{normalizeIndex}from"./normalize.js"; import{getOpts}from"./options.js"; const allNodeVersions=async(opts)=>{ const{fetchOpt,fetchNodeOpts}=getOpts(opts); const versionsInfo=await getAllVersions(fetchOpt,fetchNodeOpts); return structuredClone(versionsInfo) }; export default allNodeVersions; const getAllVersions=async(fetchOpt,fetchNodeOpts)=>{ if( processCachedVersions!==undefined&& fetchOpt!==true&& !env.TEST_CACHE_FILENAME) { return processCachedVersions } const versionsInfo=await getVersionsInfo(fetchOpt,fetchNodeOpts); processCachedVersions=versionsInfo; return versionsInfo }; let processCachedVersions; const getVersionsInfo=async(fetchOpt,fetchNodeOpts)=>{ const cachedVersions=await readCachedVersions(fetchOpt); return cachedVersions===undefined? await getNewVersionsInfo(fetchNodeOpts): cachedVersions }; const getNewVersionsInfo=async(fetchNodeOpts)=>{ try{ const index=await fetchIndex(fetchNodeOpts); const versionsInfo=normalizeIndex(index); await writeCachedVersions(versionsInfo); return versionsInfo }catch(error){ return handleOfflineError(error) } };