@alessiofrittoli/node-scripts
Version:
Utility library with common Node.js scripts
4 lines • 4.26 kB
JavaScript
;var code=require('@alessiofrittoli/exception/code'),A=require('path'),j=require('fs'),exception=require('@alessiofrittoli/exception'),child_process=require('child_process');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var A__default=/*#__PURE__*/_interopDefault(A);var j__default=/*#__PURE__*/_interopDefault(j);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({},code.ErrorCode),O);var S=(t,e)=>{if(e!=null&&e.includes(t))return [];if(!j.existsSync(t))throw new exception.Exception(`No such file or directory, '${t}'`,{code:h.ENOENT});let r=j.lstatSync(t),o=A.parse(t),s=r.isFile(),n={path:t,parsedPath:o,stats:r};return s?[n]:[...j.readdirSync(t).map(a=>S(A.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=child_process.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=child_process.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=()=>child_process.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=>child_process.execFileSync("git",["stash","pop","--index",t.toString()],{stdio:"inherit"});var V=t=>JSON.parse(child_process.execSync(`npm list --json${t?" -g":""}`).toString()),at=(t,e)=>t in(V(e).dependencies||{});var K=t=>JSON.parse(j__default.default.readFileSync(A__default.default.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));exports.ErrorCode=h;exports.FileSystem=O;exports.forEachDirectoryEntry=Q;exports.formatStash=T;exports.formatStashList=et;exports.getDefaultRemote=tt;exports.getDefaultRemoteAndBranch=M;exports.getDirectoryTree=S;exports.getPackage=V;exports.getPackageJson=K;exports.getPreReleaseTag=mt;exports.getProcessOptions=gt;exports.getProcessRoot=ft;exports.getRemotes=E;exports.getStashBy=rt;exports.getStashList=B;exports.isExternalPackage=lt;exports.isPackageInstalled=at;exports.popStashByIndex=ot;