babel-plugin-mocktail
Version:
Mocktail.mock() all your exports
50 lines (40 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _babelCore = require("babel-core");
var _helpers = require("./helpers");
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var ExportDefaultDeclarationVisitor = function ExportDefaultDeclarationVisitor() {
var defaultState = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
_classCallCheck(this, ExportDefaultDeclarationVisitor);
return function (path) {
var state = arguments.length <= 1 || arguments[1] === undefined ? defaultState : arguments[1];
var enqueue = state.enqueue;
var scope = state.scope;
var moduleName = state.moduleName;
var mock = state.mock;
var declaration = path.node.declaration;
if (declaration) {
switch (true) {
/** Declaration */
case _babelCore.types.isDeclaration(declaration) || _babelCore.types.isExpression(declaration):
{
var name = declaration.name || moduleName;
if (declaration.id && declaration.id.name) {
name = declaration.id.name;
} else if (_babelCore.types.isFunctionDeclaration(declaration) || _babelCore.types.isClassDeclaration(declaration)) {
declaration.id = scope.generateUidIdentifier(name);
} else {
enqueue(path, (0, _helpers.buildMockExportDefaultDeclaration)(mock, name, declaration));
break;
}
enqueue(path, declaration);
enqueue(path, (0, _helpers.buildMockExportDefaultDeclaration)(mock, name, declaration.id));
break;
}
}
}
};
};
exports.default = ExportDefaultDeclarationVisitor;