export interface Method { name: string; args: Argument[]; returnType: string; decorators?: Decorator[]; description?: string; rawdescription?: string; } export interface JsDocTag { comment?: string; tagName?: { escapedText?: string; }; } export interface Property { name: string; decorators?: Decorator[]; type: string; optional: boolean; defaultValue?: string; description?: string; rawdescription?: string; jsdoctags?: JsDocTag[]; } export interface Class { name: string; ngname: string; type: 'pipe'; properties: Property[]; methods: Method[]; description?: string; rawdescription?: string; } export interface Injectable { name: string; type: 'injectable'; properties: Property[]; methods: Method[]; description?: string; rawdescription?: string; } export interface Pipe { name: string; type: 'class'; properties: Property[]; methods: Method[]; description?: string; rawdescription?: string; } export interface Directive { name: string; type: 'directive' | 'component'; propertiesClass: Property[]; inputsClass: Property[]; outputsClass: Property[]; methodsClass: Method[]; description?: string; rawdescription?: string; } export type Component = Directive; export interface Argument { name: string; type: string; optional?: boolean; } export interface Decorator { name: string; } export interface TypeAlias { name: string; ctype: string; subtype: string; rawtype: string; file: string; kind: number; description?: string; rawdescription?: string; } export interface EnumType { name: string; childs: EnumTypeChild[]; ctype: string; subtype: string; file: string; description?: string; rawdescription?: string; } export interface EnumTypeChild { name: string; value?: string; } export interface CompodocJson { directives: Directive[]; components: Component[]; pipes: Pipe[]; injectables: Injectable[]; classes: Class[]; miscellaneous?: { typealiases?: TypeAlias[]; enumerations?: EnumType[]; }; }