Files
30-seconds-of-code/node_modules/babel-plugin-add-module-exports/lib/index.js
2019-08-20 15:52:05 +02:00

41 lines
1.3 KiB
JavaScript

'use strict';
module.exports = function (_ref) {
var types = _ref.types;
return {
visitor: {
Program: {
exit: function exit(path) {
if (path.BABEL_PLUGIN_ADD_MODULE_EXPORTS) {
return;
}
var hasExportDefault = false;
var hasExportNamed = false;
path.get('body').forEach(function (path) {
if (path.isExportDefaultDeclaration()) {
hasExportDefault = true;
return;
}
if (path.isExportNamedDeclaration()) {
if (path.node.specifiers.length === 1 && path.node.specifiers[0].exported.name === 'default') {
hasExportDefault = true;
} else {
hasExportNamed = true;
}
return;
}
});
if (hasExportDefault && !hasExportNamed) {
path.pushContainer('body', [types.expressionStatement(types.assignmentExpression('=', types.memberExpression(types.identifier('module'), types.identifier('exports')), types.memberExpression(types.identifier('exports'), types.stringLiteral('default'), true)))]);
}
path.BABEL_PLUGIN_ADD_MODULE_EXPORTS = true;
}
}
}
};
};
//# sourceMappingURL=index.js.map