UNPKG

babel-plugin-mocktail

Version:
50 lines (40 loc) 1.8 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 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;