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 hidden (Show)

react-docgen - [email protected]

Published by danez over 1 year ago

Major Changes

  • d7a39af: Refactored resolveComponentDefinition utility.

    • Renamed to findComponentDefinition
    • Removed named export isComponentDefinition
    • The utility now does a lot more than previously, check out the commit to see
      the changes in detail.
  • e956802: Remove match utility.

    The utility can be replaced by babel helpers and is not needed anymore. Also
    using explicit checks like path.isMemberExpression() is better for type
    safety and catching potential bugs.

  • 5215bab: Removed support for the @extends React.Component annotation on
    react class components.

    Instead you can use the new @component annotation.

  • 80e4c74: Renamed and migrated built-in resolvers to classes.

    • findAllComponentDefinitions was renamed to FindAllDefinitionsResolver
      and is now a class.

      -const resolver = builtinResolvers.findAllComponentDefinitions
      +const resolver = new builtinResolvers.FindAllDefinitionsResolver()
      
    • findAllExportedComponentDefinitions was renamed to
      FindExportedDefinitionsResolver and is now a class.

      -const resolver = builtinResolvers.findAllExportedComponentDefinitions
      +const resolver = new builtinResolvers.FindExportedDefinitionsResolver()
      
    • findExportedComponentDefinition was removed. Use
      FindExportedDefinitionsResolver with the limit option instead.

      This is still the default resolver.

      -const resolver = builtinResolvers.findExportedComponentDefinition
      +const resolver = new builtinResolvers.FindExportedDefinitionsResolver({ limit: 1 })
      

Minor Changes

  • 80e4c74: Add the new ChainResolver which allows multiple resolvers to be
    chained.

    import { builtinResolvers } from 'react-docgen';
    
    const { ChainResolver } = builtinResolvers;
    const resolver = new ChainResolver([resolver1, resolver2], {
      chainingLogic: ChainResolver.Logic.ALL, // or ChainResolver.Logic.FIRST_FOUND,
    });
    
  • 80e4c74: Allow resolvers to be classes in addition to functions.

    import type { ResolverClass, ResolverFunction } from 'react-docgen';
    
    // This was the only option until now
    const functionResolver: ResolverFunction = (file: FileState) => {
      //needs to return array of found components
    };
    
    // This is the new class resolver
    class MyResolver implements ResolverClass {
      resolve(file: FileState) {
        //needs to return array of found components
      }
    }
    
    const classResolver = new MyResolver();
    
  • 5215bab: Added a new resolver that finds annotated components. This resolver
    is also enabled by default.

    To use this feature simply annotated a component with @component.

    // @component
    class MyComponent {}
    

Patch Changes

  • 8fe3dbf: Fix crash when using TypeScript mapped types
  • ea25b16: Handle cyclic references in PropTypes shape() and exact()
    methods.
  • 1aa0249: Handle typeof import('...') and typeof MyType.property correctly
    in TypeScript
  • 050313d: Correctly add LICENSE file to published packages
  • f6e4fe7: Update dependency strip-indent to v4
react-docgen - @react-docgen/[email protected]

Published by danez over 1 year ago

Major Changes

  • 80e4c74: Renamed --handlers option to --handler. This unifies all options
    to be singular.

Minor Changes

  • 80e4c74: --resolver option can now be used multiple times.

    If used multiple times the resolvers will be chained in the defined order and
    all components from all resolvers will be used.

Patch Changes

  • ebd9130: Display the correct help info when running react-docgen --help
  • 050313d: Correctly add LICENSE file to published packages
  • 5b281f4: update dependency commander to v10
  • Updated dependencies [8fe3dbf]
  • Updated dependencies [d7a39af]
  • Updated dependencies [80e4c74]
  • Updated dependencies [e956802]
  • Updated dependencies [80e4c74]
  • Updated dependencies [ea25b16]
  • Updated dependencies [1aa0249]
  • Updated dependencies [050313d]
  • Updated dependencies [5215bab]
  • Updated dependencies [f6e4fe7]
  • Updated dependencies [5215bab]
  • Updated dependencies [80e4c74]
