UNPKG

ntts

Version:

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

50 lines (49 loc) 2.51 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 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;