index.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _helperPluginUtils = require("@babel/helper-plugin-utils");
  7. var _pluginSyntaxExportDefaultFrom = _interopRequireDefault(require("@babel/plugin-syntax-export-default-from"));
  8. var _core = require("@babel/core");
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  10. var _default = (0, _helperPluginUtils.declare)(api => {
  11. api.assertVersion(7);
  12. return {
  13. name: "proposal-export-default-from",
  14. inherits: _pluginSyntaxExportDefaultFrom.default,
  15. visitor: {
  16. ExportNamedDeclaration(path) {
  17. const {
  18. node,
  19. scope
  20. } = path;
  21. const {
  22. specifiers
  23. } = node;
  24. if (!_core.types.isExportDefaultSpecifier(specifiers[0])) return;
  25. const specifier = specifiers.shift();
  26. const {
  27. exported
  28. } = specifier;
  29. const uid = scope.generateUidIdentifier(exported.name);
  30. const nodes = [_core.types.importDeclaration([_core.types.importDefaultSpecifier(uid)], _core.types.cloneNode(node.source)), _core.types.exportNamedDeclaration(null, [_core.types.exportSpecifier(_core.types.cloneNode(uid), exported)])];
  31. if (specifiers.length >= 1) {
  32. nodes.push(node);
  33. }
  34. const [importDeclaration] = path.replaceWithMultiple(nodes);
  35. path.scope.registerDeclaration(importDeclaration);
  36. }
  37. }
  38. };
  39. });
  40. exports.default = _default;