UNPKG

ntts

Version:

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

66 lines (65 loc) 3.33 kB
"use strict"; 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;