UNPKG

tsdoc-markdown

Version:

Generates markdown documentation from TypeScript source code.

8 lines (7 loc) 22.1 kB
{ "version": 3, "sources": ["../../src/lib/markdown.ts"], "sourcesContent": ["import type {JSDocTagInfo, SymbolDisplayPart} from 'typescript';\nimport type {\n DocEntry,\n DocEntryConstructor,\n MarkdownEmoji,\n MarkdownHeadingLevel,\n MarkdownOptions\n} from './types';\n\ninterface Params {\n name: string;\n documentation: string;\n}\n\ntype Row = Required<Pick<DocEntry, 'name' | 'type' | 'documentation'>> &\n Pick<DocEntry, 'url'> & {\n params: Params[];\n examples: string[];\n };\n\nconst toParams = (parameters?: DocEntry[]): Params[] =>\n (parameters ?? []).map(({name, documentation}: DocEntry) => ({\n name,\n documentation: documentation ?? ''\n }));\n\nconst inlineDocParam = (documentation: string | undefined): string =>\n documentation !== undefined && documentation !== '' ? `: ${documentation}` : '';\n\nconst inlineParams = (params: Params[]): string[] =>\n params.map(({name, documentation}) => `* \\`${name}\\`${inlineDocParam(documentation)}`);\n\nconst reduceStatic = (values: DocEntry[]): [DocEntry[], DocEntry[]] =>\n values.reduce<[DocEntry[], DocEntry[]]>(\n ([i, s], value) => [\n [...i, ...(value.isStatic !== true ? [value] : [])],\n [...s, ...(value.isStatic === true ? [value] : [])]\n ],\n [[], []]\n );\n\nconst classesToMarkdown = ({\n entry,\n headingLevel,\n emoji\n}: {\n entry: DocEntry;\n} & Required<Pick<MarkdownOptions, 'headingLevel'>> &\n Omit<MarkdownOptions, 'headingLevel'>): string => {\n const {name, url, documentation, methods, properties, constructors} = entry;\n\n const markdown: string[] = [`${headingLevel}${emojiTitle({emoji, key: 'classes'})} ${name}\\n`];\n\n if (documentation !== undefined && documentation !== '') {\n markdown.push(`${documentation}\\n`);\n }\n\n if (url !== undefined) {\n markdown.push(sourceCodeLink({emoji, url}));\n }\n\n const publicConstructors: DocEntryConstructor[] = (constructors ?? []).filter(\n ({visibility}) => visibility === 'public'\n );\n\n if (publicConstructors.length > 0) {\n markdown.push(`${headingLevel}# Constructors\\n`);\n\n markdown.push(\n ...publicConstructors.map(({parameters, documentation, visibility}) => {\n const docs: string[] = [`\\`${visibility}\\`${inlineDocParam(documentation)}\\n`];\n\n if ((parameters?.length ?? 0) > 0) {\n docs.push(`Parameters:\\n`);\n docs.push(...inlineParams(toParams(parameters)));\n }\n\n return docs.join('\\n');\n })\n );\n\n markdown.push('\\n');\n }\n\n const methodsToMarkdown = ({\n methods,\n titlePrefix\n }: {\n methods: DocEntry[];\n titlePrefix?: string;\n }): void => {\n if ((methods?.length ?? 0) === 0) {\n return;\n }\n\n markdown.push(`${headingLevel}# ${titlePrefix ?? ''}Methods\\n`);\n markdown.push(`${tableOfContent({entries: methods, emoji})}\\n`);\n\n // Explicitly do not pass repo to generate the source code link afterwards for the all block\n markdown.push(\n toMarkdown({\n entries: methods ?? [],\n headingLevel: `${headingLevel}#`,\n docType: 'Method',\n emoji\n })\n );\n };\n\n const [instanceMethods, staticMethods] = reduceStatic(methods ?? []);\n\n methodsToMarkdown({methods: staticMethods, titlePrefix: 'Static '});\n methodsToMarkdown({methods: instanceMethods});\n\n const propertiesToMarkdown = ({\n properties,\n titlePrefix\n }: {\n properties: DocEntry[];\n titlePrefix?: string;\n }): void => {\n if ((properties?.length ?? 0) === 0) {\n return;\n }\n\n markdown.push(`${headingLevel}# ${titlePrefix ?? ''}Properties\\n`);\n markdown.push(`${tableOfContent({entries: properties ?? [], emoji})}\\n`);\n\n // Explicitly do not pass repo to generate the source code link afterwards for the all block\n markdown.push(\n toMarkdown({\n entries: properties ?? [],\n headingLevel: `${headingLevel}#`,\n docType: 'Property',\n emoji\n })\n );\n };\n\n const [instanceProperties, staticProperties] = reduceStatic(properties ?? []);\n\n propertiesToMarkdown({properties: staticProperties, titlePrefix: 'Static '});\n propertiesToMarkdown({properties: instanceProperties});\n\n return markdown.join('\\n');\n};\n\nconst interfacesToMarkdown = ({\n entry,\n headingLevel,\n emoji\n}: {\n entry: DocEntry;\n} & Required<Pick<MarkdownOptions, 'headingLevel'>> &\n Omit<MarkdownOptions, 'headingLevel'> &\n Pick<MarkdownOptions, 'emoji'>): string => {\n const {name, documentation} = entry;\n\n const markdown: string[] = [\n `${headingLevel}# ${emoji === undefined || emoji === null ? '' : ':gear: '}${name}\\n`\n ];\n\n if (documentation !== undefined) {\n markdown.push(`${documentation}\\n`);\n }\n\n markdown.push(`| Property | Type | Description |`);\n markdown.push('| ---------- | ---------- | ---------- |');\n\n (entry.properties ?? []).forEach(({name, type, documentation, jsDocs}) => {\n const jsDocsDescription = (jsDocs ?? []).map(\n ({name, text}: JSDocTagInfo) =>\n `${name}${text !== undefined ? `: ${text.map(({text}) => text).join('')}` : ''}`\n );\n\n markdown.push(\n `| \\`${name}\\` | \\`${parseType(type ?? '')}\\` | ${documentation !== undefined && documentation !== '' ? parseType(documentation).replace(/\\r?\\n|\\r/g, '') : ''}${jsDocsDescription.length > 0 ? ` ${parseType(jsDocsDescription.join(''))}` : ''} |`\n );\n });\n\n markdown.push('\\n');\n\n return markdown.join('\\n');\n};\n\nconst sourceCodeLink = ({\n url,\n emoji\n}: Pick<MarkdownOptions, 'emoji'> & Required<Pick<DocEntry, 'url'>>): string =>\n `[${emojiTitle({emoji, key: 'link'}).trim()}${emoji !== null && emoji !== undefined ? ' ' : ''}Source](${url})\\n`;\n\n// Avoid issue if the Markdown table gets formatted with Prettier\nconst parseType = (type: string): string =>\n type\n .split('\\n')\n .map((line) => line.trim())\n .join(' ')\n .replace(/ \\| /g, ' or ')\n .replace(/ & /g, ' and ');\n\nconst toMarkdown = ({\n entries,\n headingLevel,\n docType,\n emoji\n}: {\n entries: DocEntry[];\n headingLevel: MarkdownHeadingLevel | '####';\n docType: 'Constant' | 'Function' | 'Method' | 'Property' | 'Type' | 'Enum';\n} & Pick<MarkdownOptions, 'emoji'>): string => {\n const jsDocsToParams = (jsDocs: JSDocTagInfo[]): Params[] => {\n const params: JSDocTagInfo[] = jsDocs.filter(({name}: JSDocTagInfo) => name === 'param');\n const texts: Array<SymbolDisplayPart[] | undefined> = params.map(({text}) => text);\n\n const parts: SymbolDisplayPart[][] = texts.reduce(\n (acc: SymbolDisplayPart[][], values: SymbolDisplayPart[] | undefined) => {\n if (values === undefined) {\n return acc;\n }\n\n return [...acc, values];\n },\n []\n );\n\n const toParam = (parts: SymbolDisplayPart[]): Params | undefined => {\n if (parts.find(({kind, text}) => kind === 'parameterName' && text !== '') === undefined) {\n return undefined;\n }\n\n const name = parts.find(({kind}) => kind === 'parameterName')?.text ?? '';\n const documentation = parts.find(({kind}) => kind === 'text')?.text ?? '';\n\n return {name, documentation};\n };\n\n return parts.map(toParam).filter((param) => param !== undefined) as Params[];\n };\n const jsDocsToExamples = (jsDocs: JSDocTagInfo[]): string[] => {\n const examples: JSDocTagInfo[] = jsDocs.filter(({name}: JSDocTagInfo) => name === 'example');\n const texts = examples\n .map(({text}) => text)\n .filter(Boolean)\n .flat(1) as SymbolDisplayPart[];\n return texts.map(({text}) => text).filter(Boolean);\n };\n\n const rows: Row[] = entries.map(\n ({name, type, documentation, parameters, jsDocs, url}: DocEntry) => ({\n name,\n type: type ?? '',\n documentation: documentation ?? '',\n params: [...toParams(parameters), ...jsDocsToParams(jsDocs ?? [])],\n examples: [...jsDocsToExamples(jsDocs ?? [])],\n url\n })\n );\n\n const rowToMarkdown = ({name, documentation, type, params, examples, url}: Row): string => {\n const markdown: string[] = [\n `${headingLevel}# ${emoji === undefined || emoji === null ? '' : ':gear: '}${name}\\n`\n ];\n\n if (documentation.length) {\n markdown.push(`${documentation}\\n`);\n }\n\n markdown.push(`| ${type === 'Type' ? 'Type alias' : docType} | Type |`);\n markdown.push('| ---------- | ---------- |');\n markdown.push(\n `| \\`${name}\\` | ${type !== undefined && type !== '' ? `\\`${parseType(type)}\\`` : ''} |\\n`\n );\n\n if (params.length) {\n markdown.push('Parameters:\\n');\n markdown.push(...inlineParams(params));\n markdown.push('\\n');\n }\n if (examples.length) {\n markdown.push('Examples:\\n');\n markdown.push(...examples);\n markdown.push('\\n');\n }\n if (url !== undefined) {\n markdown.push(sourceCodeLink({emoji, url}));\n }\n\n return markdown.join('\\n');\n };\n\n return rows.map(rowToMarkdown).join('\\n');\n};\n\nconst tableOfContent = ({\n entries,\n emoji\n}: {\n entries: DocEntry[];\n} & Pick<MarkdownOptions, 'emoji'>): string =>\n entries\n .map(\n ({name}) =>\n `- [${name}](#${emoji === undefined || emoji === null ? '' : `${emoji.entry}-`}${name\n .toLowerCase()\n .replace(/ /g, '-')})`\n )\n .join('\\n');\n\nconst emojiTitle = ({\n emoji,\n key\n}: {\n key: keyof MarkdownEmoji;\n} & Pick<MarkdownOptions, 'emoji'>): string =>\n emoji === undefined || emoji === null ? '' : ` :${emoji[key]}:`;\n\nconst DEFAULT_EMOJI: MarkdownEmoji = {\n classes: 'factory',\n functions: 'toolbox',\n constants: 'wrench',\n enum: 'nut_and_bolt',\n entry: 'gear',\n link: 'link',\n interfaces: 'tropical_drink',\n types: 'cocktail'\n};\n\n/**\n * Convert the documentation entries to an opinionated Markdown format.\n *\n * @param {entries: DocEntry[]; options: MarkdownOptions;} params\n * @param params.entries The entries of the documentation (functions, constants and classes).\n * @param params.options Optional configuration to render the Markdown content. See `types.ts` for details.\n */\nexport const documentationToMarkdown = ({\n entries,\n options\n}: {\n entries: DocEntry[];\n options?: MarkdownOptions;\n}): string => {\n const {headingLevel: userHeadingLevel, emoji: userEmoji} = options ?? {\n headingLevel: '##',\n emoji: DEFAULT_EMOJI\n };\n\n const headingLevel = userHeadingLevel ?? '##';\n\n const emoji: MarkdownEmoji | undefined =\n userEmoji === null ? undefined : (userEmoji ?? DEFAULT_EMOJI);\n\n const functions: DocEntry[] = entries.filter(({doc_type}: DocEntry) => doc_type === 'function');\n const classes: DocEntry[] = entries.filter(({doc_type}: DocEntry) => doc_type === 'class');\n const constants: DocEntry[] = entries.filter(({doc_type}: DocEntry) => doc_type === 'const');\n const enums: DocEntry[] = entries.filter(({doc_type}: DocEntry) => doc_type === 'enum');\n const types: DocEntry[] = entries.filter(({doc_type}: DocEntry) => doc_type === 'type');\n const interfaces: DocEntry[] = entries.filter(({doc_type}: DocEntry) => doc_type === 'interface');\n\n const markdown: string[] = [];\n\n if (functions.length) {\n markdown.push(`${headingLevel}${emojiTitle({emoji, key: 'functions'})} Functions\\n`);\n markdown.push(`${tableOfContent({entries: functions, emoji})}\\n`);\n markdown.push(\n `${toMarkdown({entries: functions, headingLevel, emoji, docType: 'Function'})}\\n`\n );\n }\n\n if (constants.length) {\n markdown.push(`${headingLevel}${emojiTitle({emoji, key: 'constants'})} Constants\\n`);\n markdown.push(`${tableOfContent({entries: constants, emoji})}\\n`);\n markdown.push(\n `${toMarkdown({entries: constants, headingLevel, emoji, docType: 'Constant'})}\\n`\n );\n }\n markdown.push(\n classes.map((entry: DocEntry) => classesToMarkdown({entry, headingLevel, emoji})).join('\\n')\n );\n if (enums.length) {\n markdown.push(`${headingLevel}${emojiTitle({emoji, key: 'enum'})} Enum\\n`);\n markdown.push(`${tableOfContent({entries: enums, emoji})}\\n`);\n markdown.push(\n enums.map((entry: DocEntry) => interfacesToMarkdown({entry, headingLevel, emoji})).join('\\n')\n );\n }\n if (interfaces.length) {\n markdown.push(`${headingLevel}${emojiTitle({emoji, key: 'interfaces'})} Interfaces\\n`);\n markdown.push(`${tableOfContent({entries: interfaces, emoji})}\\n`);\n markdown.push(\n interfaces\n .map((entry: DocEntry) => interfacesToMarkdown({entry, headingLevel, emoji}))\n .join('\\n')\n );\n }\n\n if (types.length) {\n markdown.push(`${headingLevel}${emojiTitle({emoji, key: 'types'})} Types\\n`);\n markdown.push(`${tableOfContent({entries: types, emoji})}\\n`);\n markdown.push(`${toMarkdown({entries: types, headingLevel, emoji, docType: 'Type'})}\\n`);\n }\n\n return markdown.join('\\n');\n};\n"], "mappings": "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", "names": ["toParams", "parameters", "name", "documentation", "inlineDocParam", "inlineParams", "params", "reduceStatic", "values", "i", "s", "value", "classesToMarkdown", "entry", "headingLevel", "emoji", "url", "methods", "properties", "constructors", "markdown", "emojiTitle", "sourceCodeLink", "publicConstructors", "visibility", "docs", "methodsToMarkdown", "titlePrefix", "tableOfContent", "toMarkdown", "instanceMethods", "staticMethods", "propertiesToMarkdown", "instanceProperties", "staticProperties", "interfacesToMarkdown", "type", "jsDocs", "jsDocsDescription", "text", "parseType", "line", "entries", "docType", "jsDocsToParams", "parts", "acc", "toParam", "_a", "_b", "kind", "param", "jsDocsToExamples", "rows", "rowToMarkdown", "examples", "key", "DEFAULT_EMOJI", "documentationToMarkdown", "options", "userHeadingLevel", "userEmoji", "functions", "doc_type", "classes", "constants", "enums", "types", "interfaces"] }