Skip to content

Releases: reactjs/react-docgen

4.0.0

15 Feb 08:05
Compare
Choose a tag to compare

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.

3.0.0

28 Jan 20:54
Compare
Choose a tag to compare

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.

3.0.0-rc.2

03 Nov 00:48
Compare
Choose a tag to compare
3.0.0-rc.2 Pre-release
Pre-release

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

3.0.0-rc.1

03 Nov 00:44
Compare
Choose a tag to compare
3.0.0-rc.1 Pre-release
Pre-release

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)

3.0.0-rc.0

14 Jul 18:19
Compare
Choose a tag to compare
3.0.0-rc.0 Pre-release
Pre-release

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)

2.21.0

26 Jun 14:28
Compare
Choose a tag to compare

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)

v3.0.0-beta12

12 Apr 04:47
Compare
Choose a tag to compare
v3.0.0-beta12 Pre-release
Pre-release

New

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

type Props = $ReadOnly<{
  foo: string,
}>;

v3.0.0-beta11

17 Feb 23:12
Compare
Choose a tag to compare
v3.0.0-beta11 Pre-release
Pre-release

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

v2.20.1

17 Feb 23:12
Compare
Choose a tag to compare

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

v3.0.0-beta9

09 Nov 21:55
Compare
Choose a tag to compare
v3.0.0-beta9 Pre-release
Pre-release

(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.