config.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { childContextTypeHandler, codeTypeHandler, componentDocblockHandler, componentMethodsHandler, componentMethodsJsDocHandler, contextTypeHandler, defaultPropsHandler, displayNameHandler, propDocblockHandler, propTypeCompositionHandler, propTypeHandler, } from './handlers/index.js';
  2. import { fsImporter } from './importer/index.js';
  3. import { ChainResolver, FindAnnotatedDefinitionsResolver, FindExportedDefinitionsResolver, } from './resolver/index.js';
  4. const defaultResolvers = [
  5. new FindExportedDefinitionsResolver({
  6. limit: 1,
  7. }),
  8. new FindAnnotatedDefinitionsResolver(),
  9. ];
  10. const defaultResolver = new ChainResolver(defaultResolvers, {
  11. chainingLogic: ChainResolver.Logic.ALL,
  12. });
  13. const defaultImporter = fsImporter;
  14. export const defaultHandlers = [
  15. propTypeHandler,
  16. contextTypeHandler,
  17. childContextTypeHandler,
  18. propTypeCompositionHandler,
  19. propDocblockHandler,
  20. codeTypeHandler,
  21. defaultPropsHandler,
  22. componentDocblockHandler,
  23. displayNameHandler,
  24. componentMethodsHandler,
  25. componentMethodsJsDocHandler,
  26. ];
  27. export function createConfig(inputConfig) {
  28. const { babelOptions, filename, handlers, importer, resolver } = inputConfig;
  29. const config = {
  30. babelOptions: { ...babelOptions },
  31. handlers: handlers ?? defaultHandlers,
  32. importer: importer ?? defaultImporter,
  33. resolver: resolver ?? defaultResolver,
  34. };
  35. if (filename) {
  36. config.babelOptions.filename = filename;
  37. }
  38. return config;
  39. }