UNPKG

ntts

Version:

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

53 lines (52 loc) 2.38 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 method_function_handler_1 = __importDefault(require("./method-function-handler/method-function-handler")); var ClassRefactor = /** @class */ (function () { function ClassRefactor() { } var _a; _a = ClassRefactor; ClassRefactor.toTypeScriptClasses = function (sourceFile) { sourceFile.getDescendants().forEach(function (descendant) { if (!descendant.wasForgotten() && (ts_morph_1.Node.isClassExpression(descendant) || ts_morph_1.Node.isClassDeclaration(descendant))) { _a.addMissingProperties(descendant); _a.refactorClass(descendant); } }); }; ClassRefactor.refactorClass = function (_class) { var propertyNames = method_function_handler_1.default.getMethodFunctionNames(_class); propertyNames.forEach(function (propertyName) { var property = method_function_handler_1.default.getMethodFunction(propertyName, _class); if (property === null || property === void 0 ? void 0 : property.getName().startsWith('#')) { property.setScope(ts_morph_1.Scope.Private).rename(property.getName().substring(1)); } }); }; ClassRefactor.getDeclaredMembers = function (_class) { return _class.getMembers().map(function (p) { if (ts_morph_1.Node.isConstructorDeclaration(p)) { return 'constructor'; } return p.getName(); }); }; ClassRefactor.addMissingProperties = function (_class) { var declaredMemberNames = _a.getDeclaredMembers(_class); _class .getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertyAccessExpression) .reduce(function (declared, access) { var name = access.getName(); if (access.getExpression().asKind(ts_morph_1.SyntaxKind.ThisKeyword) && !declared.includes(name)) { _class.insertProperty(0, { name: name }); return declared.concat(name); } return declared; }, declaredMemberNames); }; return ClassRefactor; }()); exports.default = ClassRefactor;