UNPKG

nvexeca

Version:
48 lines (28 loc) 960 B
import{createHash}from"node:crypto"; import{join}from"node:path"; import globalCacheDir from"global-cache-dir"; export const getDistBinDir=async(srcPaths)=>{ const hash=getHash(srcPaths); const output=await getOutput(); const distBinDir=join(output,BIN_DIR_PARENT,`${hash}${BIN_DIR_SUFFIX}`); return distBinDir }; const getHash=(srcPaths)=>{ const contents=srcPaths.map(getSrcPathHash).join("\n"); const hash=computeSha(contents); return hash }; const getSrcPathHash=({filename,content})=>`${filename}\n${content}`; const computeSha=(contents)=>{ const hashStream=createHash("sha256"); hashStream.update(contents); const hash=hashStream.digest("hex"); return hash }; export const getOutput=()=>globalCacheDir(CACHE_DIR); const CACHE_DIR="nve"; export const isOutputDir=(dir)=> dir.replace(TRAILING_SLASH_REGEXP,"").endsWith(BIN_DIR_SUFFIX); const TRAILING_SLASH_REGEXP=/[/\\]$/u; const BIN_DIR_PARENT="all"; const BIN_DIR_SUFFIX="-nve-bin";