code: function parse(path) {
    if (t.Array.is(path)) {
      return path.map(parse).filter(Boolean);
    }
    var component = getComponent(require(path));
    if (component) {
      var comments = getComments(path);
      var descriptions = getDescriptions(comments);
      var type = toObject(getPropsType(component));
      var props = type.kind === 'refinement' ? type.type.props : type.props;
      var defaultProps = getDefaultProps(component);
      var name = getComponentName(component);
      for (var prop in props) {
        if (props.hasOwnProperty(prop)) {
          if (defaultProps.hasOwnProperty(prop)) {
            props[prop].defaultValue = defaultProps[prop];
          }
          if (descriptions.props.hasOwnProperty(prop)) {
            props[prop].description = descriptions.props[prop];
          }
        }
      }
      return {
        name: name,
        description: descriptions.component,
        props: props
      };
    }
  }
docs: (path: t.String) => { name, description, props }