UNPKG

docusaurus-plugin-typedoc-api

Version:

Docusaurus plugin that provides source code API documentation powered by TypeDoc.

51 lines (40 loc) 1.14 kB
import type { JSONOutput } from 'typedoc'; export interface HierarchyNode { types: JSONOutput.SomeType[]; next?: HierarchyNode; isTarget?: boolean; } // The JSON output does not include hierarchy information, so we need to duplicate the logic! // https://github.com/TypeStrong/typedoc/blob/master/src/lib/converter/plugins/TypePlugin.ts#L98 export function createHierarchy(reflection: JSONOutput.Reflection) { let root!: HierarchyNode; let hierarchy!: HierarchyNode; function push(types?: JSONOutput.SomeType[]) { if (!types) { return; } const level: HierarchyNode = { types }; if (hierarchy) { hierarchy.next = level; hierarchy = level; } else { root = level; hierarchy = level; } } if ('extendedTypes' in reflection && reflection.extendedTypes) { push((reflection as JSONOutput.DeclarationReflection).extendedTypes); } push([ { name: reflection.name, target: reflection.id, type: 'reference', }, ]); hierarchy.isTarget = true; if ('extendedBy' in reflection && reflection.extendedBy) { push((reflection as JSONOutput.DeclarationReflection).extendedBy); } return root; }