Releases: reactjs/react-docgen
@react-docgen/[email protected]
[email protected]
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.
- Renamed to
-
e956802: Remove match utility.
The utility can be replaced by babel helpers and is not needed anymore. Also
using explicit checks likepath.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 toFindAllDefinitionsResolver
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 thelimit
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()
andexact()
methods. - 1aa0249: Handle
typeof import('...')
andtypeof MyType.property
correctly
in TypeScript - 050313d: Correctly add LICENSE file to published packages
- f6e4fe7: Update dependency strip-indent to v4
@react-docgen/[email protected]
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]
[email protected]
Major Changes
-
96d6e9e: Rename
flowTypeHandler
tocodeTypeHandler
because it handles Flow and TypeScript -
96d6e9e: Simplify
resolveObjectValuesToArray
and remove type handling. None of the code that was handling types was actually used. -
caae6bf: The return values of
resolveObjectValuesToArray
are now in the order they are defined in the source code. -
96d6e9e: Migrate react-docgen to ES modules. Please read this
-
3b28f6e: The CLI was removed from
react-docgen
into its own package@react-docgen/cli
.Check out https://react-docgen.dev/docs/getting-started/cli for the documentation.
-
96d6e9e: The main
parse
API had some breaking changes.-
The arguments were changed from previously 5 to just 2. Checkout the diff to see how to migrate:
-parse(src, resolver, handlers, importer, options) +parse(src, { resolver, handlers, importer, filename, babelOptions: {} })
-
The return type is now always an array, independent of resolver and even if
only one component was found in the file.
-
-
96d6e9e: Renamed some of the main exports for clarity.
Renamed
handlers
tobuiltinHandlers
Renamedresolver
tobuiltinResolvers
Renamedimporters
tobuiltinImporters
-
96d6e9e: Migrated to babel toolchain
This is one of the big changes in this new version of react-docgen. It made the code a lot more robust
because there are now finally working TypeScript types for the ASTs.Another benefit from this change that react-docgen is now a lot faster. 🚀 In some
tests an improvement of nearly 50% was seen in comparison to version 5. -
d4c27d4: Improve performance of file system importer.
The file system importer now also caches resolving of files in addition to parsing files.
If the importer is used in an environment where files do change at runtime (like a watch
command) then the caches will need to be cleared on every file change. -
96d6e9e: Changed the minimum Node.js version to 14.17.0
Minor Changes
-
96d6e9e: Add support for
.cts
and.mts
extension when using typescript -
96d6e9e: Treat functions returning
React.Children.map
as components -
96d6e9e: Improve performance by creating all visitors only once
-
96d6e9e: Support all possible kinds of functions in the
displayNameHandler
-
96d6e9e: Support all literal types in typescript
-
96d6e9e: Support flow qualified type names
-
96d6e9e: Support class and function declarations without identifier
-
96d6e9e: Support resolving of destructurings in
resolveToValue
-
96d6e9e: Improve performance drastically by making changes to AST traversal
Visitors are now pre-exploded and are cached in the module scope instead of creating them on every call.
This change brought the benchmark from 170ops/s to 225ops/sec -
96d6e9e: Add codes to errors to be able to easily detect them
There is a new export
ERROR_CODES
that contains all possible error codes.
The two errors that have codes right now are:MISSING_DEFINITION
: No component found in fileMULTIPLE_DEFINITIONS
: Multiple components found in one files
-
96d6e9e: Support handling
useImperativeHandle
correctly
New Contributors
- @ggascoigne made their first contribution in #634
@react-docgen/[email protected]
Major Changes
-
3b28f6e: Introducing the new CLI package
@react-docgen/cli
which was extracted fromreact-docgen
and is a complete rewrite.
Compared to the old CLI these are some of the major differences:- Does not support input via stdin anymore
- The path argument is now a glob
-x, --extension
was removed in favor of globs-e, --exclude
was removed-i, --ignore
now accepts a glob--handler
added--importer
added--failOnWarning
added
Check out https://react-docgen.dev/docs/getting-started/cli for the documentation.
Patch Changes
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [caae6bf]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [3b28f6e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [96d6e9e]
- Updated dependencies [d4c27d4]
- Updated dependencies [96d6e9e]
v5.4.3
v6.0.0-alpha.3
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)
v5.4.2
5.4.1
6.0.0-alpha.2
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.