UNPKG

4.72 kBTypeScriptView Raw
1/// <reference types="node" />
2declare module 'react-docgen' {
3 import { Tag, Type } from 'doctrine';
4 import { ASTNode } from 'ast-types';
5 import { NodePath } from 'ast-types/lib/node-path';
6 type Handler = (documentation: Documentation, path: NodePath) => void;
7 interface Documentation {
8 addComposes(moduleName: string): void;
9 set(key: string, value: any): void;
10 get(key: string): any;
11 getPropDescriptor(propName: string): PropDescriptor;
12 getContextDescriptor(propName: string): PropDescriptor;
13 getChildContextDescriptor(propName: string): PropDescriptor;
14 toObject(): DocumentationObject;
15 }
16 interface TagObject extends Omit<Tag, 'description'> {
17 description?: string;
18 }
19 interface TagParamObject extends TagObject {
20 name: string;
21 type?: Type | null;
22 default?: string;
23 }
24 interface TagProps {
25 deprecated?: TagObject[];
26 see?: TagObject[];
27 link?: TagObject[];
28 author?: TagObject[];
29 version?: TagObject[];
30 since?: TagObject[];
31 returns?: TagParamObject[];
32 return?: TagParamObject[];
33 arg?: TagParamObject[];
34 argument?: TagParamObject[];
35 param?: TagParamObject[];
36 [title: string]: TagObject[] | undefined;
37 }
38 interface PropTypeDescriptor {
39 name: 'arrayOf' | 'custom' | 'enum' | 'array' | 'bool' | 'func' | 'number' | 'object' | 'string' | 'any' | 'element' | 'node' | 'symbol' | 'objectOf' | 'shape' | 'exact' | 'instanceOf' | 'elementType';
40 value?: any;
41 raw?: string;
42 computed?: boolean;
43 description?: string;
44 required?: boolean;
45 }
46 interface PropDescriptor {
47 name: string;
48 type?: PropTypeDescriptor;
49 required?: boolean;
50 defaultValue?: any;
51 description?: string;
52 tags?: TagProps;
53 }
54 interface MethodDescriptor {
55 name: string;
56 description?: string;
57 docblock?: string;
58 returns?: {
59 name: string;
60 [key: string]: any;
61 } | null;
62 params?: any[];
63 modifiers?: string[];
64 tags?: TagProps;
65 }
66 interface DocumentationObject {
67 displayName?: string;
68 description?: string;
69 tags?: TagProps;
70 props?: {
71 [propName: string]: PropDescriptor;
72 };
73 methods?: MethodDescriptor[];
74 context?: {
75 [constextName: string]: PropDescriptor;
76 };
77 childContext?: {
78 [chilCOntextName: string]: PropDescriptor;
79 };
80 composes?: string[];
81 }
82 interface Options {
83 filename?: string;
84 cwd?: string;
85 babelrc?: string;
86 babelrcRoots?: boolean | string | string[];
87 root?: string;
88 rootMode?: 'root' | 'upward' | 'upward-optional';
89 configFile?: string;
90 envName?: string;
91 }
92 const defaultHandlers: Handler[];
93 /**
94 * Parse the components at filePath and return props, public methods, events and slots
95 * @param filePath absolute path of the parsed file
96 * @param opts
97 */
98 function parse(source: string | Buffer, resolver?: (ast: ASTNode, parser: {
99 parse: (code: string) => ASTNode;
100 }) => NodePath<any, any> | NodePath[], handlers?: Handler[], options?: Options): DocumentationObject | DocumentationObject[];
101 const utils: {
102 docblock: {
103 getDoclets: (str?: string) => Record<string, any>;
104 };
105 };
106 const resolver: {
107 findAllComponentDefinitions(ast: ASTNode): NodePath[];
108 findAllExportedComponentDefinitions(ast: ASTNode, recast: {
109 visit: (path: NodePath, handlers: {
110 [handlerName: string]: () => boolean | undefined;
111 }) => void;
112 }): NodePath[];
113 findExportedComponentDefinition(ast: ASTNode): NodePath | undefined;
114 };
115}
116declare module 'react-docgen-displayname-handler' {
117 import { NodePath as DisplaNameHandlerNodePath } from 'ast-types/lib/node-path';
118 import { Documentation } from 'react-docgen';
119 type Handler = (documentation: Documentation, path: DisplaNameHandlerNodePath) => void;
120 function createDisplayNameHandler(componentPath: string): Handler;
121}
122declare module 'react-docgen-annotation-resolver' {
123 import { ASTNode as AnnoASTNode } from 'ast-types';
124 import { NodePath as AnnoNodePath } from 'ast-types/lib/node-path';
125 function annotationResolver(ast: AnnoASTNode, recast: {
126 visit: (node: AnnoNodePath, handlers: {
127 [handlerName: string]: () => boolean | undefined;
128 }) => void;
129 }): AnnoNodePath[];
130 export = annotationResolver;
131}