ntts
Version:
A CLI tool for refactoring an existing NodeJs application to a fully functional TypeScript application.
66 lines (65 loc) • 3.33 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var ts_morph_1 = require("ts-morph");
var write_access_checker_1 = __importDefault(require("../../helpers/write-access-checker/write-access-checker"));
var variable_validator_1 = __importDefault(require("../../helpers/variable-validator/variable-validator"));
var expression_handler_1 = require("../../helpers/expression-handler/expression-handler");
var ImportValidator = /** @class */ (function () {
function ImportValidator() {
}
var _a;
_a = ImportValidator;
ImportValidator.callExpressionFirstArgument = function (callExpression) {
return callExpression.getArguments()[0].getLiteralValue();
};
ImportValidator.isValidImport = function (declaration) {
var _b;
var nameNode = declaration.getNameNode();
var isConst = ((_b = declaration.getVariableStatement()) === null || _b === void 0 ? void 0 : _b.getDeclarationKind()) === ts_morph_1.VariableDeclarationKind.Const
|| !write_access_checker_1.default.hasValueChanged(declaration);
if (ts_morph_1.Node.isIdentifier(nameNode) && isConst) {
return nameNode;
}
if (ts_morph_1.Node.isObjectBindingPattern(nameNode)
&& _a.validDestructingFormat(nameNode)
&& !write_access_checker_1.default.hasValueChanged(declaration)) {
return nameNode;
}
return undefined;
};
ImportValidator.validPropertyNameNode = function (element) {
var nameNode = element.getPropertyNameNode();
if (!nameNode || ts_morph_1.Node.isIdentifier(nameNode)) {
return true;
}
if (ts_morph_1.Node.isStringLiteral(nameNode)) {
return variable_validator_1.default.validVariableName(nameNode.getLiteralValue());
}
if (ts_morph_1.Node.isComputedPropertyName(nameNode)) {
var literal = nameNode.getFirstChildByKind(ts_morph_1.SyntaxKind.StringLiteral)
|| nameNode.getFirstChildByKind(ts_morph_1.SyntaxKind.NoSubstitutionTemplateLiteral);
return !!(literal === null || literal === void 0 ? void 0 : literal.getLiteralValue()) && variable_validator_1.default.validVariableName(literal.getLiteralValue());
}
return false;
};
ImportValidator.validDestructingFormat = function (nameNode) { return nameNode
.getElements()
.reduce(function (valid, element) { return valid
&& !element.getDotDotDotToken()
&& !!element.getNameNode().asKind(ts_morph_1.SyntaxKind.Identifier)
&& _a.validPropertyNameNode(element); }, true); };
ImportValidator.validRequire = function (initializer) {
var argumentList = initializer.getArguments();
var innerExpression = (0, expression_handler_1.getInnerExpression)(initializer.getExpression());
return ts_morph_1.Node.isIdentifier(innerExpression)
&& innerExpression.getText() === 'require'
&& argumentList
&& argumentList.length > 0
&& ts_morph_1.Node.isStringLiteral(argumentList[0]);
};
return ImportValidator;
}());
exports.default = ImportValidator;