@alessiofrittoli/node-scripts
Version:
Utility library with common Node.js scripts
4 lines • 3.94 kB
JavaScript
import {ErrorCode}from'@alessiofrittoli/exception/code';import A,{parse,join}from'path';import j,{existsSync,lstatSync,readdirSync}from'fs';import {Exception}from'@alessiofrittoli/exception';import {execSync,execFileSync}from'child_process';var N=Object.defineProperty;var g=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,b=Object.prototype.propertyIsEnumerable;var d=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t);var y=(t,e,r)=>e in t?N(t,e,{enumerable:true,configurable:true,writable:true,value:r}):t[e]=r,m=(t,e)=>{for(var r in e||(e={}))k.call(e,r)&&y(t,r,e[r]);if(g)for(var r of g(e))b.call(e,r)&&y(t,r,e[r]);return t};var x=(t,e,r)=>(e=t[d("asyncIterator")])?e.call(t):(t=t[d("iterator")](),e={},r=(o,s)=>(s=t[o])&&(e[o]=n=>new Promise((a,i,p)=>(n=s.call(t,n),p=n.done,Promise.resolve(n.value).then(c=>a({value:c,done:p}),i)))),r("next"),r("return"),e);var O={ENOENT:"ERR:ENOENT"},h=m(m({},ErrorCode),O);var S=(t,e)=>{if(e!=null&&e.includes(t))return [];if(!existsSync(t))throw new Exception(`No such file or directory, '${t}'`,{code:h.ENOENT});let r=lstatSync(t),o=parse(t),s=r.isFile(),n={path:t,parsedPath:o,stats:r};return s?[n]:[...readdirSync(t).map(a=>S(join(o.dir,o.base,a),e)).flat(),n]},Q=async t=>{let{path:e,exclude:r,signal:o,onIteration:s}=t,n=S(e,r),a=[];try{for(var i=x(n),p,c,P;p=!(c=await i.next()).done;p=!1){let l=c.value;if(o!=null&&o.aborted)break;a.push(await s(l,a.length,n.length));}}catch(c){P=[c];}finally{try{p&&(c=i.return)&&await c.call(i);}finally{if(P)throw P[0]}}return a};var E=()=>{let e=execSync("git remote -v",{encoding:"buffer"}).toString().split(`
`),r=new Map;return e.map(o=>{var f;let[s,n]=o.split(" ");if(!s||!n)return null;let a=r.get(s)||new Map,i=a.get("urls")||new Map,p=n.split(" "),c=((f=p.at(1))==null?void 0:f.replace(/\(|\)/g,""))||"fetch",P=i.has(c)?c==="fetch"?"push":"fetch":c,l=p.at(0);if(!l)return null;i.set(P,l),a.set("name",s),a.set("urls",i),r.has(s)||r.set(s,a);}),r},M=()=>{var t,e,r;return ((r=(e=(t=execSync("git branch -rl '*/HEAD'"))==null?void 0:t.toString().split(`
`).filter(Boolean).at(0))==null?void 0:e.split(" -> ").at(1))==null?void 0:r.split("/"))||[null,null]},tt=()=>{var e;let[t]=M();return t?E().get(t):(e=E().entries().next().value)==null?void 0:e[1]},B=()=>execSync("git stash list").toString().split(`
`).map(T).filter(Boolean),T=t=>{var n;if(!t)return null;let e=t.split(": "),r=Number(e.at(0).split("@{").pop().split("}").at(0)||"invalid");if(isNaN(r))return null;let o=(e.at(2)?e.at(1).split(" ").pop():null)||"main",s=e.at(2)||((n=e.at(1))==null?void 0:n.split(" ").pop())||null;return {index:r,branch:o,name:s}},et=t=>t.map(T),rt=t=>B().find(e=>"name"in t?e.name===t.name:e.index===t.index),ot=t=>execFileSync("git",["stash","pop","--index",t.toString()],{stdio:"inherit"});var V=t=>JSON.parse(execSync(`npm list --json${t?" -g":""}`).toString()),at=(t,e)=>t in(V(e).dependencies||{});var K=t=>JSON.parse(j.readFileSync(A.resolve(t,"package.json")).toString()),lt=({root:t,name:e})=>{try{return !K(t).name.endsWith(e)}catch(r){throw new Error("Couldn't check if script is running in an external project.",{cause:r})}},mt=t=>{let e=t.match(/-(\w+)\.\d+/);return e?e[1]:null};var ft=()=>process.env.INIT_CWD||process.cwd(),gt=()=>new Map(process.argv.map(t=>({value:t,isValue:!t.startsWith("-")})).map((t,e,r)=>{switch(e){case 0:return ["--executable",t.value];case 1:return ["--scriptPath",t.value];default:{let o=r[e+1];if(!t.isValue)return o!=null&&o.isValue?[t.value,o.value]:[t.value,"true"]}}}).filter(Boolean));export{h as ErrorCode,O as FileSystem,Q as forEachDirectoryEntry,T as formatStash,et as formatStashList,tt as getDefaultRemote,M as getDefaultRemoteAndBranch,S as getDirectoryTree,V as getPackage,K as getPackageJson,mt as getPreReleaseTag,gt as getProcessOptions,ft as getProcessRoot,E as getRemotes,rt as getStashBy,B as getStashList,lt as isExternalPackage,at as isPackageInstalled,ot as popStashByIndex};