@stacksjs/dtsx
Version:
A modern, fast .d.ts generation tool, powered by Bun.
6 lines (5 loc) • 2.7 kB
JavaScript
// @bun
function W(z,F){return z.getText?.()??F.slice(z.pos??0,z.end??F.length)}function X(z){return z.getFullText?.().match(/\/\*[\s\S]*?\*\/|\/\/[^\n]*/g)??[]}function P(z){let F=z,G=!0;while(G){G=!1;let D=F.trimStart();if(D.startsWith("/*")){let E=D.indexOf("*/",2);if(E!==-1){F=D.slice(E+2),G=!0;continue}}if(D.startsWith("//")){let E=D.indexOf(`
`);if(E!==-1)F=D.slice(E+1),G=!0;else F="",G=!0}}return F.trim()}function Y(z,F){let D=z.substring(0,F).split(`
`),E=[],j=D.length-1,K=!1,J=[];while(j>=0){let H=D[j].trim();if(H.endsWith("*/")&&!K)K=!0,J.unshift(H);else if(H.startsWith("/*")&&K)J.unshift(H),E.unshift(...J),J=[],K=!1;else if(K)J.unshift(H);else if(H.startsWith("//"))E.unshift(H);else if(H.startsWith("*")&&(j>0&&D[j-1].trim().startsWith("/*")))E.unshift(H);else if(H===""&&E.length>0);else if(H!=="")break;j--}return E}function Z(z){let F=!1,G="",D=!1;for(let E=0;E<z.length;E++){let j=z[E];if(!D&&!F&&(j==='"'||j==="'"||j==="`"))F=!0,G=j;else if(!D&&F&&j===G)F=!1;else if(j==="\\"&&!D){D=!0;continue}else if(!F&&j==="/"&&E<z.length-1){if(z[E+1]==="/")return z.substring(E)}D=!1}return null}function O(z,F,G){let D=0,E=!1,j="",K=!1;if(!z.startsWith(F))return null;for(let J=0;J<z.length;J++){let H=z[J];if(!K&&(H==='"'||H==="'"||H==="`")){if(!E)E=!0,j=H;else if(H===j)E=!1}if(H==="\\"&&!K){K=!0;continue}if(K=!1,!E){if(z.substring(J,J+F.length)===F)D++;else if(z.substring(J,J+G.length)===G){if(D--,D===0)return{content:z.substring(0,J+G.length),rest:z.substring(J+G.length)}}}}return null}function _(z){let F=P(z).trim(),G=F.match(/^(export\s+)?(async\s+)?function\s*(\*?)([a-zA-Z_$][\w$]*)/);if(!G)return null;let D=[];if(G[1])D.push("export");if(G[2])D.push("async");if(G[3])D.push("generator");let E=G[4],j=F.substring(G[0].length).trim(),K="";if(j.startsWith("<")){let N=O(j,"<",">");if(N)K=N.content,j=N.rest.trim()}let J="";if(j.startsWith("(")){let N=O(j,"(",")");if(N)J=N.content.slice(1,-1).trim(),j=N.rest.trim()}let H="void";if(j.startsWith(":")){let N=j.match(/^:\s*([^{;]+)/);if(N)H=N[1].trim()}return{name:E,generics:K,parameters:J,returnType:H,modifiers:D}}function $(z){return/^\s*export\s+/.test(z)}function k(z){return/^\s*export\s+type\s+/.test(z)}function U(z){let F=P(z).trim(),G=F.match(/^(export\s+)?(const|let|var)\s+([a-zA-Z_$][\w$]*)/);if(!G)return null;let D=G[2],E=G[3],j=F.substring(G[0].length).trim(),K;if(j.startsWith(":")){let H=j.indexOf("=");if(H!==-1)K=j.substring(1,H).trim(),j=j.substring(H).trim();else K=j.substring(1).replace(/;?\s*$/,"").trim(),j=""}let J;if(j.startsWith("="))J=j.substring(1).replace(/;?\s*$/,"").trim();return{kind:D,name:E,typeAnnotation:K,value:J}}
export{W as V,X as W,P as X,Y,Z,O as _,_ as $,$ as aa,k as ba,U as ca};