resolveExportDeclaration.js 1.0 KB

12345678910111213141516171819202122232425262728
  1. import resolveToValue from './resolveToValue.js';
  2. export default function resolveExportDeclaration(path) {
  3. const definitions = [];
  4. if (path.isExportDefaultDeclaration()) {
  5. definitions.push(path.get('declaration'));
  6. }
  7. else if (path.isExportNamedDeclaration()) {
  8. if (path.has('declaration')) {
  9. const declaration = path.get('declaration');
  10. if (declaration.isVariableDeclaration()) {
  11. declaration
  12. .get('declarations')
  13. .forEach((declarator) => definitions.push(declarator));
  14. }
  15. else if (declaration.isDeclaration()) {
  16. definitions.push(declaration);
  17. }
  18. }
  19. else if (path.has('specifiers')) {
  20. path.get('specifiers').forEach((specifier) => {
  21. if (specifier.isExportSpecifier()) {
  22. definitions.push(specifier.get('local'));
  23. }
  24. });
  25. }
  26. }
  27. return definitions.map((definition) => resolveToValue(definition));
  28. }