@stacksjs/dtsx
Version:
A modern, fast .d.ts generation tool, powered by Bun.
38 lines (37 loc) • 10.9 kB
JavaScript
// @bun
import{pe as N}from"./chunk-41q4b5qr.js";import{$e as p,_e as u,af as T,if as n,jf as l}from"./chunk-s2fpbr98.js";var Wj=/^\/\/\/\s*<reference\s+(?:path|types|lib|no-default-lib)\s*=\s*["'][^"']+["']\s*\/>/,Qj=/^\/\/\/\s*<amd-module\s+name\s*=\s*["'][^"']+["']\s*\/>/,Rj=/^\/\/\/\s*<amd-dependency\s+path\s*=\s*["'][^"']+["']/;function Zj(j){let J=[],K=0;for(let Y=0;Y<=j.length;Y++)if(Y===j.length||j[Y]===`
`){let z=K,$=Y;while(z<$&&(j[z]===" "||j[z]==="\t"||j[z]==="\r"))z++;while($>z&&(j[$-1]===" "||j[$-1]==="\t"||j[$-1]==="\r"))$--;let H=j.slice(z,$);if(K=Y+1,H.startsWith("///")){if(H.indexOf("<")===-1)continue;if(Wj.test(H)||Qj.test(H)||Rj.test(H))J.push(H)}else if(H===""||H.startsWith("//"))continue;else break}return J}function qj(j){if(j.includes(`
`))return`/**
* ${j}
*/
`;return`/** ${j} */
`}function Mj(j){let J=j.indexOf("{");if(J===-1)return-1;let K=j.indexOf("<");if(K===-1||K>J)return J;let Y=0,z=!1,$="";for(let H=0;H<j.length;H++){let U=j[H],L=H>0?j[H-1]:"";if(!z&&(U==='"'||U==="'"||U==="`"))z=!0,$=U;else if(z&&U===$&&L!=="\\")z=!1;if(!z){if(U==="<")Y++;else if(U===">")Y--;else if(U==="{"&&Y===0)return H}}return-1}function c(j,J=!0){return N(j.leadingComments,J)+j.text}function d(j,J=!0){let K=N(j.leadingComments,J);if(j.typeAnnotation&&!j.value)return K+j.text;let Y="";if(j.isExported)Y+="export ";Y+="declare ";let z=j.modifiers?.[0]||"const";Y+=`${z} `,Y+=j.name;let{typeAnnotation:$,value:H}=j;if(H&&H.includes(" satisfies ")){let L=l(H);if(L)$=L}else if(!$&&H&&H.trim().endsWith("as const"))$=T(H,!0);else if(!$&&H&&z==="const"){let L=H.trim(),Q=L.startsWith("{")||L.startsWith("[");if(Q)u();$=T(H,!Q)}else if(!$&&H)$=T(H,z==="const");if(!$)$="unknown";let U="";if(J&&H&&!j.typeAnnotation&&!H.trim().endsWith("as const")){let L=H.trim();if(z!=="const"){if(($==="string"||$==="number"||$==="boolean")&&L.length>0)U=`@defaultValue ${L}`}else if(L.startsWith("{")||L.startsWith("[")){let Q=p();if(Q)if(Q.includes(`
`))U=`@defaultValue
* \`\`\`ts
${Q.split(`
`).map((W)=>` * ${W}`).join(`
`)}
* \`\`\``;else U=`@defaultValue \`${Q}\``}}else if(J&&H&&j.typeAnnotation&&n(j.typeAnnotation)){u();let L=H.trim(),Q=L.endsWith("as const")?L.slice(0,-8).trim():L;T(Q,!1);let q=p();if(q)if(q.includes(`
`))U=`@defaultValue
* \`\`\`ts
${q.split(`
`).map((_)=>` * ${_}`).join(`
`)}
* \`\`\``;else U=`@defaultValue \`${q}\``}if(Y+=`: ${$};`,U&&K&&K.includes("@defaultValue"))U="";if(U&&K){let L=K.trimEnd(),Q=L.lastIndexOf("*/");if(Q!==-1){let W=L.slice(0,Q).trimEnd();if(W.startsWith("/** ")&&!W.includes(`
`))W=`/**
* ${W.slice(4)}`;return`${W}
* ${U}
*/
`+Y}return`/**
* ${L.replace(/^\/\/\s*/,"")}
* ${U}
*/
${Y}`}if(U)return`${qj(U)}${Y}`;return K+Y}function o(j,J=!0){let K=N(j.leadingComments,J),Y=j.text;if(Y.startsWith("export declare interface")||Y.startsWith("declare interface"))return K+Y;let z="";if(j.isExported)z+="export ";if(z+="declare interface ",z+=j.name,j.generics)z+=j.generics;if(j.extends)z+=` extends ${j.extends}`;let $=Mj(j.text);if($!==-1)z+=` ${j.text.slice($)}`;else z+=" {}";return K+z}function i(j,J=!0){let K=N(j.leadingComments,J);if(j.text.includes("{")&&j.text.includes("}")&&j.text.includes("from"))return K+j.text;let Y="";if(j.isExported)Y+="export ";if(!j.isExported&&!j.text.includes(" from "))Y+="declare ";let z=j.text.indexOf("type ");if(z!==-1){let H=j.text.slice(z),U=H.length;while(U>0&&(H.charCodeAt(U-1)===59||H.charCodeAt(U-1)===32||H.charCodeAt(U-1)===10||H.charCodeAt(U-1)===13))U--;if(U<H.length)H=H.slice(0,U);Y+=H}else{if(Y+=`type ${j.name}`,j.generics)Y+=j.generics;Y+=" = any"}let $=Y.trimEnd();if(!$.endsWith(";")&&!$.endsWith("}"))Y+=";";return K+Y}function s(j,J=!0){return N(j.leadingComments,J)+j.text}function m(j,J=!0){let K=N(j.leadingComments,J),Y="";if(j.isExported)Y+="export ";if(Y+="declare ",j.modifiers?.includes("const"))Y+="const ";Y+="enum ",Y+=j.name;let z=j.text.indexOf("{");if(z!==-1)Y+=` ${j.text.slice(z)}`;else Y+=" {}";return K+Y}function Vj(j){let J=j.text.trim(),K=J.length;while(K>0&&J.charCodeAt(K-1)===59)K--;if(K<J.length)J=J.slice(0,K);return J+=";",J}function wj(j,J=!0){return N(j.leadingComments,J)+j.text.trim()}function a(j,J=!0){let K=N(j.leadingComments,J);if(j.text.startsWith("declare global"))return K+j.text;if(j.source||(j.name.startsWith('"')||j.name.startsWith("'")||j.name.startsWith("`"))){let H="declare module ";H+=j.name;let U=j.text.indexOf("{");if(U!==-1)H+=` ${j.text.slice(U)}`;else H+=" {}";return K+H}let z="";if(j.isExported)z+="export ";if(!j.modifiers?.includes("declare"))z+="declare ";z+="namespace ",z+=j.name;let $=j.text.indexOf("{");if($!==-1)z+=` ${j.text.slice($)}`;else z+=" {}";return K+z}var Bj=new Map,g=new Map;function $j(j){let J=g.get(j);if(J)return g.delete(j),g.set(j,J),J;return null}function r(j,J){if(g.set(j,J),g.size>200){let K=0;for(let Y of g.keys()){if(K++>=20)break;g.delete(Y)}}}function Aj(){Bj.clear(),g.clear()}function t(j){let J=j.indexOf(" from ");if(J===-1)return null;let K=j.slice(J+6).trim(),Y=K[0];if(Y!=='"'&&Y!=="'")return null;let z=K.indexOf(Y,1);if(z===-1)return null;let $=K.slice(1,z),H=j.slice(0,J).trim(),U=H.startsWith("import type ");if(H.startsWith("import "))H=H.slice(7).trim();if(H.startsWith("type "))H=H.slice(5).trim();let L=null,Q=[],q=!1,W=H.indexOf("{"),_=H.lastIndexOf("}");if(W!==-1&&_!==-1){let S=H.slice(0,W).trim();if(S.endsWith(","))L=S.slice(0,-1).trim()||null;let B=H.slice(W+1,_),y=0;for(let v=0;v<=B.length;v++)if(v===B.length||B.charCodeAt(v)===44){let k=y,D=v;while(k<D&&(B.charCodeAt(k)===32||B.charCodeAt(k)===9||B.charCodeAt(k)===10))k++;while(D>k&&(B.charCodeAt(D-1)===32||B.charCodeAt(D-1)===9||B.charCodeAt(D-1)===10))D--;if(k<D)Q.push(B.slice(k,D));y=v+1}}else{let S=H.trim();if(S.startsWith("* as "))L=S.slice(5).trim()||null,q=!0;else L=S||null}return{defaultName:L,namedItems:Q,source:$,isTypeOnly:U,isNamespace:q}}function e(j){let J=$j(j);if(J)return J;let K=[],Y=j.indexOf(" from ");if(Y===-1)return r(j,K),K;let z=j.slice(0,Y).trim();if(z.startsWith("import "))z=z.slice(7).trim();if(z.startsWith("type "))z=z.slice(5).trim();let $=z.indexOf("{"),H=z.lastIndexOf("}");if($!==-1&&H!==-1){let U=z.slice(0,$).trim();if(U.endsWith(",")){let q=U.slice(0,-1).trim();if(q)K.push(q)}else if(U&&!U.includes(","))K.push(U);let Q=z.slice($+1,H).split(",");for(let q=0;q<Q.length;q++){let W=Q[q].trim();if(!W)continue;if(W.startsWith("type "))W=W.slice(5).trim();let _=W.indexOf(" as ");if(_!==-1)W=W.slice(_+4).trim();if(W)K.push(W)}}else{let U=z.trim();if(U.startsWith("* as ")){let L=U.slice(5).trim();if(L)K.push(L)}else if(U)K.push(U)}return r(j,K),K}function Jj(j,J){throw Error(J||`Unexpected value: ${j}`)}function Fj(j){return j>=65&&j<=90||j>=97&&j<=122||j>=48&&j<=57||j===95||j===36||j>127}function Uj(j){let J=new Set,K=0,Y=j.length;while(K<Y){let z=j.charCodeAt(K);if(z>=65&&z<=90||z>=97&&z<=122||z===95||z===36||z>127){let $=K;K++;while(K<Y&&Fj(j.charCodeAt(K)))K++;J.add(j.substring($,K))}else K++}return J}var Oj=/export\s+(?:type\s+)?\{\s*([^}]+)\s*\}/,Xj=null,Gj=[],Lj=[];function uj(j,J,K=!0,Y=["bun"]){let z="",$=J.sourceCode;if($){let Z=0;while(Z<$.length&&($.charCodeAt(Z)===32||$.charCodeAt(Z)===9||$.charCodeAt(Z)===10||$.charCodeAt(Z)===13))Z++;if(Z<$.length-2&&$.charCodeAt(Z)===47&&$.charCodeAt(Z+1)===47&&$.charCodeAt(Z+2)===47){let G=Zj($);if(G.length>0)for(let R=0;R<G.length;R++){if(z)z+=`
`;z+=G[R]}}}let H=[],U=[],L=[],Q=[],q=[],W=[],_=[],S=[],B=[];for(let Z of j){let G=Z.kind;switch(G){case"import":H.push(Z);break;case"function":U.push(Z);break;case"variable":L.push(Z);break;case"interface":Q.push(Z);break;case"type":q.push(Z);break;case"class":W.push(Z);break;case"enum":_.push(Z);break;case"module":S.push(Z);break;case"export":B.push(Z);break;case"namespace":S.push(Z);break;case"unknown":break;default:Jj(G,`Unhandled declaration kind: ${G}`)}}let y=new Set,v=[],k=[],D=[],jj=new Set;for(let Z of B){let G=N(Z.leadingComments,K);if(Z.text.startsWith("export default")){let R=Z.text.endsWith(";")?Z.text:`${Z.text};`;D.push(G+R)}else{let R=Z.text.trim();if(!R.endsWith(";"))R+=";";let F=R.match(Oj);if(F){let V=F[1],O=0;for(let M=0;M<=V.length;M++)if(M===V.length||V.charCodeAt(M)===44){let A=O,w=M;while(A<w&&V.charCodeAt(A)<=32)A++;while(w>A&&V.charCodeAt(w-1)<=32)w--;if(A<w)y.add(V.slice(A,w));O=M+1}}let X=G+R;if(!jj.has(X))if(jj.add(X),X.includes("export type"))v.push(X);else k.push(X)}}let C=new Map;if(H.length>0)for(let Z of H){let G=e(Z.text);for(let R of G)C.set(R,Z)}let zj=new Set;if(Q.length>0){let Z=[];for(let G of U)if(G.isExported)Z.push(G.text);for(let G of W)Z.push(G.text);for(let G of q)Z.push(G.text);if(Z.length>0){let G=Uj(Z.join(`
`));for(let R of Q)if(G.has(R.name))zj.add(R.name)}}let b=[];if(H.length>0){let Z=new Set,G=[];for(let X of U)if(X.isExported)G.push(X.text);for(let X of L)if(G.push(X.text),X.typeAnnotation)G.push(X.typeAnnotation);for(let X of Q)if(X.isExported||zj.has(X.name))G.push(X.text);for(let X of q)G.push(X.text);for(let X of W)G.push(X.text);for(let X of _)G.push(X.text);for(let X of S)G.push(X.text);for(let X of B)G.push(X.text);let R=G.join(`
`);if(R&&C.size>0){let X=Uj(R);for(let V of C.keys())if(X.has(V))Z.add(V)}for(let X of y)if(C.has(X))Z.add(X);for(let X of H){if(X.isSideEffect){let E=X.text.trim(),P=E.endsWith(";")?E:`${E};`;b.push(P);continue}let V=t(X.text);if(!V)continue;let{defaultName:O,namedItems:M,source:A,isTypeOnly:w,isNamespace:I}=V,Kj=O?Z.has(O):!1,f="",h=0;for(let E=0;E<M.length;E++){let P=M[E],x=P.charCodeAt(0)===116&&P.startsWith("type ")?P.slice(5).trim():P.trim(),Yj=x.indexOf(" as ");if(Yj!==-1)x=x.slice(Yj+4).trim();if(Z.has(x)){if(h>0)f+=", ";f+=P,h++}}if(Kj||h>0){let E=w?"import type ":"import ";if(Kj&&O)if(I)E+=`* as ${O}`;else E+=h>0?`${O}, { ${f} }`:O;else if(h>0)E+=`{ ${f} }`;E+=` from '${A}';`,b.push(E)}}let F=Y.length;if(b.length>1){if(Xj!==Y)Xj=Y,Gj=Y.map((M)=>`from '${M}`),Lj=Y.map((M)=>`from "${M}`);let X=Gj,V=Lj,O=new Map;for(let M of b){let A=F;for(let w=0;w<Y.length;w++)if(M.includes(X[w])||M.includes(V[w])){A=w;break}O.set(M,A)}b.sort((M,A)=>{let w=O.get(M),I=O.get(A);return w!==I?w-I:M.localeCompare(A)})}}for(let Z=0;Z<b.length;Z++){if(z)z+=`
`;z+=b[Z]}for(let Z=0;Z<v.length;Z++){if(z)z+=`
`;z+=v[Z]}let Hj=[U,L,Q,q,W,_,S];for(let Z=0;Z<Hj.length;Z++){let G=Hj[Z];for(let R=0;R<G.length;R++){let F=G[R],X="",V=F.kind;switch(V){case"function":X=c(F,K);break;case"variable":X=d(F,K);break;case"interface":X=o(F,K);break;case"type":X=i(F,K);break;case"class":X=s(F,K);break;case"enum":X=m(F,K);break;case"module":case"namespace":X=a(F,K);break;case"import":case"export":case"unknown":break;default:Jj(V,`Unhandled declaration kind in processor: ${V}`)}if(X){if(z)z+=`
`;z+=X}}}for(let Z=0;Z<k.length;Z++){if(z)z+=`
`;z+=k[Z]}for(let Z=0;Z<D.length;Z++){if(z)z+=`
`;z+=D[Z]}if(!z&&(H.length>0||B.length>0))return"export {};";return z}export{c as ce,d as de,o as ee,i as fe,s as ge,m as he,Vj as ie,wj as je,a as ke,Aj as le,t as me,e as ne,uj as oe};