forked from carteb/carte-blanche
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathresolver.js
More file actions
30 lines (23 loc) · 695 Bytes
/
Copy pathresolver.js
File metadata and controls
30 lines (23 loc) · 695 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* eslint-disable no-var */
var reactDocs = require('react-docgen').utils;
module.exports = function findReactComponent(ast, recast) {
var definition;
function findComponent(path) {
if (reactDocs.isReactComponentClass(path)) {
reactDocs.normalizeClassDefinition(path);
definition = path;
}
if (reactDocs.isStatelessComponent(path)) {
definition = path;
}
return false;
}
recast.visit(ast, {
visitFunctionDeclaration: findComponent,
visitFunctionExpression: findComponent,
visitArrowFunctionExpression: findComponent,
visitClassExpression: findComponent,
visitClassDeclaration: findComponent,
});
return definition;
};