@stacksjs/dtsx
Version:
A modern, fast .d.ts generation tool, powered by Bun.
22 lines (21 loc) • 29.2 kB
JavaScript
// @bun
var T=!1,P=null;function Jz(z){if(z.indexOf("/*")===-1)return z.trim();let J=[],Z=0,X=0,F=z.length;while(X<F)if(z.charCodeAt(X)===47&&X+1<F&&z.charCodeAt(X+1)===42){if(X>Z)J.push(z.substring(Z,X));X+=2;while(X<F-1){if(z.charCodeAt(X)===42&&z.charCodeAt(X+1)===47){X+=2;break}X++}Z=X}else X++;if(Z<F)J.push(z.substring(Z));return J.join("").trim()}function Iz(){T=!0,P=null}function Dz(){T=!1;let z=P;return P=null,z}function m(z){let Y=z.length;if(Y===0)return!1;let J=0;if(z.charCodeAt(J)===45)J++;if(J>=Y)return!1;let Z=J;while(J<Y&&z.charCodeAt(J)>=48&&z.charCodeAt(J)<=57)J++;if(J===Z)return!1;if(J<Y&&z.charCodeAt(J)===46){J++;let X=J;while(J<Y&&z.charCodeAt(J)>=48&&z.charCodeAt(J)<=57)J++;if(J===X)return!1}return J===Y}function Xz(z){for(let Y=0,J=z.length-1;Y<J;Y++){let Z=z.charCodeAt(Y);if(Z<48||Z>57)return!1}return!0}function v(z,Y){let J=0,Z=0;while((Z=z.indexOf(Y,Z))!==-1)J++,Z+=Y.length;return J}function x(z){let Y=z.length,J=!1;for(let $=1;$<Y;$++)if(z.charCodeAt($)<=32&&z.charCodeAt($-1)<=32){J=!0;break}if(!J)for(let $=0;$<Y;$++){let H=z.charCodeAt($);if(H===10||H===13||H===9){J=!0;break}}if(!J)return z;let Z=[],X=-1,F=!1;for(let $=0;$<Y;$++)if(z.charCodeAt($)<=32){if(!F){if(X>=0)Z.push(z.substring(X,$));Z.push(" "),F=!0,X=-1}}else{if(F||X<0)X=$;F=!1}if(X>=0)Z.push(z.substring(X));return Z.join("")}function E(z,Y=!1,J=!1,Z=0){if(!z||typeof z!=="string")return"unknown";if(Z>=20)return"unknown";let X=z.trim();if(X.startsWith("BigInt("))return"bigint";if(X.startsWith("Symbol.for("))return"symbol";if(X.includes(".raw`")||X.includes("String.raw`"))return"string";if(X.startsWith("`")&&X.endsWith("`")){if(!Y||X.includes("${")||X.includes(`
`)||X.includes("\r"))return"string";return X}if(X.charCodeAt(0)===39||X.charCodeAt(0)===34){let F=Yz(X);if(F!==null){if(F==="string"||!Y)return"string";return F}}if(m(X)){if(!Y)return"number";return X}if(X==="true"||X==="false"){if(!Y)return"boolean";return X}if(X==="null")return"null";if(X==="undefined")return"undefined";if(X.startsWith("[")&&X.endsWith("]"))return y(X,Y,Z+1);if(X.startsWith("{")&&X.endsWith("}"))return jz(X,Y,Z+1);if(X.startsWith("class ")||X.startsWith("class{"))return Nz(X);if(X.startsWith("new "))return qz(X);if(X.endsWith("as const")){let F=X.slice(0,-8).trim();if(F.startsWith("[")&&F.endsWith("]")){let $=F.slice(1,-1).trim();if(!$)return"readonly []";let H=f($),Q=[];for(let L=0;L<H.length;L++)Q.push(E(H[L].trim(),!0,!1,Z+1));return`readonly [${Q.join(", ")}]`}return E(F,!0,J,Z+1)}if(X.includes("=>")||X.startsWith("function")||X.startsWith("async"))return zz(X,J,Z,Y);if(X.startsWith("`")&&X.endsWith("`"))return Uz(X,Y);if(X.startsWith("Promise."))return t(X,Y,Z);if(X.startsWith("await "))return"unknown";if(X.charCodeAt(X.length-1)===110&&X.length>1&&Xz(X)){if(Y)return X;return"bigint"}if(X.startsWith("Symbol(")||X==="Symbol.for")return"symbol";if(Fz(X))return"boolean";if(Qz(X))return"number";return"unknown"}function l(z){let Y=z.charCodeAt(0);if(Y!==39&&Y!==34)return!1;return S(z,0,Y)===z.length}function Yz(z){if(l(z))return z;let Y=Zz(z);if(Y.length<2)return null;let J=!1,Z=!0,X="";for(let F of Y){let $=F.trim();if(l($))J=!0,X+=$z($);else Z=!1}if(Z)return Hz(X);if(J)return"string";return null}function Zz(z){let Y=[],J=0,Z=0,X=0;while(X<z.length){let F=z.charCodeAt(X);if(F===39||F===34||F===96){X=S(z,X,F);continue}if(F===40||F===91||F===123)J++;else if(F===41||F===93||F===125)J--;else if(F===43&&J===0)Y.push(z.slice(Z,X)),Z=X+1;X++}return Y.push(z.slice(Z)),Y}function $z(z){return z.slice(1,-1).replace(/\\(.)/g,(J,Z)=>{if(Z==="n")return`
`;if(Z==="t")return"\t";if(Z==="r")return"\r";if(Z==="0")return"\x00";return Z})}function Hz(z){return`'${z.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}'`}function Qz(z){if(z==="")return!1;let Y=!1,J=!1;for(let Z=0;Z<z.length;Z++){let X=z.charCodeAt(Z);if(X>=48&&X<=57){Y=!0;continue}if(X===43||X===45||X===42||X===47||X===37){J=!0;continue}if(X===46||X===40||X===41||X<=32)continue;return!1}return Y&&J}function Fz(z){let Y=0;for(let J=0;J<z.length;J++){let Z=z.charCodeAt(J);if(Z===34||Z===39||Z===96){J=S(z,J,Z)-1;continue}if(Z===40||Z===91||Z===123){Y++;continue}if(Z===41||Z===93||Z===125){Y--;continue}if(Y!==0)continue;if(z.startsWith("===",J)||z.startsWith("!==",J)||z.startsWith("==",J)||z.startsWith("!=",J)||z.startsWith(">=",J)||z.startsWith("<=",J))return!0;if((Z===62||Z===60)&&z.charCodeAt(J-1)!==61&&z.charCodeAt(J+1)!==61)return!0}return!1}function Gz(z,Y=!1,J=0){return E(z,Y,!0,J)}function c(z,Y=!1,J=""){let Z=a(J),X=[],F=!1,$=0;while($<z.length){let Q=z.charCodeAt($);if(Q===34||Q===39||Q===96){$=S(z,$,Q);continue}if(Q===47&&z.charCodeAt($+1)===47){$+=2;while($<z.length&&z.charCodeAt($)!==10&&z.charCodeAt($)!==13)$++;continue}if(Q===47&&z.charCodeAt($+1)===42){let W=z.indexOf("*/",$+2);$=W===-1?z.length:W+2;continue}if(z.startsWith("function",$)&&d(z,$,8)||z.startsWith("class",$)&&d(z,$,5)){let W=Wz(z,$);if(W!==-1){$=p(z,W);continue}}if(Q===61&&z.charCodeAt($+1)===62){let W=$+2;while(W<z.length&&z.charCodeAt(W)<=32)W++;if(z.charCodeAt(W)===123){$=p(z,W);continue}}if(z.startsWith("return",$)&&($===0||!D(z.charCodeAt($-1)))&&!D(z.charCodeAt($+6))){$+=6;let W=!1;while($<z.length&&z.charCodeAt($)<=32){let j=z.charCodeAt($);if(j===10||j===13)W=!0;$++}if(W||$>=z.length||z.charCodeAt($)===59||z.charCodeAt($)===125){F=!0;continue}let q=$,O=0,N=0,G=0;while($<z.length){let j=z.charCodeAt($);if(j===34||j===39||j===96){$=S(z,$,j);continue}if(j===47&&z.charCodeAt($+1)===47)break;if(j===47&&z.charCodeAt($+1)===42){let V=z.indexOf("*/",$+2);$=V===-1?z.length:V+2;continue}if(j===40)O++;else if(j===41)O--;else if(j===91)N++;else if(j===93)N--;else if(j===123)G++;else if(j===125){if(G===0&&O===0&&N===0)break;G--}else if(j===59&&O===0&&N===0&&G===0)break;$++}let U=z.slice(q,$).trim(),M=b(U,Z);if(!X.includes(M))X.push(M);continue}$++}if(F&&!X.includes("undefined"))X.push("undefined");let H=X.includes("unknown")?"unknown":X.length===0?"void":X.join(" | ");return Y&&!H.startsWith("Promise<")?`Promise<${H}>`:H}function a(z){let Y=new Map,J=z.startsWith("(")&&z.endsWith(")")?z.slice(1,-1):z,Z=0,X=0,F=0;for(let $=0;$<=J.length;$++){let H=J.charCodeAt($);if(H===40||H===91||H===123)X++;else if(H===41||H===93||H===125)X--;else if(H===60)F++;else if(H===62&&J.charCodeAt($-1)!==61&&F>0)F--;if($!==J.length&&(H!==44||X!==0||F!==0))continue;let Q=J.slice(Z,$).trim(),L=Q.indexOf(":");if(L!==-1){let W=Q.slice(0,L).trim().replace(/^\.\.\./,"").replace(/\?$/,""),q=Q.slice(L+1).trim(),O=q.indexOf("=");if(O!==-1)q=q.slice(0,O).trim();if(g(W)&&q)Y.set(W,q)}Z=$+1}return Y}function b(z,Y){let J=z.trim();while(Oz(J))J=J.slice(1,-1).trim();if(J.startsWith("await ")){let H=b(J.slice(6),Y);return H.startsWith("Promise<")&&H.endsWith(">")?H.slice(8,-1):H}if(Y.has(J))return Y.get(J);if(J.startsWith("!"))return"boolean";if(J.startsWith("fetch("))return"Promise<Response>";let Z=Lz(J);if(Z){let H=b(Z.whenTrue,Y),Q=b(Z.whenFalse,Y);return H===Q?H:`${H} | ${Q}`}if(["===","!==","==","!=",">=","<="].some((H)=>J.includes(H))||J.includes(" > ")||J.includes(" < "))return"boolean";let F=0;for(let H=J.length-1;H>=0;H--){let Q=J.charCodeAt(H);if(Q===41||Q===93||Q===125)F++;else if(Q===40||Q===91||Q===123)F--;else if(F===0&&(Q===43||Q===45||Q===42||Q===47||Q===37)){let L=b(J.slice(0,H),Y),W=b(J.slice(H+1),Y);if(Q===43&&(L==="string"||W==="string"))return"string";if(L==="number"&&W==="number")return"number";break}}return E(J,!1).replace(/\btypeof\s+[$A-Z_a-z][$\w]*/g,(H)=>{let Q=H.slice(7);return Y.get(Q)??"unknown"})}function Oz(z){if(!z.startsWith("(")||!z.endsWith(")"))return!1;let Y=0;for(let J=0;J<z.length;J++){let Z=z.charCodeAt(J);if(Z===40)Y++;else if(Z===41&&--Y===0)return J===z.length-1}return!1}function Lz(z){let Y=0,J=-1;for(let Z=0;Z<z.length;Z++){let X=z.charCodeAt(Z);if(X===40||X===91||X===123)Y++;else if(X===41||X===93||X===125)Y--;else if(X===63&&Y===0&&z.charCodeAt(Z+1)!==63)J=Z;else if(X===58&&Y===0&&J!==-1)return{whenTrue:z.slice(J+1,Z),whenFalse:z.slice(Z+1)}}return null}function d(z,Y,J){return(Y===0||!D(z.charCodeAt(Y-1)))&&!D(z.charCodeAt(Y+J))}function Wz(z,Y){for(let J=Y;J<z.length;J++){let Z=z.charCodeAt(J);if(Z===34||Z===39||Z===96){J=S(z,J,Z)-1;continue}if(Z===123)return J;if(Z===59)return-1}return-1}function p(z,Y){let J=1,Z=Y+1;while(Z<z.length&&J>0){let X=z.charCodeAt(Z);if(X===34||X===39||X===96){Z=S(z,Z,X);continue}if(X===47&&z.charCodeAt(Z+1)===47){Z+=2;while(Z<z.length&&z.charCodeAt(Z)!==10&&z.charCodeAt(Z)!==13)Z++;continue}if(X===47&&z.charCodeAt(Z+1)===42){let F=z.indexOf("*/",Z+2);Z=F===-1?z.length:F+2;continue}if(X===123)J++;else if(X===125)J--;Z++}return Z}function S(z,Y,J){let Z=Y+1;while(Z<z.length){let X=z.charCodeAt(Z);if(X===92){Z+=2;continue}if(Z++,X===J)break}return Z}function Uz(z,Y){if(z.includes(".raw`")||z.includes("String.raw`"))return"string";if(!Y||z.includes("${")||z.includes(`
`)||z.includes("\r"))return"string";return z}function qz(z){let Y=4;while(Y<z.length&&z.charCodeAt(Y)<=32)Y++;let J=Y,Z=z.charCodeAt(Y);if(Z<65||Z>90)return"unknown";while(Y<z.length&&(D(z.charCodeAt(Y))||z.charCodeAt(Y)===46))Y++;if(Y===J)return"unknown";let X=z.slice(J,Y);{let F=z.slice(Y),$=F;if(F.startsWith("<")){let Q=0,L=-1;for(let W=0;W<F.length;W++)if(F[W]==="<")Q++;else if(F[W]===">"){if(Q--,Q===0){L=W;break}}if(L!==-1){let W=F.slice(0,L+1);$=F.slice(L+1);let q=$.indexOf("(");if(q!==-1){let O=0,N=-1;for(let G=q;G<$.length;G++)if($[G]==="(")O++;else if($[G]===")"){if(O--,O===0){N=G;break}}if(N!==-1){if($.slice(N+1).trimStart().startsWith("."))return"unknown"}}return`${X}${W}`}}let H=$.indexOf("(");if(H!==-1){let Q=0,L=-1;for(let W=H;W<$.length;W++)if($[W]==="(")Q++;else if($[W]===")"){if(Q--,Q===0){L=W;break}}if(L!==-1){if($.slice(L+1).trimStart().startsWith("."))return"unknown"}}switch(X){case"Date":return"Date";case"Map":return"Map<any, any>";case"Set":return"Set<any>";case"WeakMap":return"WeakMap<any, any>";case"WeakSet":return"WeakSet<any>";case"RegExp":return"RegExp";case"Error":return"Error";case"Array":return"any[]";case"Object":return"object";case"Function":return"Function";case"Promise":return"Promise<any>";default:return X}}return"unknown"}function Nz(z){let Y=z.trimStart(),J=5;while(J<Y.length&&Y.charCodeAt(J)<=32)J++;let Z=J;if(J<Y.length&&D(Y.charCodeAt(J))){while(J<Y.length&&D(Y.charCodeAt(J)))J++;return`typeof ${Y.slice(Z,J)}`}return"{ new (...args: any[]): any }"}function t(z,Y,J=0){if(z.startsWith("Promise.resolve(")){let X=z.indexOf(")",16);if(X!==-1){let F=z.slice(16,X).trim();if(F)return`Promise<${E(F,Y,!1,J+1)}>`}return"Promise<unknown>"}if(z.startsWith("Promise.reject("))return"Promise<never>";if(z.startsWith("Promise.all(")){let Z=z.indexOf("[",12),X=z.lastIndexOf("]");if(Z!==-1&&X>Z){let F=z.slice(Z+1,X).trim(),$=f(F),H=[];for(let Q=0;Q<$.length;Q++){let L=$[Q].trim();if(L.startsWith("Promise.resolve(")){let W=t(L,Y,J+1),q=W.indexOf("<"),O=W.lastIndexOf(">");H.push(q!==-1&&O>q?W.slice(q+1,O):"unknown")}else H.push(E(L,Y,!1,J+1))}return`Promise<[${H.join(", ")}]>`}return"Promise<unknown[]>"}return"Promise<unknown>"}function y(z,Y,J=0){let Z=z.slice(1,-1).trim();if(!Z)return"never[]";if(J>=20)return"unknown[]";let X=f(Z),F=!1;for(let O=0;O<X.length;O++){let N=X[O],G=N.length;while(G>0&&N.charCodeAt(G-1)<=32)G--;if(G>=8&&N.slice(G-8,G)==="as const"){F=!0;break}}if(F){let O=[];for(let N=0;N<X.length;N++){let G=X[N].trim();if(G.endsWith("as const")){let U=G.slice(0,-8).trim();if(U.startsWith("[")&&U.endsWith("]")){let M=U.slice(1,-1).trim(),j=f(M),V=[];for(let R=0;R<j.length;R++)V.push(E(j[R].trim(),!0,!1,J+1));O.push(`readonly [${V.join(", ")}]`)}else O.push(E(U,!0,!1,J+1))}else if(G.startsWith("[")&&G.endsWith("]"))O.push(y(G,!0,J+1));else O.push(E(G,!0,!1,J+1))}return`readonly [
${O.join(` |
`)}
]`}let $=T&&!Y,H=[],Q=[];for(let O of X){let N=O.trim(),G=P;if(P=null,N.startsWith("...")){let U=N.slice(3).trim(),M=E(U,!1,!1,J+1);if(M.endsWith("[]"))H.push(M.slice(0,-2));else if(M.startsWith("readonly [")&&M.endsWith("]"))H.push(M.slice(10,-1));else if(o(U))H.push(`(typeof ${U})[number]`);else H.push("unknown")}else if(N.startsWith("[")&&N.endsWith("]"))H.push(y(N,Y,J+1));else H.push(Gz(N,Y,J+1));if($)Q.push(P);P=G}if($)if(u(z))P=x(z);else{let O=[];for(let N=0;N<X.length;N++){let G=X[N].trim();if(G.endsWith("as const"))continue;if(h(G)||G==="null"||G==="undefined")O.push(G);else if(G.startsWith("[")&&u(G))O.push(x(G));else if(G.startsWith("{")){if(Q[N])O.push(Q[N])}else{let U=E(G,!1,!1,0);if(U!=="unknown")O.push(U)}}if(O.length>0)P=`[${O.join(", ")}]`}if(Y)return`readonly [${H.join(", ")}]`;let L=new Set,W=[],q=!0;for(let O of H){if(!L.has(O))L.add(O),W.push(O);if(q){if(!(m(O)||O==="true"||O==="false"||O.charCodeAt(0)===34&&O.charCodeAt(O.length-1)===34||O.charCodeAt(0)===39&&O.charCodeAt(O.length-1)===39))q=!1}}if(q&&H.length<=10)return`readonly [${H.join(", ")}]`;if(W.length===1)return`${W[0]}[]`;return`(${W.join(" | ")})[]`}function f(z){let Y=[],J=0,Z=0,X=!1,F=0;for(let H=0;H<z.length;H++){let Q=z.charCodeAt(H);if(!X&&(Q===34||Q===39||Q===96))X=!0,F=Q;else if(X&&Q===F&&(H===0||z.charCodeAt(H-1)!==92))X=!1;if(!X){if(Q===91||Q===123||Q===40)Z++;else if(Q===93||Q===125||Q===41)Z--;else if(Q===44&&Z===0){let L=z.substring(J,H).trim();if(L)Y.push(L);J=H+1;continue}}}let $=z.substring(J).trim();if($)Y.push($);return Y}function h(z){if(m(z))return!0;if(z==="true"||z==="false")return!0;if(z.startsWith('"')&&z.endsWith('"')||z.startsWith("'")&&z.endsWith("'"))return!0;return!1}function Mz(z){return z==="number"||z==="string"||z==="boolean"}function u(z){let Y=!1,J=0,Z=z.length;for(let X=0;X<Z;X++){let F=z.charCodeAt(X);if(Y){if(F===92){X++;continue}if(F===J)Y=!1;continue}if(F===34||F===39||F===96){Y=!0,J=F;continue}if(F===61&&X+1<Z&&z.charCodeAt(X+1)===62)return!1;if(F>=97&&F<=122){let $=X;while(X<Z&&(z.charCodeAt(X)>=97&&z.charCodeAt(X)<=122||z.charCodeAt(X)>=65&&z.charCodeAt(X)<=90||z.charCodeAt(X)>=48&&z.charCodeAt(X)<=57||z.charCodeAt(X)===95||z.charCodeAt(X)===36))X++;let H=z.slice($,X);if(H==="new"||H==="async"||H==="await"||H==="function"||H==="yield"||H==="console"||H==="process")return!1;let Q=X;while(Q<Z&&z.charCodeAt(Q)<=32)Q++;if(Q<Z&&z.charCodeAt(Q)===40)return!1;X--}}return!0}function jz(z,Y,J=0){let Z=z.slice(1,-1).trim();if(!Z)return"{}";if(J>=20)return"Record<string, unknown>";let X=Az(Z),F=[],$=[],H=T&&!Y,Q=[];for(let[q,O]of X){let{comments:N,key:G}=Vz(q),U=N?`${N}
`:"",M=G,j=!1;if(G==="..."){let A=O.trim(),I=o(A)?`typeof ${A}`:E(A,Y,!1,J+1);if(I!=="unknown")$.push(I);if(H&&(o(A)||A.startsWith("{")))Q.push(`...${x(A)}`);continue}let V=P;P=null;let R,B=O.trim();if(B===G&&g(B))R=`typeof ${B}`;else if(_z(B)){j=!0;let A=wz(G);if(A){M=A.name;let I="";if(B.startsWith("async "))I="async ";if(B.charCodeAt(I.length)===42)I+="*";R=s(A.name,I+A.typeParams+B.slice(I.length))}else R=s(G,B)}else if(R=E(O,Y,!1,J+1),R.includes("=>")||R.includes("function")||R.includes("async"))R=Rz(R);let _=P;P=V;let K=O.trim(),w=Pz(G);if(w){let A=Ez(w.kind,w.name,R);if(A){F.push(`${U}${A}`);continue}}if(!Y&&Mz(R)&&h(K))F.push(`${U}/** @defaultValue ${K} */
${M}: ${R}`);else F.push(`${U}${M}: ${R}`);if(H){let A=Jz(M);if(K.endsWith("as const"));else if(h(K))Q.push(`${A}: ${K}`);else if(K.startsWith("[")&&u(K))Q.push(`${A}: ${x(K)}`);else if(K.startsWith("{")){if(_)Q.push(`${A}: ${_}`)}else if(j)Q.push(`${A}: ${x(R)}`);else if(!K.startsWith("[")&&(K.includes("=>")||K.startsWith("function")||K.startsWith("async"))){let I=zz(K,!1,0,!0);Q.push(`${A}: ${I}`)}}}if(H&&Q.length>0){let q=J>0?(J-1)/2:0,O=`{ ${Q.join(", ")} }`;if(O.length<=80)P=O;else{let N=" ".repeat((q+1)*2),G=" ".repeat(q*2);P=`{
${N}${Q.join(`,
${N}`)}
${G}}`}}let L=F.length>0?`{
${F.join(`;
`)}
}`:"{}";if($.length===0)return L;let W=$[0];for(let q=1;q<$.length;q++)W=`Omit<${W}, keyof ${$[q]}> & ${$[q]}`;return F.length>0?`Omit<${W}, keyof ${L}> & ${L}`:W}function g(z){if(!z)return!1;let Y=z.charCodeAt(0);if(!(Y>=65&&Y<=90||Y>=97&&Y<=122||Y===95||Y===36||Y>127))return!1;for(let J=1;J<z.length;J++)if(!D(z.charCodeAt(J)))return!1;return!0}function o(z){let Y=z.split(".");return Y.length>0&&Y.every(g)}function Rz(z){let J=z.split(`
`).map((W)=>r(W)).join(`
`),Z=J.indexOf("async");if(Z!==-1){let W=Z>0?J.charCodeAt(Z-1):32,q=Z+5<J.length?J.charCodeAt(Z+5):32;if(!D(W)&&!D(q))J=(J.slice(0,Z)+J.slice(Z+5)).trim()}let X=J.indexOf("(");if(X!==-1){let W=k(J,X,"(",")");if(W!==-1){let q=J.slice(X,W+1),O=C(q);J=J.slice(0,X)+O+J.slice(W+1)}}let F=J.length,$="",H=[],Q=!1,L=!1;for(let W=0;W<F;W++){let q=J.charCodeAt(W);if(q===123||q===40)H.push(q);else if(q===125||q===41)H.pop();if(q<=32){if(Q=!0,q===10||q===13)L=!0;continue}if(Q&&$.length>0){let N=(H.length>0?H[H.length-1]:0)===123;if(L&&N){let G=$.charCodeAt($.length-1),U=G===59||G===44||G===123||q===125,M=$.length>=2&&$.charCodeAt($.length-1)===47&&$.charCodeAt($.length-2)===42;if(!U&&!M)$+="; ";else $+=" "}else $+=" "}Q=!1,L=!1,$+=J[W]}return $.trim()}function D(z){return z>=97&&z<=122||z>=65&&z<=90||z>=48&&z<=57||z===95||z===36}function C(z){let Y=z.trim(),J,Z=!1;if(Y.startsWith("(")&&Y.endsWith(")"))J=Y.slice(1,-1),Z=!0;else J=Y;let X=J.trim();if(!X)return Z?"()":"";let F=!1;{let G=0;for(let U=0;U<X.length;U++){let M=X.charCodeAt(U);if(M===40||M===60||M===91||M===123)G++;else if(M===41||M===62||M===93||M===125)G--;else if(G===0&&M===61){let j=U>0?X.charCodeAt(U-1):0,V=U+1<X.length?X.charCodeAt(U+1):0;if(j!==61&&j!==33&&j!==60&&j!==62&&V!==61&&V!==62){F=!0;break}}}}if(!F)return Y;let $=[],H=[],Q=0,L=0,W=!1,q=0;for(let G=0;G<=X.length;G++){if(G===X.length){$.push(X.slice(Q));break}let U=X.charCodeAt(G);if(W){if(U===92){G++;continue}if(U===q)W=!1;continue}if(U===47&&G+1<X.length){let M=X.charCodeAt(G+1);if(M===42){G+=2;while(G+1<X.length&&!(X.charCodeAt(G)===42&&X.charCodeAt(G+1)===47))G++;G++;continue}if(M===47){while(G<X.length&&X.charCodeAt(G)!==10)G++;continue}}if(U===39||U===34||U===96){W=!0,q=U;continue}if(U===40||U===60||U===91||U===123)L++;else if(U===41||U===62||U===93||U===125)L--;else if(U===44&&L===0){$.push(X.slice(Q,G));let M=",",j=G+1;while(j<X.length&&X.charCodeAt(j)<=32)M+=X[j],j++;H.push(M),Q=j}}let O=[];for(let G of $){let U=G.trim();if(!U){O.push(G);continue}if(U.startsWith("//"))continue;let M=r(U),j=G.slice(0,G.length-G.trimStart().length);O.push(j+Bz(M))}let N=O[0]||"";for(let G=1;G<O.length;G++)N+=(H[G-1]||", ")+O[G];return Z?`(${N})`:N}function r(z){let Y=!1,J=0;for(let Z=0;Z<z.length-1;Z++){let X=z.charCodeAt(Z);if(Y){if(X===92){Z++;continue}if(X===J)Y=!1;continue}if(X===39||X===34||X===96){Y=!0,J=X;continue}if(X===47&&z.charCodeAt(Z+1)===47)return z.slice(0,Z).trimEnd()}return z}function Bz(z){if(z.startsWith("..."))return z;let Y=-1,J=-1,Z=0,X=!1,F=0;for(let H=0;H<z.length;H++){let Q=z.charCodeAt(H);if(X){if(Q===92){H++;continue}if(Q===F)X=!1;continue}if(Q===47&&H+1<z.length){let L=z.charCodeAt(H+1);if(L===42){H+=2;while(H+1<z.length&&!(z.charCodeAt(H)===42&&z.charCodeAt(H+1)===47))H++;H++;continue}if(L===47){while(H<z.length&&z.charCodeAt(H)!==10)H++;continue}}if(Q===39||Q===34||Q===96){X=!0,F=Q;continue}if(Q===40||Q===60||Q===91||Q===123)Z++;else if(Q===41||Q===62||Q===93||Q===125)Z--;else if(Z===0){if(Q===58&&Y===-1)Y=H;else if(Q===61&&J===-1&&(H===0||z.charCodeAt(H-1)!==61)&&(H+1>=z.length||z.charCodeAt(H+1)!==61&&z.charCodeAt(H+1)!==62))J=H}}let $=J!==-1;if(Y!==-1&&(J===-1||Y<J)){let H=z.slice(0,Y).trim(),Q=J!==-1?z.slice(Y+1,J).trim():z.slice(Y+1).trim(),L=$&&!H.endsWith("?")?"?":"";return`${H}${L}: ${Q}`}else if(J!==-1){let H=z.slice(0,J).trim(),Q=!H.endsWith("?")?"?":"",L=z.slice(J+1).trim(),W="unknown";if(L==="true"||L==="false")W="boolean";else if(/^-?\d+(\.\d+)?$/.test(L))W="number";else if(L.startsWith("'")&&L.endsWith("'")||L.startsWith('"')&&L.endsWith('"'))W="string";else if(L.startsWith("["))W="unknown[]";else if(L.startsWith("{"))W="Record<string, unknown>";return`${H}${Q}: ${W}`}return z}function Kz(z){let Y=0,J=z.length;while(Y<J){while(Y<J&&(z.charCodeAt(Y)===32||z.charCodeAt(Y)===9||z.charCodeAt(Y)===10||z.charCodeAt(Y)===13))Y++;if(Y+1<J&&z.charCodeAt(Y)===47&&z.charCodeAt(Y+1)===42){Y+=2;while(Y+1<J&&!(z.charCodeAt(Y)===42&&z.charCodeAt(Y+1)===47))Y++;Y+=2;continue}break}return Y}function Vz(z){let Y=[],J=0,Z=z.length;while(J<Z){while(J<Z&&z.charCodeAt(J)<=32)J++;if(J+1>=Z||z.charCodeAt(J)!==47||z.charCodeAt(J+1)!==42)break;let X=J;J+=2;while(J+1<Z&&!(z.charCodeAt(J)===42&&z.charCodeAt(J+1)===47))J++;J=Math.min(J+2,Z),Y.push(z.slice(X,J).trim())}return{comments:Y.join(`
`),key:z.slice(J).trim()}}function Az(z){let Y=[],J="",Z="",X=0,F=!1,$="",H=!0,Q=!1,L=0,W=!1,q=!1,O=0,N=!1,G=!1;for(let U=0;U<z.length;U++){let M=z.charCodeAt(U),j=U>0?z.charCodeAt(U-1):0,V=U<z.length-1?z.charCodeAt(U+1):0;if(!F&&!Q&&M===47&&V===47){U+=2;while(U<z.length&&z.charCodeAt(U)!==10)U++;continue}if(!F&&!Q&&M===47&&V===42){Q=!0,L=1,J+="/*",U++;continue}else if(Q&&M===42&&V===47){if(L--,J+="*/",U++,L===0)Q=!1;continue}else if(Q&&M===47&&V===42){L++,J+="/*",U++;continue}let R=z[U];if(!F&&(M===34||M===39||M===96))F=!0,$=R,J+=R;else if(F&&R===$&&j!==92)F=!1,J+=R;else if(!F&&!Q)if(M===40&&X===0&&H&&O===0){Z=J.trim();let B=Kz(Z),_=B>0?Z.slice(0,B):"",K=Z.slice(B),w="";if(K.startsWith("async ")||K.startsWith("async\t")||K.startsWith(`async
`))K=K.slice(6).trimStart(),w="async ";if(K.startsWith("*"))K=K.slice(1).trimStart(),w+="*";Z=_+K,J=w+R,H=!1,N=!0,G=!1,X=1}else if(M===123||M===91||M===40){if(X++,J+=R,G&&M===123)G=!1}else if(M===125||M===93||M===41){if(X--,J+=R,M===41&&X===0&&!H&&!N)W=!0;if(N){if(M===41&&X===0&&!G)G=!0;else if(M===125&&X===0)N=!1,G=!1}}else if(M===58&&X===0&&H&&O===0)Z=J.trim(),J="",H=!1;else if(M===58&&X===0&&W)q=!0,J+=R;else if(M===60&&q)O++,J+=R;else if(M===60&&H&&X===0)O++,J+=R;else if(M===62&&O>0&&j!==61)O--,J+=R;else if(M===61&&V===62&&q&&O===0)q=!1,W=!1,J+=R;else if(M===44&&X===0&&O===0&&!G){if(Z&&J.trim()){let B=J.trim();Y.push([Z,B])}else if(H&&J.trim()){let B=J.trim();if(g(B))Y.push([B,B]);else if(B.startsWith("...")&&B.length>3)Y.push(["...",B.slice(3).trim()])}J="",Z="",H=!0,W=!1,q=!1,O=0}else J+=R;else J+=R}if(Z&&J.trim()){let U=J.trim();Y.push([Z,U])}else if(H&&J.trim()){let U=J.trim();if(g(U))Y.push([U,U]);else if(U.startsWith("...")&&U.length>3)Y.push(["...",U.slice(3).trim()])}return Y}function Pz(z){let Y=z.trim();if(Y.startsWith("get ")&&Y.length>4){let J=Y.slice(4).trim();if(J)return{kind:"get",name:J}}if(Y.startsWith("set ")&&Y.length>4){let J=Y.slice(4).trim();if(J)return{kind:"set",name:J}}return null}function Ez(z,Y,J){let Z=J.trim();if(Z.charCodeAt(0)!==40)return null;let X=k(Z,0,"(",")");if(X===-1)return null;let F=Z.slice(1,X).trim(),$=Z.slice(X+1).trimStart();if(!$.startsWith("=>"))return null;let H=$.slice(2).trim();if(z==="get")return`get ${Y}(): ${H||"unknown"}`;return`set ${Y}(${F})`}function _z(z){let Y=z;if(Y.startsWith("async ")||Y.startsWith("async\t"))Y=Y.slice(5).trimStart();if(Y.startsWith("*"))Y=Y.slice(1).trimStart();if(!Y.startsWith("("))return!1;let J=0;for(let Z=0;Z<Y.length;Z++){let X=Y.charCodeAt(Z);if(X===40)J++;else if(X===41){if(J--,J===0){let F=Y.slice(Z+1).trimStart();if(F.startsWith("{"))return!0;if(F.startsWith(":")){let $=e(F,1);if($?.kind==="arrow")return!1;if($?.kind==="body")return!0}return!1}}}return!1}function wz(z){let Y=z.trimEnd();if(!Y.endsWith(">"))return null;let J=0,Z=-1;for(let F=Y.length-1;F>=0;F--){let $=Y.charCodeAt(F);if($===62){if(F>0&&Y.charCodeAt(F-1)===61)continue;J++}else if($===60){if(J--,J===0){Z=F;break}}}if(Z===-1)return null;let X=Y.slice(0,Z).trimEnd();if(!X)return null;return{name:X,typeParams:Y.slice(Z)}}function s(z,Y){let J=Y.trimStart(),Z=!1,X=!1;if(J.startsWith("async ")||J.startsWith("async\t"))Z=!0,J=J.slice(5).trimStart();if(J.startsWith("*"))X=!0,J=J.slice(1).trimStart();let F="";if(J.charCodeAt(0)===60){let O=0,N=-1;for(let G=0;G<J.length;G++)if(J.charCodeAt(G)===60)O++;else if(J.charCodeAt(G)===62&&!(G>0&&J.charCodeAt(G-1)===61)){if(O--,O===0){N=G;break}}if(N!==-1)F=J.slice(0,N+1),J=J.slice(N+1).trimStart()}let $=J.indexOf("("),H=k(J,$,"(",")");if($===-1||H===-1)return"() => unknown";let Q=J.slice($,H+1),L="unknown",W=J.slice(H+1).trimStart();if(W.charCodeAt(0)===58){let O=W.slice(1),N=e(O,0);if(N)L=O.slice(0,N.index).trim();else L=O.trim()}if(L==="unknown"){if(Z&&X)L="AsyncGenerator<unknown, void, unknown>";else if(X)L="Generator<unknown, void, unknown>";else if(Z)L="Promise<void>"}else if(Z&&!L.startsWith("Promise<")&&!L.startsWith("AsyncGenerator<"))L=`Promise<${L}>`;let q=C(Q);return`${F}${q} => ${L}`}function e(z,Y){let J=0,Z=0,X=0,F=0,$=!1,H=0;for(let Q=Y;Q<z.length;Q++){let L=z.charCodeAt(Q);if($){if(L===92)Q++;else if(L===H)$=!1;continue}if(L===34||L===39||L===96){$=!0,H=L;continue}if(L===40)J++;else if(L===41&&J>0)J--;else if(L===91)Z++;else if(L===93&&Z>0)Z--;else if(L===60)X++;else if(L===62&&X>0&&z.charCodeAt(Q-1)!==61)X--;else if(L===125&&F>0)F--;else if(L===123){let W=J>0||Z>0||X>0||F>0,q=z.slice(Y,Q).trimEnd(),O=q.charCodeAt(q.length-1),N=q.length===0||O===38||O===124||O===40||O===44||O===58||O===61||O===91;if(W||N)F++;else return{index:Q,kind:"body"}}else if(L===61&&Q+1<z.length&&z.charCodeAt(Q+1)===62&&J===0&&Z===0&&X===0&&F===0)return{index:Q,kind:"arrow"}}return null}function k(z,Y,J,Z){let X=0;for(let F=Y;F<z.length;F++)if(z[F]===J)X++;else if(z[F]===Z){if(Z===">"&&F>0&&z[F-1]==="=")continue;if(X--,X===0)return F}return-1}function n(z){let Y=0,J=0,Z=!1,X="";for(let F=0;F<z.length-1;F++){let $=z[F],H=z[F+1],Q=F>0?z[F-1]:"";if(!Z&&($==='"'||$==="'"||$==="`"))Z=!0,X=$;else if(Z&&$===X&&Q!=="\\")Z=!1;if(!Z){if($==="(")Y++;else if($===")")Y--;else if($==="[")J++;else if($==="]")J--;if($==="="&&H===">"&&Y===0&&J===0)return F}}return-1}function zz(z,Y=!1,J=0,Z=!0){let X=z.trim();if(X.length>200&&v(X,"=>")>2&&v(X,"<")>5&&!X.startsWith("function"))return Y?"((...args: any[]) => any)":"(...args: any[]) => any";if(X.startsWith("async ")&&X.includes("=>")){let $=X.slice(5).trim(),H=n($);if(H===-1)return Y?"(() => Promise<unknown>)":"() => Promise<unknown>";let Q=$.substring(0,H).trim(),L=$.substring(H+2).trim(),W=i(Q),q=W.params,O=W.returnType;if(q=C(q),q==="()"||q==="")q="()";else if(!q.startsWith("("))q=`(${q})`;let N=O;if(N);else if(L.startsWith("{"))N=c(L.slice(1,L.endsWith("}")?-1:void 0),!0,q);else N=E(L,Z,!1,J+1);let G=`${q} => ${O||N.startsWith("Promise<")?N:`Promise<${N}>`}`;return Y?`(${G})`:G}if(X.includes("=>")){let $="",H=X;if(X.startsWith("<")){let M=k(X,0,"<",">");if(M!==-1)$=X.substring(0,M+1),H=X.substring(M+1).trim()}let Q=n(H);if(Q===-1)return Y?"(() => unknown)":"() => unknown";let L=H.substring(0,Q).trim(),W=H.substring(Q+2).trim(),q=i(L),O=q.params,N=q.returnType;if(O=C(O),O==="()"||O==="")O="()";else if(!O.startsWith("("))O=`(${O})`;let G="unknown";if(N)G=N;else if(W.startsWith("{"))G=c(W.slice(1,W.endsWith("}")?-1:void 0),!1,O);else if(W.includes("=>")){let M=W.trimStart(),j=M.indexOf("("),V=j!==-1?k(M,j,"(",")"):-1,R=V!==-1?M.indexOf("=>",V):-1;if(j===0&&V!==-1&&R!==-1){let B=M.substring(j+1,V).trim(),_=C(B);if($.includes("T")&&_.includes("T"))G=`(${_}) => T`;else G=`(${_}) => any`}else G="any"}else if(Y)G="unknown";else G=b(W,a(O));let U=`${$}${O} => ${G}`;return Y?`(${U})`:U}if(X.startsWith("function")){let $=8,H=X.length;while($<H&&X.charCodeAt($)<=32)$++;let Q=!1;if($<H&&X.charCodeAt($)===42){Q=!0,$++;while($<H&&X.charCodeAt($)<=32)$++}let L="";if($<H&&X.charCodeAt($)===60){let O=$,N=1;$++;while($<H&&N>0){let G=X.charCodeAt($);if(G===60)N++;else if(G===62&&X.charCodeAt($-1)!==61)N--;$++}L=X.substring(O,$);while($<H&&X.charCodeAt($)<=32)$++}let W=X.indexOf("(",$);if(W!==-1){let O=1,N=W+1;while(N<H&&O>0){let j=X.charCodeAt(N);if(j===40)O++;else if(j===41)O--;N++}let G=X.substring(W+1,N-1).trim(),U=G?`(${G})`:"()";if(Q){let j=X.substring(N).trim(),V=j.indexOf("Generator<");if(V!==-1){let B=V+10,_=j.indexOf(">",B);if(_!==-1){let K=j.substring(B,_),w=`${L}${U} => Generator<${K}>`;return Y?`(${w})`:w}}let R=`${L}${U} => Generator<any, any, any>`;return Y?`(${R})`:R}let M=`${L}${U} => unknown`;return Y?`(${M})`:M}let q="(...args: any[]) => unknown";return Y?`(${q})`:q}if(X.includes("=>")&&X.includes("(")&&X.includes(")")){if(X.length>100||v(X,"=>")>2){let $="";if(X.charCodeAt(0)===60){let q=k(X,0,"<",">");if(q!==-1)$=X.substring(0,q+1)}let H=X.indexOf("("),Q=H!==-1?k(X,H,"(",")"):-1,L=H!==-1&&Q!==-1?X.substring(H,Q+1):"(...args: any[])";L=C(L);let W=`${$}${L} => any`;return Y?`(${W})`:W}return Y?`(${X})`:X}let F="() => unknown";return Y?`(${F})`:F}function i(z){let Y=z.trim();if(!Y.startsWith("("))return{params:Y,returnType:""};let J=k(Y,0,"(",")");if(J===-1)return{params:Y,returnType:""};let Z=Y.slice(J+1).trim();return{params:Y.slice(0,J+1),returnType:Z.startsWith(":")?Z.slice(1).trim():""}}function kz(z){let Y=z.trim();if(Y==="any"||Y==="object"||Y==="unknown")return!0;if(Y.startsWith("Record<")&&Y.endsWith(">"))return!0;if(Y.startsWith("Array<")&&Y.endsWith(">"))return!0;if(/^\{\s*\[[^\]]*\]:\s*(any|string|number|unknown)\s*\}$/.test(Y))return!0;return!1}function bz(z){let Y=z.lastIndexOf(" satisfies ");if(Y===-1)return null;let J=z.slice(Y+11).trim();if(J.endsWith(";"))J=J.slice(0,-1).trim();return J||null}
export{Iz as _e,Dz as $e,E as af,Gz as bf,c as cf,y as df,f as ef,jz as ff,k as gf,zz as hf,kz as if,bz as jf};