react-docgen

A CLI and library to extract information from React component files for documentation generation purposes.

MIT License

Downloads
19.6M
Stars
3.6K
Committers
89

Bot releases are visible (Hide)

react-docgen - 5.3.0

Published by danez over 4 years ago

New Features

  • Support static methods on function components (#433)

Bug Fixes

  • Handle docblock on out-of-line forwardRef (#435)
  • Infer displayName given forwardRef node (#436)
  • Avoid circular reference when resolving name from within assignment (#434)
  • Fix crash by only visit paths, not nodes (#432)
react-docgen - 5.2.1

Published by danez over 4 years ago

Bug Fixes

  • Support forwardRef with out of line argument (#430)
  • Support empty type for flow (#431)
react-docgen - 5.2.0

Published by danez over 4 years ago

New Features

  • Support new topLevelAwait plugin in babel parser

Bug Fixes

  • Fix to Flow Maximum Callstack exceeded error on recursive generic structs (#428)

Performance

  • Switch from async to neo-async in the cli
react-docgen - 5.1.0

Published by danez almost 5 years ago

New Features

  • skip private methods in Documentation (#409)

Bug Fixes

  • Resolve local spreads in defaultProps (#404)
  • Do not forward typeParameters when using resolved Path, to fix infinite loop (#417)
react-docgen - 5.0.0

Published by danez almost 5 years ago

BREAKING CHANGES

  • The license changed to MIT. When updating ensure that MIT is one of the licenses allowed in your project.
  • The signature of resolvers has changed. It previously received the Program AST node as first param and recast as second param. The new signature receives the File AST node as first argument and the preconfigured parser as second argument.
    resolver(ast: ASTNode, parser: { parse: (string) => AST })
  • Node 8.10.0 or newer is required, older versions are not supported anymore
  • When we detect HOC react-docgen now assumes that the first argument to the HOC is the component. Previously we assumed the last argument is the component, but nearly all implementations of HOC which have multiple arguments have the component as the first argument.
  • React class components now require to extend another class in order to be detected as component. Previously any class having a render method was considered a react component.

New Features

  • Handle computed properties correctly and do not fail generation (#340)
    If you are using computed properties in your react props we will now include them in the output if we can. If the expression in the computed property is a literal (string, number) we will directly use this as the name otherwise if it is an identifier we will use this an prefix it with @computed#.
  • Fully support React.forwardRef (#350)
  • Add support for TypeScript (#348)
    We will now correctly parse TypeScript if the filename supplied to react-docgen has a TypeScript extension (.ts, .tsx). If you have babel already setup for TypeScript in your project then all you need to do is supply the filename via the parse options. In the output there will be a new property called tsType which will include the documentation extracted from TypeScript.
  • Add support for TSMappedType (#362)
  • Add support for Flow interfaces and Flow generic types (#348)
  • The default parse function can now receive a string or a Buffer.
  • Handlers now receive the preconfigured parser as 3rd argument.
    handler(documentation: Documentation, path: NodePath, parser: { parse: (string) => AST })
  • Support destructuring and aliased imports in react builtin call detection (#385)
  • Be more strict about detecting react class components (#397)

Performance

  • Remove recast and use ast-types directly (#349)

Bug Fixes

  • Add missing isReactForwardRefCall export (#351)
  • HOCs resolving intermediate values (#378)
  • Expand index types correctly (#369)
  • Type inference on forwardRef components (#392)
  • Support ts(x) file parsing using CLI (#391)
  • Assume HOC first param is Component not last (#343)
  • Detect components wrapped in HOC with all resolver (#344)
  • Bail when function returns are recursive instead of stack overflowing (#407)
  • Support type as expressions and type assertions (#408)
react-docgen - v5.0.0-beta.1

Published by danez over 5 years ago

The first prerelease of yet another breaking version, but it comes with a lot of nice goodies and three massive changes.

  • We finally have TypeScript support thanks to the hard work of @devongovett 🎉. If you are using React in combination with TypeScript we ask you to try this prerelease and report back if everything works as expected.
  • react-docgen v5 is now licensed under the MIT license 👏. Thanks to @fkling for talking to the right people at Facebook to make this happen.
  • We improved the performance by removing the recast dependency and using babel directly for parsing the code. In our measurements we saw a 20% to 25% performance increase. If you are testing this new prerelease let us now if you see any improvement in your project.

And there are more helpful changes to come till the final. Stay tuned.

This release includes all changes up to v4.1.1.

BREAKING CHANGES

  • The license changed to MIT. When updating ensure that MIT is one of the licenses allowed in your project.
  • The signature of resolvers has changed. It previously received the Program AST node as first param and recast as second param. The new signature receives the File AST node as first argument and the preconfigured parser as second argument.
    resolver(ast: ASTNode, parser: { parse: (string) => AST })

New Features

  • Handle computed properties correctly and do not fail generation (#340)
    If you are using computed properties in your react props we will now include them in the output if we can. If the expression in the computed property is a literal (string, number) we will directly use this as the name otherwise if it is an identifier we will use this an prefix it with @computed#.
  • Fully support React.forwardRef (#350)
  • Add support for TypeScript (#348)
    We will now correctly parse TypeScript if the filename supplied to react-docgen has a TypeScript extension (.ts, .tsx). If you have babel already setup for TypeScript in your project then all you need to do is supply the filename via the parse options. In the output there will be a new property called tsType which will include the documentation extracted from TypeScript.
  • Add support for Flow interfaces and Flow generic types (#348)
  • The default parse function can now receive a string or a Buffer.
  • Handlers now receive the preconfigured parser as 3rd argument.
    handler(documentation: Documentation, path: NodePath, parser: { parse: (string) => AST })

Performance

  • Remove recast and use ast-types directly (#349)

Bug Fixes

  • Add missing isReactForwardRefCall export (#351)
react-docgen - 4.1.1

Published by danez over 5 years ago

Bug Fixes

  • Resolve spread properties in object type (#339)
  • Ignore lifecycle methods of latest react updates
  • Ignore private class properties (#347)
  • Fix resolving of more than two Flow Utility types (#345)
react-docgen - 4.1.0

Published by danez over 5 years ago

New Features

  • Support all the config resolving related babel options (#334)
    This allows the new options envName, babelrc, root, rootMode, configFile and babelrcRoots in the programatic API. To see what this options do head over to the babel documentation

Thanks @jquense.

react-docgen - 4.0.1

Published by danez over 5 years ago

Bug Fixes

  • Support elementType in proptypes correctly (#330)

Thanks to @eps1lon for fixing it.

react-docgen - 4.0.0

Published by danez over 5 years ago

In this version we focused on allowing our internals to be more flexible when it comes to allowing different configurations for @babel/parser. This will make it easier to introduce support for different javascript flavors (like TypeScript 🎉) in the future.

Thanks to @jquense for working on this changes.

BREAKING CHANGES

  • Removed cli arguments --legacy-decorators and --decorators-before-export. (#327)
    As a replacement react-docgen will read your babel config and pickup the correct configuration from there.
  • Removed API options legacyDecorators and decoratorsBeforeExport. (#327)
    This probably will only affect libraries or tools that integrate react-docgen and use the programmatic API. In most cases the automatic pickup of babel configuration files will already be enough to not make this a breaking change. With the new parserOptions option you could still set this configuration, for example:
 react-docgen.parse(code, null, null, {
-  decoratorsBeforeExport: true
+  parserOptions: {
+    plugins: [
+      ["decorators", { decoratorsBeforeExport: true }],
+    ],
+  },
 });

New Features

  • Use local babel config if it exists (#320)
    We now automatically check if a babel configuration already exists in your project and use it as configuration for the @babel/parser we use. This was a necessary step as a lot of recent proposals in babel have configuration options, so we cannot simply activate everything. This change is not breaking unless your babel configuration is broken and does not enable all necessary features (which should throw already in your project).
    If you are using react-docgen in the browser, ensure that fs, net and module are correctly mocked, as babel uses them. (see our website configuration)
  • New configuration option fileName (#320)
    This is a new option which gets forwarded to babel in order to pick the correct configuration file. Library and tool authors are strongly recommended to set this option whenever possible. Not setting it might result in no or the wrong babel configuration being picked up.
  • New configuration option cwd (#320)
    This is a new option which gets forwarded to babel in order to pick the correct configuration file. This option is usually autodetected by babel itself using process.cwd().
  • Support forwardRef for all resolvers (#324)
  • Support custom parser options in programmatic API (#327)
    This allows you to supply your own @babel/parser options through the react-docgen API with the newly added option parserOptions. See our README for more information.
react-docgen - 3.0.0

Published by danez over 5 years ago

Changes from rc.2

  • Add forwardRef as a valid component definition (#311)
  • Resolve flow $Keys to union when typeParameter is an ObjectTypeAnnotation (#290)
  • Attempt to support system-components (#292)
  • Add support for PropTypes.exact
  • resolve Object.values() in PropType.oneOf() (#318)

Big Changes from 2.x

  • Drop support for node 4. Only node 6 and newer are supported
  • Switched the internal parser from babylon@5 to @babel/parser@7. This should not break anything, but will support a lot more newer javascript syntax features as well as newer flow syntaxes.
  • react-docgen now parses only the new decorators proposal syntax and not the old one anymore by default. You can switch back to the legacy decorators proposal with the cli flag --legacy-decorators or the programmatic options { legacyDecorators: true } passed as 4th parameter to ReactDocgen.parse().
  • The types of method params and return (parsed from JSdoc) are now the same as the flow types.
react-docgen - 3.0.0-rc.2

Published by danez almost 6 years ago

New Features

  • Support flow NullLiteralTypeAnnotation node type (#299)
  • Support JSXFragment (#304)
  • Add option to switch between the two decorator modes for babel
  • Allow descriptions for oneOfType values (#301)

Performance

  • Ensure visited types memory is empty after flow type detection is done

Bug Fixes

  • Ignore assignment to non-identifier/literals (#305)
  • Ensure null is never put into visited types memory

Internal

  • Update to babel 7
  • Update to latest recast version
react-docgen - 3.0.0-rc.1

Published by danez almost 6 years ago

Breaking Change

  • The types of method params and return are now the same as the flow types.

New Features

  • Add modifier for getters and setters (#287)

Bug Fixes

  • Output qualified type identifiers correctly
  • Correctly and recursively parse jsdoc types (#286)
react-docgen - 3.0.0-rc.0

Published by danez over 6 years ago

Breaking Change

  • react-docgen now parses only the new decorators proposal syntax and not the old one anymore by default. You can switch back to the legacy decorators proposal with the cli flag --legacy-decorators or the programmatic options { legacyDecorators: true } passed as 4th parameter to ReactDocgen.parse().
  • Drop support for node <6

New Features

  • Parse information about the (old) react context API (#130, #260)
  • Adding @extends React.Component support to mark classes which do not extend from React.Component as valid react components (#269)
  • Support type cast expression when detecting components (#279)

Bug Fixes

  • Fix typo in one error message (Propery -> Property) (#257)
  • Fix handling of exported classes without id (#273)
  • Remove renamed SpreadProperty checks
  • Extract display name correctly even if components are wrapped (#277)
  • Resolve value to a proper node instead of an array, which fixes some recast exceptions (#278)
  • Correctly unwrap utility types when resolving type spreads (#280)
  • Correctly read descriptions of inner types in arrayOf/objectOf (#281)
  • Correctly read descriptions of local spread objects (#282)

Internal

  • Migrate babylon to @babel/parser (#272)
  • Use prettier (#274)
react-docgen - 2.21.0

Published by danez over 6 years ago

New Features

  • Also output information about (old) react context usages (#260, #130)
  • Adding @extends React.Component support to isReactComponentClass (#269)

BugFixes

  • Fix handling of exported classes without id (#273)
  • typo: Propery -> Property (#257)
react-docgen -

Published by fkling over 6 years ago

New

Support for "unwrapping" $Exact<...> and $ReadOnly<...> type annotations. Example:

type Props = $ReadOnly<{
  foo: string,
}>;
react-docgen - v3.0.0-beta11

Published by danez over 6 years ago

BugFixes

  • Handle Logical and Conditional Expressions (#245)
  • Added post-processing step for documentation (#227)
  • Handle array shorthand notation (#251)
  • Fix cycles in flow type detection (#252)
  • Get displayName from variable if nothing else found
react-docgen - v2.20.1

Published by danez over 6 years ago

BugFixes

  • Handle Logical and Conditional Expressions (#245)
  • Added post-processing step for documentation (#227)
  • Handle array shorthand notation (#251)
  • Fix cycles in flow type detection (#252)
  • Get displayName from variable if nothing else found
react-docgen - v3.0.0-beta9

Published by danez almost 7 years ago

(merged changes released in v2.20.0)

New

See v2.20.0.

  • Update babylon to latest beta. This allows a lot new syntax proposal which were added to babylon (see babylon changes)

  • Enable more babylon plugins (#220)

    Enables the following new plugins in babylon:

    • classPrivateProperties
    • classPrivateMethods
    • numericSeparator
    • optionalChaining
    • importMeta
    • bigInt
    • optionalCatchBinding
    • throwExpressions
    • pipelineOperator
    • nullishCoalescingOperator

You can install this version via npm install react-docgen@next.

react-docgen - v2.20.0

Published by danez almost 7 years ago

New

  • Add support for typeof types and React.* types (#224)

    Adds support for all the types described in the react flow docs

  • Resolve flow $Keys<> to union type (#225)

    const CONTENTS = {
      'apple': '🍎',
      'banana': '🍌',
    };
    type Props = {
      fruit: $Keys<typeof CONTENTS>,
    };