UNPKG

tsdoc-markdown

Version:

Generates markdown documentation from TypeScript source code.

49 lines (48 loc) 5.35 kB
import { createRequire } from 'module';import path from 'path';import {fileURLToPath} from 'url';const __filename = fileURLToPath(import.meta.url);const __dirname = path.dirname(__filename);const require = createRequire(import.meta.url); var j=t=>(t??[]).map(({name:e,documentation:i})=>({name:e,documentation:i??""})),O=t=>t!==void 0&&t!==""?`: ${t}`:"",b=t=>t.map(({name:e,documentation:i})=>`* \`${e}\`${O(i)}`),M=t=>t.reduce(([e,i],y)=>[[...e,...y.isStatic!==!0?[y]:[]],[...i,...y.isStatic===!0?[y]:[]]],[[],[]]),C=({entry:t,headingLevel:e,emoji:i})=>{let{name:y,url:u,documentation:r,methods:h,properties:m,constructors:d}=t,s=[`${e}${g({emoji:i,key:"classes"})} ${y} `];r!==void 0&&r!==""&&s.push(`${r} `),u!==void 0&&s.push(L({emoji:i,url:u}));let l=(d??[]).filter(({visibility:a})=>a==="public");l.length>0&&(s.push(`${e}# Constructors `),s.push(...l.map(({parameters:a,documentation:f,visibility:w})=>{let T=[`\`${w}\`${O(f)} `];return((a==null?void 0:a.length)??0)>0&&(T.push(`Parameters: `),T.push(...b(j(a)))),T.join(` `)})),s.push(` `));let c=({methods:a,titlePrefix:f})=>{((a==null?void 0:a.length)??0)!==0&&(s.push(`${e}# ${f??""}Methods `),s.push(`${$({entries:a,emoji:i})} `),s.push(D({entries:a??[],headingLevel:`${e}#`,docType:"Method",emoji:i})))},[o,n]=M(h??[]);c({methods:n,titlePrefix:"Static "}),c({methods:o});let p=({properties:a,titlePrefix:f})=>{((a==null?void 0:a.length)??0)!==0&&(s.push(`${e}# ${f??""}Properties `),s.push(`${$({entries:a??[],emoji:i})} `),s.push(D({entries:a??[],headingLevel:`${e}#`,docType:"Property",emoji:i})))},[P,k]=M(m??[]);return p({properties:k,titlePrefix:"Static "}),p({properties:P}),s.join(` `)},S=({entry:t,headingLevel:e,emoji:i})=>{let{name:y,documentation:u}=t,r=[`${e}# ${i==null?"":":gear: "}${y} `];return u!==void 0&&r.push(`${u} `),r.push("| Property | Type | Description |"),r.push("| ---------- | ---------- | ---------- |"),(t.properties??[]).forEach(({name:h,type:m,documentation:d,jsDocs:s})=>{let l=(s??[]).map(({name:c,text:o})=>`${c}${o!==void 0?`: ${o.map(({text:n})=>n).join("")}`:""}`);r.push(`| \`${h}\` | \`${E(m??"")}\` | ${d!==void 0&&d!==""?E(d).replace(/\r?\n|\r/g,""):""}${l.length>0?` ${E(l.join(""))}`:""} |`)}),r.push(` `),r.join(` `)},L=({url:t,emoji:e})=>`[${g({emoji:e,key:"link"}).trim()}${e!=null?" ":""}Source](${t}) `,E=t=>t.split(` `).map(e=>e.trim()).join(" ").replace(/ \| /g," or ").replace(/ & /g," and "),D=({entries:t,headingLevel:e,docType:i,emoji:y})=>{let u=d=>{let c=d.filter(({name:n})=>n==="param").map(({text:n})=>n).reduce((n,p)=>p===void 0?n:[...n,p],[]),o=n=>{var k,a;if(n.find(({kind:f,text:w})=>f==="parameterName"&&w!=="")===void 0)return;let p=((k=n.find(({kind:f})=>f==="parameterName"))==null?void 0:k.text)??"",P=((a=n.find(({kind:f})=>f==="text"))==null?void 0:a.text)??"";return{name:p,documentation:P}};return c.map(o).filter(n=>n!==void 0)},r=d=>d.filter(({name:c})=>c==="example").map(({text:c})=>c).filter(Boolean).flat(1).map(({text:c})=>c).filter(Boolean),h=t.map(({name:d,type:s,documentation:l,parameters:c,jsDocs:o,url:n})=>({name:d,type:s??"",documentation:l??"",params:[...j(c),...u(o??[])],examples:[...r(o??[])],url:n})),m=({name:d,documentation:s,type:l,params:c,examples:o,url:n})=>{let p=[`${e}# ${y==null?"":":gear: "}${d} `];return s.length&&p.push(`${s} `),p.push(`| ${l==="Type"?"Type alias":i} | Type |`),p.push("| ---------- | ---------- |"),p.push(`| \`${d}\` | ${l!==void 0&&l!==""?`\`${E(l)}\``:""} | `),c.length&&(p.push(`Parameters: `),p.push(...b(c)),p.push(` `)),o.length&&(p.push(`Examples: `),p.push(...o),p.push(` `)),n!==void 0&&p.push(L({emoji:y,url:n})),p.join(` `)};return h.map(m).join(` `)},$=({entries:t,emoji:e})=>t.map(({name:i})=>`- [${i}](#${e==null?"":`${e.entry}-`}${i.toLowerCase().replace(/ /g,"-")})`).join(` `),g=({emoji:t,key:e})=>t==null?"":` :${t[e]}:`,x={classes:"factory",functions:"toolbox",constants:"wrench",enum:"nut_and_bolt",entry:"gear",link:"link",interfaces:"tropical_drink",types:"cocktail"},I=({entries:t,options:e})=>{let{headingLevel:i,emoji:y}=e??{headingLevel:"##",emoji:x},u=i??"##",r=y===null?void 0:y??x,h=t.filter(({doc_type:n})=>n==="function"),m=t.filter(({doc_type:n})=>n==="class"),d=t.filter(({doc_type:n})=>n==="const"),s=t.filter(({doc_type:n})=>n==="enum"),l=t.filter(({doc_type:n})=>n==="type"),c=t.filter(({doc_type:n})=>n==="interface"),o=[];return h.length&&(o.push(`${u}${g({emoji:r,key:"functions"})} Functions `),o.push(`${$({entries:h,emoji:r})} `),o.push(`${D({entries:h,headingLevel:u,emoji:r,docType:"Function"})} `)),d.length&&(o.push(`${u}${g({emoji:r,key:"constants"})} Constants `),o.push(`${$({entries:d,emoji:r})} `),o.push(`${D({entries:d,headingLevel:u,emoji:r,docType:"Constant"})} `)),o.push(m.map(n=>C({entry:n,headingLevel:u,emoji:r})).join(` `)),s.length&&(o.push(`${u}${g({emoji:r,key:"enum"})} Enum `),o.push(`${$({entries:s,emoji:r})} `),o.push(s.map(n=>S({entry:n,headingLevel:u,emoji:r})).join(` `))),c.length&&(o.push(`${u}${g({emoji:r,key:"interfaces"})} Interfaces `),o.push(`${$({entries:c,emoji:r})} `),o.push(c.map(n=>S({entry:n,headingLevel:u,emoji:r})).join(` `))),l.length&&(o.push(`${u}${g({emoji:r,key:"types"})} Types `),o.push(`${$({entries:l,emoji:r})} `),o.push(`${D({entries:l,headingLevel:u,emoji:r,docType:"Type"})} `)),o.join(` `)};export{I as a}; //# sourceMappingURL=chunk-DKAQQIUL.mjs.map