react-docgen
Advanced tools
Comparing version 3.0.0-beta5 to 3.0.0-beta6
@@ -30,31 +30,29 @@ 'use strict'; | ||
var types = _recast2.default.types.namedTypes; /* | ||
* Copyright (c) 2015, Facebook, Inc. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. An additional grant | ||
* of patent rights can be found in the PATENTS file in the same directory. | ||
* | ||
* | ||
*/ | ||
var types = _recast2.default.types.namedTypes; | ||
function getMethodsDoc(methodPaths) { | ||
var methods = []; | ||
/** | ||
* The following values/constructs are considered methods: | ||
* | ||
* - Method declarations in classes (except "constructor" and React lifecycle | ||
* methods | ||
* - Public class fields in classes whose value are a functions | ||
* - Object properties whose values are functions | ||
*/ | ||
/* | ||
* Copyright (c) 2015, Facebook, Inc. | ||
* All rights reserved. | ||
* | ||
* This source code is licensed under the BSD-style license found in the | ||
* LICENSE file in the root directory of this source tree. An additional grant | ||
* of patent rights can be found in the PATENTS file in the same directory. | ||
* | ||
* | ||
*/ | ||
methodPaths.forEach(function (methodPath) { | ||
if ((0, _isReactComponentMethod2.default)(methodPath)) { | ||
return; | ||
} | ||
function isMethod(path) { | ||
var isProbablyMethod = types.MethodDefinition.check(path.node) && path.node.kind !== 'constructor' || types.ClassProperty.check(path.node) && types.Function.check(path.get('value').node) || types.Property.check(path.node) && types.Function.check(path.get('value').node); | ||
methods.push((0, _getMethodDocumentation2.default)(methodPath)); | ||
}); | ||
return methods; | ||
return isProbablyMethod && !(0, _isReactComponentMethod2.default)(path); | ||
} | ||
function isFunctionExpression(path) { | ||
return types.FunctionExpression.check(path.get('value').node); | ||
} | ||
/** | ||
@@ -68,7 +66,5 @@ * Extract all flow types for the methods of a react component. Doesn't | ||
if ((0, _isReactComponentClass2.default)(path)) { | ||
methodPaths = path.get('body', 'body').filter(function (p) { | ||
return types.MethodDefinition.check(p.node) && p.node.kind !== 'constructor'; | ||
}); | ||
methodPaths = path.get('body', 'body').filter(isMethod); | ||
} else if (types.ObjectExpression.check(path.node)) { | ||
methodPaths = path.get('properties').filter(isFunctionExpression); | ||
methodPaths = path.get('properties').filter(isMethod); | ||
@@ -79,3 +75,3 @@ // Add the statics object properties. | ||
statics.get('properties').each(function (p) { | ||
if (isFunctionExpression(p)) { | ||
if (isMethod(p)) { | ||
p.node.static = true; | ||
@@ -88,4 +84,3 @@ methodPaths.push(p); | ||
var methods = getMethodsDoc(methodPaths); | ||
documentation.set('methods', methods); | ||
documentation.set('methods', methodPaths.map(_getMethodDocumentation2.default)); | ||
} |
@@ -117,4 +117,3 @@ 'use strict'; | ||
var propDescriptor = documentation.getPropDescriptor((0, _getPropertyName2.default)(propertyPath)); | ||
var value = isStatelessComponent ? propertyPath.get('value', 'right') : propertyPath.get('value'); | ||
var defaultValue = getDefaultValue(value, isStatelessComponent); | ||
var defaultValue = getDefaultValue(isStatelessComponent ? propertyPath.get('value', 'right') : propertyPath.get('value')); | ||
if (defaultValue) { | ||
@@ -121,0 +120,0 @@ propDescriptor.defaultValue = defaultValue; |
@@ -37,2 +37,3 @@ 'use strict'; | ||
case types.ObjectPattern.name: | ||
case types.ArrayPattern.name: | ||
return (0, _printValue2.default)(parameterPath); | ||
@@ -39,0 +40,0 @@ case types.RestElement.name: |
@@ -42,3 +42,4 @@ 'use strict'; | ||
function isRenderMethod(node) { | ||
return types.MethodDefinition.check(node) && !node.computed && !node.static && (node.kind === '' || node.kind === 'method') && node.key.name === 'render'; | ||
var isProperty = node.type === 'ClassProperty'; | ||
return (types.MethodDefinition.check(node) || isProperty) && !node.computed && !node.static && (node.kind === '' || node.kind === 'method' || isProperty) && node.key.name === 'render'; | ||
} | ||
@@ -45,0 +46,0 @@ |
@@ -6,2 +6,7 @@ 'use strict'; | ||
}); | ||
var _getIterator2 = require('babel-runtime/core-js/get-iterator'); | ||
var _getIterator3 = _interopRequireDefault(_getIterator2); | ||
exports.default = resolveToValue; | ||
@@ -121,8 +126,35 @@ | ||
if (types.ObjectExpression.check(resolved.node)) { | ||
var memberParts = (0, _expressionTo.Array)(path).slice(1); | ||
var init = memberParts.reduce(function (propertyPath, propertyName) { | ||
propertyPath = resolveToValue(propertyPath); | ||
return types.ObjectExpression.check(propertyPath.node) ? (0, _getPropertyValuePath2.default)(propertyPath, propertyName) : null; | ||
}, resolved); | ||
return init ? resolveToValue(init) : path; | ||
var propertyPath = resolved; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = (0, _getIterator3.default)((0, _expressionTo.Array)(path).slice(1)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var propertyName = _step.value; | ||
if (propertyPath && types.ObjectExpression.check(propertyPath.node)) { | ||
propertyPath = (0, _getPropertyValuePath2.default)(propertyPath, propertyName); | ||
} | ||
if (!propertyPath) { | ||
return path; | ||
} | ||
propertyPath = resolveToValue(propertyPath); | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
return propertyPath; | ||
} | ||
@@ -129,0 +161,0 @@ } else if (types.ImportDefaultSpecifier.check(node) || types.ImportNamespaceSpecifier.check(node) || types.ImportSpecifier.check(node)) { |
{ | ||
"name": "react-docgen", | ||
"version": "3.0.0-beta5", | ||
"version": "3.0.0-beta6", | ||
"description": "A CLI and toolkit to extract information from React components for documentation generation.", | ||
@@ -33,7 +33,7 @@ "repository": { | ||
"babel-runtime": "^6.9.2", | ||
"babylon": "v7.0.0-beta.8", | ||
"babylon": "v7.0.0-beta.17", | ||
"commander": "^2.9.0", | ||
"doctrine": "^2.0.0", | ||
"node-dir": "^0.1.10", | ||
"recast": "^0.11.5" | ||
"recast": "^0.12.6" | ||
}, | ||
@@ -43,3 +43,3 @@ "devDependencies": { | ||
"babel-eslint": "^7.0.0", | ||
"babel-jest": "^18.0.0", | ||
"babel-jest": "^20.0.3", | ||
"babel-plugin-transform-object-rest-spread": "^6.23.0", | ||
@@ -50,5 +50,5 @@ "babel-plugin-transform-runtime": "^6.9.0", | ||
"cross-spawn": "^5.0.0", | ||
"eslint": "^3.2.2", | ||
"flow-bin": "^0.39.0", | ||
"jest": "^18.1.0", | ||
"eslint": "^4.3.0", | ||
"flow-bin": "^0.50.0", | ||
"jest": "^20.0.4", | ||
"rimraf": "^2.3.2", | ||
@@ -59,3 +59,3 @@ "temp": "^0.8.1" | ||
"setupTestFrameworkScriptFile": "<rootDir>/tests/setupTestFramework.js", | ||
"testPathDirs": [ | ||
"roots": [ | ||
"bin", | ||
@@ -62,0 +62,0 @@ "src" |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4145
296550
+ Addedast-types@0.10.1(transitive)
+ Addedesprima@4.0.1(transitive)
+ Addedrecast@0.12.9(transitive)
+ Addedsource-map@0.6.1(transitive)
- Removedast-types@0.9.6(transitive)
- Removedesprima@3.1.3(transitive)
- Removedrecast@0.11.23(transitive)
- Removedsource-map@0.5.7(transitive)
Updatedbabylon@v7.0.0-beta.17
Updatedrecast@^0.12.6