ntts
Version:
A CLI tool for refactoring an existing NodeJs application to a fully functional TypeScript application.
62 lines (61 loc) • 3.74 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 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;