UNPKG

@react-docgen/cli

Version:

A CLI to extract information from React components for documentation generation.

47 lines (46 loc) 2.03 kB
import { builtinResolvers } from 'react-docgen'; import loadReactDocgenPlugin from './loadReactDocgenPlugin.js'; const { ChainResolver } = builtinResolvers; export var ResolverConfigs; (function (ResolverConfigs) { ResolverConfigs["FindAll"] = "find-all-components"; ResolverConfigs["FindAllExported"] = "find-all-exported-components"; ResolverConfigs["FindAllAnnotatedComponents"] = "find-all-annotated-components"; ResolverConfigs["FindExported"] = "find-exported-component"; })(ResolverConfigs || (ResolverConfigs = {})); async function loadResolver(input) { if (input === ResolverConfigs.FindAll) { return new builtinResolvers.FindAllDefinitionsResolver(); } else if (input === ResolverConfigs.FindAllExported) { return new builtinResolvers.FindExportedDefinitionsResolver(); } else if (input === ResolverConfigs.FindAllAnnotatedComponents) { return new builtinResolvers.FindAnnotatedDefinitionsResolver(); } else if (input === ResolverConfigs.FindExported) { return new builtinResolvers.FindExportedDefinitionsResolver({ limit: 1, }); } const loadedResolver = await loadReactDocgenPlugin(input, 'resolver'); // Check if it is a class constructor // If it is we do not know how to construct the resolver so error instead if (typeof loadedResolver === 'function' && loadedResolver.toString().startsWith('class ')) { throw new Error(`The provided resolver '${input}' is not a function or a class instance but instead a class.` + ' To solve this please make sure to provide a path to a file that returns a class instance.'); } return loadedResolver; } export default async function loadResolvers(input) { if (!input || input.length === 0) { return; } if (input.length > 1) { return new ChainResolver(await Promise.all(input.map(loadResolver)), { chainingLogic: ChainResolver.Logic.ALL, }); } return loadResolver(input[0]); }