ntts
Version:
A CLI tool for refactoring an existing NodeJs application to a fully functional TypeScript application.
57 lines (56 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isWriteAccess = exports.isCallExpressionTarget = exports.isAccessExpressionTarget = exports.getExpressionParent = exports.getInnerExpression = void 0;
var ts_morph_1 = require("ts-morph");
var combined_types_1 = require("../combined-types/combined-types");
var getInnerExpression = function (node) {
if (ts_morph_1.Node.isParenthesizedExpression(node)) {
(0, exports.getInnerExpression)(node.getExpression());
}
return node;
};
exports.getInnerExpression = getInnerExpression;
var getExpressionParent = function (node) {
var parent = node === null || node === void 0 ? void 0 : node.getParent();
if (ts_morph_1.Node.isPropertyAccessExpression(parent)
|| ts_morph_1.Node.isElementAccessExpression(parent)
|| ts_morph_1.Node.isParenthesizedExpression(parent)) {
return (0, exports.getExpressionParent)(parent);
}
return (0, exports.getInnerExpression)(node);
};
exports.getExpressionParent = getExpressionParent;
var isAccessExpressionTarget = function (expression, target) {
var _a;
if (ts_morph_1.Node.isPropertyAccessExpression(expression)) {
return expression.getNameNode().getPos() === target.getPos();
}
if (ts_morph_1.Node.isElementAccessExpression(expression)) {
return ((_a = expression.getArgumentExpression()) === null || _a === void 0 ? void 0 : _a.getPos()) === target.getPos();
}
return expression.getPos() === target.getPos();
};
exports.isAccessExpressionTarget = isAccessExpressionTarget;
var isCallExpressionTarget = function (expression, target) {
var _a;
var leftExpression = expression.getExpression();
if (ts_morph_1.Node.isPropertyAccessExpression(leftExpression)) {
return leftExpression.getNameNode().getPos() === target.getPos();
}
if (ts_morph_1.Node.isElementAccessExpression(leftExpression)) {
return ((_a = leftExpression.getArgumentExpression()) === null || _a === void 0 ? void 0 : _a.getPos()) === target.getPos();
}
return leftExpression.getPos() === target.getPos();
};
exports.isCallExpressionTarget = isCallExpressionTarget;
var isWriteAccess = function (node) {
var innerExpression = (0, exports.getExpressionParent)(node);
if ((0, combined_types_1.isAccessExpression)(innerExpression) && (0, exports.isAccessExpressionTarget)(innerExpression, node)) {
var binary = node.getFirstAncestorByKind(ts_morph_1.SyntaxKind.BinaryExpression);
var left = binary === null || binary === void 0 ? void 0 : binary.getLeft();
var inner = (0, exports.getInnerExpression)(left);
return !!(binary === null || binary === void 0 ? void 0 : binary.getOperatorToken().asKind(ts_morph_1.SyntaxKind.EqualsToken)) && innerExpression.getPos() === (inner === null || inner === void 0 ? void 0 : inner.getPos());
}
return false;
};
exports.isWriteAccess = isWriteAccess;