A CLI and library to extract information from React component files for documentation generation purposes.
MIT License
Bot releases are visible (Hide)
Published by danez-bot over 1 year ago
5a226ac
]:
Published by danez-bot over 1 year ago
Published by danez-bot over 1 year ago
Published by danez-bot over 1 year ago
#786
0a2481d
Thanks @danez! - Renamed the method toObject
to
build
in the DocumentationBuilder.
This method might be used by integrations.
#786
0a2481d
Thanks @danez! - Export the type for the
DocumentationBuilder.
#786
0a2481d
Thanks @danez! - The types NodePath
and
babelTypes
are now exported.
These types are useful when building integrations in TypeScript.
babelTypes
includes all types from @babel/types
.
Published by danez-bot over 1 year ago
propDocBlockHandler
to propDocblockHandler
for consistencydisplayName
and description
to Documentation typePublished by danez-bot over 1 year ago
217a005: Add support for the FindAnnotatedDefinitionsResolver
.
Can be used with
react-docgen --resolver find-all-annotated-components
Published by danez over 1 year ago
d7a39af: Refactored resolveComponentDefinition
utility.
findComponentDefinition
isComponentDefinition
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 })
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 {}
shape()
and exact()
typeof import('...')
and typeof MyType.property
correctlyPublished by danez over 1 year ago
--handlers
option to --handler
. This unifies all options80e4c74: --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.
react-docgen --help
Published by danez-bot almost 2 years ago
3b28f6e: Introducing the new CLI package @react-docgen/cli
which was extracted from react-docgen
and is a complete rewrite.
Compared to the old CLI these are some of the major differences:
-x, --extension
was removed in favor of globs-e, --exclude
was removed-i, --ignore
now accepts a glob--handler
added--importer
added--failOnWarning
addedCheck out https://react-docgen.dev/docs/getting-started/cli for the documentation.
Published by danez-bot almost 2 years ago
96d6e9e: Rename flowTypeHandler
to codeTypeHandler
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
to builtinHandlers
Renamed resolver
to builtinResolvers
Renamed importers
to builtinImporters
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
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 files96d6e9e: Support handling useImperativeHandle
correctly
Published by danez over 2 years ago
Object.value()
calls (4fc5b21)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
dist
. (5f3da8c)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
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.resolveObjectValuesToArray
and resolveObjectKeysToArray
return now string[]
instead of a NodePath
Published by danez over 3 years ago
Install with
yarn add react-docgen@next
Includes all commits that are also in 5.4.0.
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.
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.
componentMethodsHandler
ignores private properties (#440)@babel/generate
to serialise AST nodes w/o loc in printValue
(#482)Published by danez almost 4 years ago
Published by danez almost 4 years ago