UNPKG

@stacksjs/dtsx

Version:

A modern, fast .d.ts generation tool, powered by Bun.

8 lines (7 loc) 4.05 kB
// @bun import{Uc as S}from"./chunk-nkp89e28.js";function y(q,E){let v=q.length,I=E.length,J=Array.from({length:v+1},()=>Array(I+1).fill(0));for(let K=1;K<=v;K++)for(let Q=1;Q<=I;Q++)if(q[K-1]===E[Q-1])J[K][Q]=J[K-1][Q-1]+1;else J[K][Q]=Math.max(J[K-1][Q],J[K][Q-1]);return J}function z(q,E,v,I,J){let K=[];while(I>0||J>0)if(I>0&&J>0&&E[I-1]===v[J-1])K.unshift({op:"equal",oldIdx:I-1,newIdx:J-1,line:E[I-1]}),I--,J--;else if(J>0&&(I===0||q[I][J-1]>=q[I-1][J]))K.unshift({op:"add",newIdx:J-1,line:v[J-1]}),J--;else if(I>0)K.unshift({op:"remove",oldIdx:I-1,line:E[I-1]}),I--;return K}function x(q,E){let v=q;if(E.ignoreWhitespace)v=v.replace(/\s+/g," ").trim();return v}function M(q,E,v,I={}){let{context:J=3,ignoreWhitespace:K=!1,ignoreBlankLines:Q=!1}=I,V=q.split(` `),Z=E.split(` `);if(V[V.length-1]==="")V.pop();if(Z[Z.length-1]==="")Z.pop();let B=V.map((R)=>x(R,{ignoreWhitespace:K})),X=Z.map((R)=>x(R,{ignoreWhitespace:K})),_=B,O=X,H=V.map((R,A)=>A),$=Z.map((R,A)=>A);if(Q)_=[],O=[],H=[],$=[],B.forEach((R,A)=>{if(R.trim())_.push(R),H.push(A)}),X.forEach((R,A)=>{if(R.trim())O.push(R),$.push(A)});let N=y(_,O),U=z(N,_,O,_.length,O.length),G=U.every((R)=>R.op==="equal"),W=0,Y=0,T=0;for(let R of U)if(R.op==="add")W++;else if(R.op==="remove")Y++;else T++;let D=b(U,V,Z,H,$,J);return{filePath:v,identical:G,hunks:D,stats:{additions:W,deletions:Y,unchanged:T},oldContent:q,newContent:E}}function b(q,E,v,I,J,K){let Q=[],V=[];if(q.forEach((X,_)=>{if(X.op!=="equal")V.push(_)}),V.length===0)return Q;let Z=[],B=[V[0]];for(let X=1;X<V.length;X++)if(V[X]-V[X-1]<=K*2+1)B.push(V[X]);else Z.push(B),B=[V[X]];Z.push(B);for(let X of Z){let _=Math.max(0,X[0]-K),O=Math.min(q.length-1,X[X.length-1]+K),H=q.slice(_,O+1),$=[],N=1,U=1,G=0,W=0;for(let Y=0;Y<_;Y++){let T=q[Y];if(T.op==="equal"||T.op==="remove")N++;if(T.op==="equal"||T.op==="add")U++}for(let Y of H)if(Y.op==="equal")$.push(` ${Y.line}`),G++,W++;else if(Y.op==="remove")$.push(`-${Y.line}`),G++;else if(Y.op==="add")$.push(`+${Y.line}`),W++;Q.push({operation:"equal",lines:$,oldStart:N,oldCount:G,newStart:U,newCount:W})}return Q}function g(q){if(q.identical)return"";let E=[];E.push(`--- a/${q.filePath}`),E.push(`+++ b/${q.filePath}`);for(let v of q.hunks)E.push(`@@ -${v.oldStart},${v.oldCount} +${v.newStart},${v.newCount} @@`),E.push(...v.lines);return E.join(` `)}function P(q){if(q.identical)return`\x1B[32m\u2713 ${q.filePath} (unchanged)\x1B[0m`;let E=[],v=`+${q.stats.additions} -${q.stats.deletions}`;E.push(`\x1B[1m${q.filePath}\x1B[0m \x1B[90m(${v})\x1B[0m`),E.push("");for(let I of q.hunks){E.push(`\x1B[36m@@ -${I.oldStart},${I.oldCount} +${I.newStart},${I.newCount} @@\x1B[0m`);for(let J of I.lines)if(J.startsWith("+"))E.push(`\x1B[32m${J}\x1B[0m`);else if(J.startsWith("-"))E.push(`\x1B[31m${J}\x1B[0m`);else E.push(`\x1B[90m${J}\x1B[0m`);E.push("")}return E.join(` `)}function f(q){if(q.identical)return`${q.filePath}: unchanged`;return`${q.filePath}: +${q.stats.additions} -${q.stats.deletions} lines`}async function F(q,E,v={}){let I="";try{let J=S(q);if(await J.exists())I=await J.text();else if(!v.treatMissingAsEmpty)return M("",E,q,v)}catch{if(!v.treatMissingAsEmpty)return M("",E,q,v)}return M(I,E,q,v)}async function L(q,E={}){let v=new Map;for(let[I,J]of q){let K=await F(I,J,E);v.set(I,K)}return v}function k(q){let E=0,v=0,I=0,J=0,K=0;for(let Q of q.values())if(Q.identical)v++;else if(E++,I+=Q.stats.additions,J+=Q.stats.deletions,!Q.oldContent)K++;return{totalFiles:q.size,changedFiles:E,unchangedFiles:v,totalAdditions:I,totalDeletions:J,newFiles:K}}function C(q){console.log(P(q))}function m(q,E=!1){for(let I of q.values()){if(I.identical&&!E)continue;C(I)}let v=k(q);if(console.log(""),console.log(`\x1B[1mSummary:\x1B[0m ${v.totalFiles} files, ${v.changedFiles} changed, ${v.unchangedFiles} unchanged`),v.changedFiles>0)console.log(` \x1B[32m+${v.totalAdditions}\x1B[0m \x1B[31m-${v.totalDeletions}\x1B[0m lines`);if(v.newFiles>0)console.log(` ${v.newFiles} new files`)} export{M as F,g as G,P as H,f as I,F as J,L as K,k as L,C as M,m as N};