react-docgen - v5.4.3

Published by danez over 2 years ago

5.4.3 (2022-07-02)

Bug Fixes

  • Add support for TSAsExpressions when trying to stringify expressions (#634) (8b34e26)
  • Fix for expressionTo with Spread and Methods (0c3c38f)
react-docgen - v5.4.2

Published by danez over 2 years ago

5.4.2 (2022-06-13)

Bug Fixes

  • Fix wrong detection of forwardRef in combination with memo (#592) (522e8f5)
react-docgen - v6.0.0-alpha.3

Published by danez over 2 years ago

6.0.0-alpha.3 (2022-06-13)

Bug Fixes

  • Correctly detect index access types in typescript (#400) (85ea6a5)
  • Correctly handle ObjectTypeSpreadProperty in object type annotations (#593) (395f338)
  • Fix typescript types for parsing (34c55ac)
  • Fix wrong detection of forwardRef in combination with memo (#592) (ea9cbeb)
  • Handle ObjectTypeSpreadProperties which are not resolvable (4b8b721)
  • Ignore methods in Object.value() calls (4fc5b21)
react-docgen - 5.4.1

Published by danez over 2 years ago

Bug Fixes

  • Correctly detect index access types in typescript (#400)
  • Ignore methods in Object.value() calls (#581)
  • Correctly handle ObjectTypeSpreadProperty in object type annotations (#593)
react-docgen - 6.0.0-alpha.2

Published by danez over 2 years ago

This is a pre-release that is under heavy development. Please report any issues you might encounter here: #579

Bug Fixes

  • Change folder name inside the npm package back to dist. (5f3da8c)
    There was no real reason to change this and happened during the TypeScript migration.
react-docgen - v6.0.0-alpha.1

Published by danez over 2 years ago

This is a pre-release that is under heavy development. Please report any issues you might encounter here: #576

Bug Fixes

  • Fix for expressionTo with Spread and Methods (5f3da8c)
  • Remove obsolete id check (66961d8)
  • Remove usage of ast-type builders (17c8a9c)

Features

  • Migrate to TypeScript (7b35e6f)
  • Remove building out of scope AST Nodes from resolveToValue (5bcf56c)

BREAKING CHANGES

  • resolveToValue will not create a MemberExpression for targets ending in destructuring. It will now simply resolve to the Identifier inside the destructuring. Use new helper isDestructuringAssignment to further check this identifier.
  • The helpers resolveObjectValuesToArray and resolveObjectKeysToArray return now string[] instead of a NodePath
react-docgen - 6.0.0-alpha.0

Published by danez over 3 years ago

Install with yarn add react-docgen@next

Includes all commits that are also in 5.4.0.

  • Allow resolving of imported types/proptypes

This version does not yet really have any breaking changes, so for updating from 5.4.0 or 5.4.0-alpha.0 nothing needs to be done. The import-resolving feature is such a big change that it will be released in the next major version, so this is the only change for now in this alpha version. Also to come in 6.0 is a complete rewrite in TypeScript, the removal of the ast-types dependency and some more major changes. See #502.

react-docgen - 5.4.0

Published by danez over 3 years ago

This does not include #464. Resolving of imports will be added in 6.0. There is a new 6.0.0-alpha.0 version which includes resolving of imports.

Bug Fixes

  • Ensure componentMethodsHandler ignores private properties (#440)

Features

  • use @babel/generate to serialise AST nodes w/o loc in printValue (#482)
react-docgen - 5.4.0-alpha.0

Published by danez almost 4 years ago

  • Allow resolving of imported types/proptypes
react-docgen - 5.3.1

Published by danez almost 4 years ago

  • Update ast-types to latest version
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.