UNPKG

ntts

Version:

A CLI tool for refactoring an existing NodeJs application to a fully functional TypeScript application.

57 lines (56 loc) 2.96 kB
"use strict"; 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;