UNPKG

babel-plugin-mocktail

Version:
76 lines (66 loc) 2.91 kB
"use strict"; 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;