{
  "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"]
}
