UNPKG

ntts

Version:

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

62 lines (61 loc) 3.74 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 import_validator_1 = __importDefault(require("./helpers/import-validator")); var expression_imports_refactor_1 = __importDefault(require("./expression-import-refactor/expression-imports-refactor")); var call_imports_refactor_1 = __importDefault(require("./call-import-refactor/call-imports-refactor")); var declaration_import_refactor_1 = __importDefault(require("./declaration-import-refactor/declaration-import-refactor")); var used_names_1 = __importDefault(require("../helpers/used-names/used-names")); var import_clause_refactor_1 = __importDefault(require("./import-clause-refactor/import-clause-refactor")); var tsconfig_handler_1 = __importDefault(require("../../tsconfig-handler/tsconfig-handler")); var imports_reformat_1 = __importDefault(require("./imports-reformat/imports-reformat")); var module_declarator_1 = __importDefault(require("../../module-declarator/module-declarator")); var ImportsRefactor = /** @class */ (function () { function ImportsRefactor() { } var _a; _a = ImportsRefactor; ImportsRefactor.refactorImportClauses = function (sourceFile) { var importDeclarations = used_names_1.default.getDeclaredImportNames(sourceFile); sourceFile.getImportDeclarations().reduce(function (usedNames, importStatement) { return import_clause_refactor_1.default.refactorImportClause(importStatement, usedNames, sourceFile); }, importDeclarations); }; ImportsRefactor.reformatImports = function (sourceFile, moduleSpecifierResult) { return sourceFile .getImportDeclarations() .reduce(function (moduleSpecifierRefactor, importStatement) { return imports_reformat_1.default.refactorModuleSpecifier(importStatement, moduleSpecifierRefactor, sourceFile); }, moduleSpecifierResult); }; ImportsRefactor.resolveModuleSpecifierResults = function (moduleSpecifierResult) { module_declarator_1.default.handleUntypedPackages(moduleSpecifierResult.fileEndings, true); if (moduleSpecifierResult.allowJs || moduleSpecifierResult.allowJson) { tsconfig_handler_1.default.addCompilerOptions(moduleSpecifierResult); } }; ImportsRefactor.requiresToImports = function (sourceFile) { var usedNames = used_names_1.default.getDeclaredNames(sourceFile); sourceFile .getDescendantsOfKind(ts_morph_1.SyntaxKind.CallExpression) .forEach(function (callExpression) { if (!callExpression.wasForgotten() && import_validator_1.default.validRequire(callExpression)) { _a.refactorCallExpression(callExpression, usedNames, sourceFile); } }); }; ImportsRefactor.refactorCallExpression = function (callExpression, usedNames, sourceFile) { var importId = import_validator_1.default.callExpressionFirstArgument(callExpression); var parent = callExpression.getParent(); if (ts_morph_1.Node.isExpressionStatement(parent)) { return expression_imports_refactor_1.default.addExpressionStatementImport(parent, importId, sourceFile); } if (ts_morph_1.Node.isVariableDeclaration(parent)) { return declaration_import_refactor_1.default.addVariableDeclarationImport(parent, importId, usedNames, sourceFile); } return call_imports_refactor_1.default.addCallExpressionImport(callExpression, importId, usedNames, sourceFile); }; return ImportsRefactor; }()); exports.default = ImportsRefactor;