%PDF- %PDF-
Direktori : /home/opti/workflow/node_modules/babel-traverse/lib/scope/lib/ |
Current File : /home/opti/workflow/node_modules/babel-traverse/lib/scope/lib/renamer.js |
"use strict"; exports.__esModule = true; var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _binding = require("../binding"); var _binding2 = _interopRequireDefault(_binding); var _babelTypes = require("babel-types"); var t = _interopRequireWildcard(_babelTypes); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var renameVisitor = { ReferencedIdentifier: function ReferencedIdentifier(_ref, state) { var node = _ref.node; if (node.name === state.oldName) { node.name = state.newName; } }, Scope: function Scope(path, state) { if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) { path.skip(); } }, "AssignmentExpression|Declaration": function AssignmentExpressionDeclaration(path, state) { var ids = path.getOuterBindingIdentifiers(); for (var name in ids) { if (name === state.oldName) ids[name].name = state.newName; } } }; var Renamer = function () { function Renamer(binding, oldName, newName) { (0, _classCallCheck3.default)(this, Renamer); this.newName = newName; this.oldName = oldName; this.binding = binding; } Renamer.prototype.maybeConvertFromExportDeclaration = function maybeConvertFromExportDeclaration(parentDeclar) { var exportDeclar = parentDeclar.parentPath.isExportDeclaration() && parentDeclar.parentPath; if (!exportDeclar) return; var isDefault = exportDeclar.isExportDefaultDeclaration(); if (isDefault && (parentDeclar.isFunctionDeclaration() || parentDeclar.isClassDeclaration()) && !parentDeclar.node.id) { parentDeclar.node.id = parentDeclar.scope.generateUidIdentifier("default"); } var bindingIdentifiers = parentDeclar.getOuterBindingIdentifiers(); var specifiers = []; for (var name in bindingIdentifiers) { var localName = name === this.oldName ? this.newName : name; var exportedName = isDefault ? "default" : name; specifiers.push(t.exportSpecifier(t.identifier(localName), t.identifier(exportedName))); } if (specifiers.length) { var aliasDeclar = t.exportNamedDeclaration(null, specifiers); if (parentDeclar.isFunctionDeclaration()) { aliasDeclar._blockHoist = 3; } exportDeclar.insertAfter(aliasDeclar); exportDeclar.replaceWith(parentDeclar.node); } }; Renamer.prototype.rename = function rename(block) { var binding = this.binding, oldName = this.oldName, newName = this.newName; var scope = binding.scope, path = binding.path; var parentDeclar = path.find(function (path) { return path.isDeclaration() || path.isFunctionExpression(); }); if (parentDeclar) { this.maybeConvertFromExportDeclaration(parentDeclar); } scope.traverse(block || scope.block, renameVisitor, this); if (!block) { scope.removeOwnBinding(oldName); scope.bindings[newName] = binding; this.binding.identifier.name = newName; } if (binding.type === "hoisted") {} }; return Renamer; }(); exports.default = Renamer; module.exports = exports["default"];