UNPKG

babel-plugin-transform-private-underscore

Version:

Babel plugin to make class properties starting with an underscore really private

46 lines (37 loc) 2.14 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSuperConstructionCall = exports.getExternalizedPrivatePropertiesDeclarationSiblingPath = exports.getConstructorPath = exports.getPrivateMethodsNames = exports.getClassName = undefined; var _babelTypes = require('babel-types'); var getClassName = function getClassName(classBodyPath) { var parent = classBodyPath.parent; return ((0, _babelTypes.isClassDeclaration)(parent) || (0, _babelTypes.isClassExpression)(parent)) && parent.id ? parent.id.name : 'Anonymous'; }; var getPrivateMethodsNames = function getPrivateMethodsNames(classBodyPath) { return classBodyPath.node.body.filter(_babelTypes.isClassMethod).map(function (node) { return node.key.name; }).filter(function (name) { return name.startsWith('_'); }); }; var getConstructorPath = function getConstructorPath(classBodyPath) { return classBodyPath.get('body').find(function (path) { return path.isClassMethod() && path.node.kind === 'constructor'; }); }; var getFirstPathWhereVariableCanBeDeclaredInParentHierarchy = function getFirstPathWhereVariableCanBeDeclaredInParentHierarchy(path) { return path.node.body ? path : getFirstPathWhereVariableCanBeDeclaredInParentHierarchy(path.parentPath); }; var getExternalizedPrivatePropertiesDeclarationSiblingPath = function getExternalizedPrivatePropertiesDeclarationSiblingPath(classBodyPath) { var position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; return getFirstPathWhereVariableCanBeDeclaredInParentHierarchy(classBodyPath.parentPath.parentPath).get('body.' + position); }; var isSuperConstructionCall = function isSuperConstructionCall(path) { return path.isExpressionStatement() && (0, _babelTypes.isSuper)(path.node.expression.callee); }; exports.getClassName = getClassName; exports.getPrivateMethodsNames = getPrivateMethodsNames; exports.getConstructorPath = getConstructorPath; exports.getExternalizedPrivatePropertiesDeclarationSiblingPath = getExternalizedPrivatePropertiesDeclarationSiblingPath; exports.isSuperConstructionCall = isSuperConstructionCall;