Skip to content

Releases: reactjs/react-docgen

v2.12.0

20 Oct 18:51
Compare
Choose a tag to compare

New

  • Support for objectOf prop type (86b167f) (reported as #74)
  • Treat default arguments as default props in stateless components ( #108, @CompuIves)

Improved

  • When passing an unknown value to shape(...), react-docgen will now report that value as computed.

    Example: shape(Child.propTypes)
    Before:

    "type": {
      "name": "shape",
      "value": "unkown"
    }

    Now:

    "type": {
      "name": "shape",
      "value": "Child.propTypes",
      "computed": true
    }

    (eb0edaa) (reported as #87)

  • Resolve static values passed to oneOf. Examples:

    React.PropTypes.oneOf([TYPES.FOO, TYPES.BAR]);
    // or:
    var TYPES = ["FOO", "BAR"];
    React.PropTypes.oneOf(TYPES);
    // or:
    var TYPES = ["A", "B"];
    var MORE = [...TYPES, "C"];
    React.PropTypes.oneOf(MORE);

    (#122, @ZauberNerd)

Fixed

  • Fixed an issue with the output of react-docgen being truncated when piping to another command (#127, @mmeineke)

v2.11.0

05 Oct 17:57
Compare
Choose a tag to compare

New

Detect exported components passed to HOCs

Until now, react-docgen didn’t find components that are passed to a higher order component (HOC):

function MyComponent() { /* ... */ }
export default hoc(MyComponent);

The workaround was to change the resolver to find all component definitions in the file, something that is not always desirable.

With #124, @rtsao extended the default resolver to be able to handle these cases.

Fixes

  • findAllExportedComponentDefinitions can now be selected in the CLI.
    (reported as issue #119)

  • The static variable resolution process was fixed to consider assignments to variables. The following example didn’t work before and works now:

    var Component;
    Component = React.createClass(...);
    module.exports = Component;

    (reported as issue #58)

  • The display name handler now takes displayName getters in class definitions into account:

    class Component extends React.Component {
      static get displayName() {
        return 'Name';
      }
    }

    (reported as issue #61)

Internal improvements

To guard ourselves better against regressions, we are using jest’s snapshot tests to test component definitions that are reported as broken.

v2.10.0

25 Aug 16:18
Compare
Choose a tag to compare

New

  • New findAllExportedComponentDefinitions resolver. As the name suggests, it finds all exported component definitions. This complements the resolvers for finding all component definitions and the default exported definition ( #114, @ZauberNerd )
  • New CLI option: -e, --exclude PATTERN, allows you to skip files that match the provided pattern ( #102, @wallaroo )

Fixed / improved

  • Currently resolve namespace imports to their module ( #109, @ZauberNerd )
  • Resolve MemberExpressions (such as propTypes of a stateless component) to the correct object ( #111, @ZauberNerd )
  • Handle intersection and union flow types for prop types definitions. Intersection types are supported, union types are silently ignored. Before react-docgen would throw an error. ( #118, @danez )
  • If a default prop value references an imported value, the value of the prop will now be the variable name ( #99 , @nathanmarks )
  • The jsdoc type declarations @param {x|y} and @param {*} now correctly resolve to their equivalent flow type declarations (union and mixed). ( #95 , @dickeylth )

Thanks to everyone who contributed, this is great!

v2.9.1

22 Jun 16:41
Compare
Choose a tag to compare

Fixed

v2.9.0

21 Jun 17:55
Compare
Choose a tag to compare

New: Type aliases and optional method parameter flag

@caabernathy added new information to method parameters ( #83 ). If the parameter has a flow type, the name of the type is no also included. I.e. if the type definition is:

export type StatusBarStyle = $Enum<{
     ...
}

the docs for a parameter of that type will include alias: "StatusBarStyle".

In addition the docs now include an optional field indicating whether the parameter is optional or nor.

v2.8.2

10 Apr 05:31
Compare
Choose a tag to compare

Fix/Improvement

  • Better handling of method parameters ( #72 )

v2.8.1

08 Apr 22:53
Compare
Choose a tag to compare

I believe publishing 2.8.0 to npm didn't work properly, so this just to ensure that there is a working version in npm.

No changes in this release.

v2.8.0

08 Apr 22:51
Compare
Choose a tag to compare

New

@janicduplessis added support for extracting documentation about custom React component methods ( #66 ).

v2.7.0

29 Jan 22:35
Compare
Choose a tag to compare

New

This version adds a great new feature: Support for Flow type definitions. Thanks a lot to @danez for implementing this feature ( #48 ).

react-docgen is now able to extract type definitions as in this example:

import React, { Component } from 'react';

type Props = {
  /** Description of prop "foo". */
  primitive: number,
  /** Description of prop "bar". */
  literalsAndUnion: 'string' | 'otherstring' | number,
  arr: Array<any>,
  func?: (value: string) => void,
  obj?: { subvalue: ?boolean },
};

/**
 * General component description.
 */
export default class MyComponent extends Component<void, Props, void> {

  props: Props;

  render(): ?ReactElement {
    // ...
  }
}

In the JSON output, every prop will have a new field named flowType. If you use both, flow (for static type checks) and React propTypes (for dynamic type checks) you can do so without any collisions. The JSON blob now simply contains more information and you can decide which one to use for your documentation.

Have a look at the more extensive description in the README to learn how flow types are represented.

v2.6.3

19 Jan 22:25
Compare
Choose a tag to compare

Fixes

  • propTypeHandler now ignores nodes that are not ObjectExpressions. If there was something else, e.g.

    propTypes: Foo.bar,
    

    propTypeHandler used to throw an error.