babel-plugin-mocktail
Version:
Mocktail.mock() all your exports
76 lines (66 loc) • 2.91 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 ExportNamedDeclarationVisitor = function ExportNamedDeclarationVisitor() {
var defaultState = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
_classCallCheck(this, ExportNamedDeclarationVisitor);
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 _path$node = path.node;
var declaration = _path$node.declaration;
var specifiers = _path$node.specifiers;
if (declaration) {
switch (true) {
/** Declaration */
case _babelCore.types.isDeclaration(declaration):
{
var declarations = [].concat(declaration || [], declaration.declarations || []);
declarations.forEach(function (declaration) {
switch (true) {
case _babelCore.types.isVariableDeclaration(declaration):
{
enqueue(path, declaration);
break;
}
case _babelCore.types.isVariableDeclarator(declaration):
{
var name = declaration.id.name;
var _name = scope.generateUidIdentifier(name);
enqueue(path, (0, _helpers.buildMockExportVar)(mock, name, _name));
enqueue(path, (0, _helpers.buildExportNamedDeclaration)(_name, name));
break;
}
default:
{
var name = declaration.name || declaration.id && declaration.id.name || moduleName;
var _name = scope.generateUidIdentifier(name).name;
enqueue(path, declaration);
enqueue(path, (0, _helpers.buildMockExportVar)(mock, name, _name));
enqueue(path, (0, _helpers.buildExportNamedDeclaration)(_name, name));
}
}
});
break;
}
}
} else if (specifiers) {
/** Specifiers */
specifiers.forEach(function (specifier) {
var local = specifier.local.name;
var exported = specifier.exported.name;
var _name = scope.generateUidIdentifier(local).name;
enqueue(path, (0, _helpers.buildMockExportVar)(mock, exported, _name, local));
enqueue(path, (0, _helpers.buildExportNamedDeclaration)(_name, exported));
});
}
};
};
exports.default = ExportNamedDeclarationVisitor;