typescript-docgen-types.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import ts, { HeritageClause } from 'typescript';
  2. export interface MethodParameterInfo {
  3. name: string;
  4. type: string;
  5. optional: boolean;
  6. initializer?: string;
  7. }
  8. export interface MemberInfo {
  9. name: string;
  10. description: string;
  11. type: string;
  12. fullText: string;
  13. modifiers: string[];
  14. since: string | undefined;
  15. experimental: boolean;
  16. }
  17. export interface PropertyInfo extends MemberInfo {
  18. kind: 'property';
  19. defaultValue: string;
  20. }
  21. export interface MethodInfo extends MemberInfo {
  22. kind: 'method';
  23. parameters: MethodParameterInfo[];
  24. }
  25. export interface DocsPage {
  26. title: string;
  27. category: string[];
  28. declarations: ParsedDeclaration[];
  29. fileName: string;
  30. }
  31. export interface DeclarationInfo {
  32. packageName: string;
  33. sourceFile: string;
  34. sourceLine: number;
  35. title: string;
  36. fullText: string;
  37. weight: number;
  38. category: string;
  39. description: string;
  40. page: string | undefined;
  41. since: string | undefined;
  42. experimental: boolean;
  43. }
  44. export interface InterfaceInfo extends DeclarationInfo {
  45. kind: 'interface';
  46. extendsClause: HeritageClause | undefined;
  47. members: Array<PropertyInfo | MethodInfo>;
  48. }
  49. export interface ClassInfo extends DeclarationInfo {
  50. kind: 'class';
  51. extendsClause: HeritageClause | undefined;
  52. implementsClause: HeritageClause | undefined;
  53. members: Array<PropertyInfo | MethodInfo>;
  54. }
  55. export interface TypeAliasInfo extends DeclarationInfo {
  56. kind: 'typeAlias';
  57. members?: Array<PropertyInfo | MethodInfo>;
  58. type: ts.TypeNode;
  59. }
  60. export interface EnumInfo extends DeclarationInfo {
  61. kind: 'enum';
  62. members: PropertyInfo[];
  63. }
  64. export interface FunctionInfo extends DeclarationInfo {
  65. kind: 'function';
  66. parameters: MethodParameterInfo[];
  67. type?: ts.TypeNode;
  68. }
  69. export interface VariableInfo extends DeclarationInfo {
  70. kind: 'variable';
  71. }
  72. export type ParsedDeclaration =
  73. | TypeAliasInfo
  74. | ClassInfo
  75. | InterfaceInfo
  76. | EnumInfo
  77. | FunctionInfo
  78. | VariableInfo;
  79. export type ValidDeclaration =
  80. | ts.InterfaceDeclaration
  81. | ts.TypeAliasDeclaration
  82. | ts.ClassDeclaration
  83. | ts.EnumDeclaration
  84. | ts.FunctionDeclaration
  85. | ts.VariableStatement;
  86. export type TypeMap = Map<string, string>;