@stacksjs/dtsx
Version:
A modern, fast .d.ts generation tool, powered by Bun.
19 lines (15 loc) • 4.1 kB
JavaScript
// @bun
import{Af as S}from"./chunk-p0p65mbf.js";var y=null,Q=null;async function T(){if(y!==null)return y;try{return Q=await import("prettier"),y=!0,!0}catch{return y=!1,!1}}async function z(G,H){if(!Q)return null;try{if(H&&Q.resolveConfig){let J=await Q.resolveConfig(H);if(J)return J}if(G&&Q.resolveConfig){let J=await Q.resolveConfig(G);if(J)return J}return null}catch{return null}}async function D(G,H){if(!Q)throw Error("Prettier is not available");let J={...H,parser:H.parser||"typescript"};return Q.format(G,J)}function R(G,H={}){let{indentSize:J=2,useTabs:V=!1,maxLineWidth:Y=100,trailingNewline:K=!0,normalizeWhitespace:$=!0,sortImports:Z=!0,groupImports:X=!0}=H,q=G,j=V?"\t":" ".repeat(J);if(q.indexOf(`\r
`)!==-1)q=q.replace(/\r\n/g,`
`);if($){if(/[ \t]\n/.test(q)||/[ \t]$/.test(q))q=q.replace(/[ \t]+$/gm,"");if(q.indexOf(`
`)!==-1)q=q.replace(/\n{3,}/g,`
`);q=N(q,j)}if(Z||X)q=A(q,{sort:Z,group:X});if(Y>0)q=B(q,Y,j);if(K&&!q.endsWith(`
`))q+=`
`;return q}function N(G,H){let J=G.split(`
`),V=[];for(let Y of J){let K=Y.match(/^(\s*)(.*)$/);if(!K){V.push(Y);continue}let[,$,Z]=K;if(!Z){V.push("");continue}let X=$.replace(/\t/g," ").length,q=Math.floor(X/2);V.push(H.repeat(q)+Z)}return V.join(`
`)}function A(G,H){let J=G.split(`
`),V=[],Y=[],K=!1,$=0;for(let X=0;X<J.length;X++){let q=J[X],j=q.match(/^(import\s+(?:type\s+)?.*from\s+['"])([^'"]+)(['"].*)$/);if(j){K=!0,$=X;let F=j[1];V.push({line:q,source:j[2],isType:F.startsWith("import type ")||F.startsWith("import type\t")})}else if(K&&q.trim()==="")continue;else{if(K)K=!1;Y.push(q)}}if(V.length===0)return G;if(H.sort)V.sort((X,q)=>{if(X.isType!==q.isType)return X.isType?1:-1;return k(X.source,q.source)});let Z;if(H.group){let X=[],q=[],j=[],F=[],C=[];for(let E=0;E<V.length;E++){let U=V[E],_=U.source;if(_.charCodeAt(0)===46)C.push(U);else if(_.startsWith("node:"))X.push(U);else if(_.charCodeAt(0)===64)F.push(U);else if(_.includes("/"))j.push(U);else q.push(U)}Z=[...X.map((E)=>E.line),...X.length>0&&q.length>0?[""]:[],...q.map((E)=>E.line),...(X.length>0||q.length>0)&&j.length>0?[""]:[],...j.map((E)=>E.line),...F.length>0&&(X.length>0||q.length>0||j.length>0)?[""]:[],...F.map((E)=>E.line),...C.length>0?[""]:[],...C.map((E)=>E.line)]}else Z=V.map((X)=>X.line);return[...Z,"",...Y].join(`
`)}function k(G,H){let J=G.startsWith("node:"),V=H.startsWith("node:");if(J!==V)return J?-1:1;let Y=G.startsWith("."),K=H.startsWith(".");if(Y!==K)return Y?1:-1;return G.localeCompare(H)}function B(G,H,J){let V=G.split(`
`),Y=[];for(let K of V){if(K.length<=H){Y.push(K);continue}if(K.trimStart().startsWith("import ")){Y.push(K);continue}let $=K.match(/^(\s*)/)?.[1]||"",Z=$+J;if(K.includes("{")&&K.includes("}")){let X=L(K,H,$,Z);Y.push(...X);continue}if(K.includes(" | ")){let X=W(K,H,$,Z);Y.push(...X);continue}Y.push(K)}return Y.join(`
`)}function L(G,H,J,V){let Y=G.match(/^(\s*)(.*?)(\{)(.+)(\}.*)$/);if(!Y)return[G];let[,,K,$,Z,X]=Y,q=Z.split(/;\s*|,\s*/).filter((F)=>F.trim());if(q.length<=1)return[G];return[`${J}${K}${$}`,...q.map((F)=>`${V}${F.trim()};`),`${J}${X.trim()}`]}function W(G,H,J,V){let Y=G.match(/^(\s*)(.*?=\s*)(.+)$/);if(!Y)return[G];let[,,K,$]=Y,Z=$.split(/\s*\|\s*/).filter((q)=>q.trim());if(Z.length<=2)return[G];return[`${J}${K}`,...Z.map((q,j)=>`${V}${j>0?"| ":" "}${q.trim()}`)]}async function O(G,H={},J){let V=[];if(H.usePrettier!==!1){if(await T())try{let Z={...await z(H.prettierConfigPath,J),...H.prettierOptions,parser:"typescript"};return{content:await D(G,Z),usedPrettier:!0}}catch($){V.push(`Prettier formatting failed: ${$}. Using built-in formatter.`)}else if(H.usePrettier===!0)V.push("Prettier requested but not available. Using built-in formatter.")}return{content:R(G,H.builtIn),usedPrettier:!1,warnings:V.length>0?V:void 0}}async function M(G,H={}){let J=new Map;for(let[V,Y]of G){let K=await O(Y,H,V);J.set(V,K)}return J}function v(G={}){return{format:(H,J)=>O(H,G,J),formatMany:(H)=>M(H,G)}}async function w(G){return(await O(G,{usePrettier:!0,builtIn:{indentSize:2,normalizeWhitespace:!0,sortImports:!0,trailingNewline:!0}})).content}
export{O as zc,M as Ac,v as Bc,w as Cc};