UNPKG

tsdoc-markdown

Version:

Generates markdown documentation from TypeScript source code.

8 lines (7 loc) 3.1 kB
{ "version": 3, "sources": ["../../src/lib/index.ts"], "sourcesContent": ["import {existsSync, readFileSync, writeFileSync} from 'fs';\nimport {buildDocumentation} from './docs';\nimport {documentationToMarkdown} from './markdown';\nimport type {\n BuildOptions,\n DocEntry,\n DocEntryConstructor,\n DocEntryType,\n MarkdownOptions\n} from './types';\n\nexport {buildDocumentation, documentationToMarkdown};\nexport type {DocEntry, DocEntryConstructor, DocEntryType};\n\n/**\n * Generate documentation and write output to a file.\n * If the file exists, it will try to insert the docs between <!-- TSDOC_START --> and <!-- TSDOC_END --> comments.\n * If these does not exist, the output file will be overwritten.\n *\n * @param {inputFiles: string[]; outputFile: string; markdownOptions?: MarkdownOptions; buildOptions?: BuildOptions;} params\n * @param params.inputFiles The list of files to scan for documentation. Absolute or relative path.\n * @param params.outputFile The file to output the documentation in Markdown.\n * @param params.markdownOptions Optional settings passed to the Markdown parser. See `MarkdownOptions` for details.\n * @param params.buildOptions Options to construct the documentation tree. See `BuildOptions` for details.\n */\nexport const generateDocumentation = ({\n inputFiles,\n outputFile,\n markdownOptions,\n buildOptions\n}: {\n inputFiles: string[];\n outputFile: string;\n markdownOptions?: MarkdownOptions;\n buildOptions?: BuildOptions;\n}): void => {\n const entries: DocEntry[] = buildDocumentation({\n inputFiles,\n options: buildOptions\n });\n\n const markdown: string = documentationToMarkdown({entries, options: markdownOptions});\n\n if (existsSync(outputFile)) {\n const fileContent = readFileSync(outputFile, 'utf-8');\n\n const regex = /(<!-- TSDOC_START -->)[\\s\\S]*?(<!-- TSDOC_END -->)$/gm;\n\n if (fileContent.match(regex) === null) {\n writeFileSync(outputFile, markdown, 'utf-8');\n return;\n }\n\n const replace = `<!-- TSDOC_START -->\\n\\n${markdown}\\n<!-- TSDOC_END -->`;\n\n writeFileSync(outputFile, fileContent.replace(regex, replace), 'utf-8');\n\n return;\n }\n\n writeFileSync(outputFile, markdown, 'utf-8');\n};\n"], "mappings": ";kFAAA,OAAQ,cAAAA,EAAY,gBAAAC,EAAc,iBAAAC,MAAoB,KAyB/C,IAAMC,EAAwB,CAAC,CACpC,WAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,aAAAC,CACF,IAKY,CACV,IAAMC,EAAsBC,EAAmB,CAC7C,WAAAL,EACA,QAASG,CACX,CAAC,EAEKG,EAAmBC,EAAwB,CAAC,QAAAH,EAAS,QAASF,CAAe,CAAC,EAEpF,GAAIM,EAAWP,CAAU,EAAG,CAC1B,IAAMQ,EAAcC,EAAaT,EAAY,OAAO,EAE9CU,EAAQ,wDAEd,GAAIF,EAAY,MAAME,CAAK,IAAM,KAAM,CACrCC,EAAcX,EAAYK,EAAU,OAAO,EAC3C,MACF,CAEA,IAAMO,EAAU;AAAA;AAAA,EAA2BP,CAAQ;AAAA,oBAEnDM,EAAcX,EAAYQ,EAAY,QAAQE,EAAOE,CAAO,EAAG,OAAO,EAEtE,MACF,CAEAD,EAAcX,EAAYK,EAAU,OAAO,CAC7C", "names": ["existsSync", "readFileSync", "writeFileSync", "generateDocumentation", "inputFiles", "outputFile", "markdownOptions", "buildOptions", "entries", "buildDocumentation", "markdown", "documentationToMarkdown", "existsSync", "fileContent", "readFileSync", "regex", "writeFileSync", "replace"] }