ntts
Version:
A CLI tool for refactoring an existing NodeJs application to a fully functional TypeScript application.
50 lines (49 loc) • 2.51 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 export_parser_1 = __importDefault(require("../helpers/export-parser"));
var export_validator_1 = __importDefault(require("../helpers/export-validator"));
var ExportRename = /** @class */ (function () {
function ExportRename() {
}
var _a;
_a = ExportRename;
ExportRename.refactorExportReadAccess = function (exportedVariables, sourceFile) {
sourceFile.getDescendantsOfKind(ts_morph_1.SyntaxKind.Identifier).forEach(function (identifier) {
if (!identifier.wasForgotten() && identifier.getText() === 'exports') {
_a.renameExportAccess(identifier, exportedVariables);
}
});
};
ExportRename.renameExportAccess = function (identifier, exportedVariables) {
var access = export_parser_1.default.flatten(_a.getLastPropertyAccess(identifier));
var namedExport = export_validator_1.default.isNamedExport(access);
if (!!export_validator_1.default.isDefaultExport(access) || !!export_validator_1.default.isElementAccessExport(access)) {
var propertyAccess = _a.getDefaultExport(identifier);
var _default = export_parser_1.default.exportVariableExists('', exportedVariables, true);
_default && propertyAccess.replaceWithText(_default.name);
}
else if (namedExport) {
var filtered = export_parser_1.default.filterExportIdentifiers(namedExport);
var exportName = filtered[0].getText();
var exported = export_parser_1.default.exportVariableExists(exportName, exportedVariables, false);
exported && filtered[0].getParent().replaceWithText(exported.name);
}
};
ExportRename.getDefaultExport = function (identifier) {
var parent = identifier.getParent();
return ts_morph_1.Node.isPropertyAccessExpression(parent) ? parent : identifier;
};
ExportRename.getLastPropertyAccess = function (identifier) {
var parent = identifier.getParent();
if (ts_morph_1.Node.isPropertyAccessExpression(parent) || ts_morph_1.Node.isElementAccessExpression(parent)) {
return _a.getLastPropertyAccess(parent);
}
return identifier;
};
return ExportRename;
}());
exports.default = ExportRename;