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
JavaScript
;
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;