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