"use strict";
var RenameInfo_1 = require("./RenameInfo");
var getRenameInfosFromVariablesInModule_1 = require("./getRenameInfosFromVariablesInModule");
var getRenameInfosFromDefaultExport_1 = require("./getRenameInfosFromDefaultExport");
var renameInFile_1 = require("./renameInFile");
var renameInGlobalForExternalModules_1 = require("./renameInGlobalForExternalModules");
var renameInMainFileNamespaces_1 = require("./renameInMainFileNamespaces");
function renameDefinitionAs(opts) {
var globalDef = opts.globalDef, definition = opts.definition, newName = opts.newName;
var fileAndNamespaces = globalDef.getFileAndNamespacesToDefinition(definition);
if (fileAndNamespaces == null) {
return;
}
var mainFile = fileAndNamespaces.file, namespaces = fileAndNamespaces.namespaces;
var renameInfo = RenameInfo_1.RenameInfo.createFromNamespaces({ nameFrom: definition.name, nameTo: newName, namespaceNames: namespaces.map(function (n) { return n.name; }) });
renameInMainFileNamespaces_1.renameInMainFileNamespaces(renameInfo, namespaces);
if (mainFile.imports.length === 0 && mainFile.getExports().length === 0 && mainFile.defaultExportExpression == null) {
renameForInternalModules();
}
else {
renameForExternalModules();
}
definition.name = newName;
function renameForInternalModules() {
var internalModuleFiles = globalDef.files.filter(function (f) { return f.imports.length === 0 && f.getExports().length === 0 && mainFile.defaultExportExpression == null; });
var renameInfos = [renameInfo];
internalModuleFiles.forEach(function (file) {
renameInfos.push.apply(renameInfos, getRenameInfosFromVariablesInModule_1.getRenameInfosFromVariablesInModule({
moduleDef: file,
currentRenameInfos: renameInfos
}));
});
internalModuleFiles.forEach(function (file) {
renameInFile_1.renameInFile(renameInfos, file);
});
}
function renameForExternalModules() {
var fileLocalRenameInfos = getRenameInfosFromVariablesInModule_1.getRenameInfosFromVariablesInModule({
moduleDef: mainFile,
currentRenameInfos: [renameInfo]
});
var exportedRenameInfos = getRenameInfosFromDefaultExport_1.getRenameInfosFromDefaultExport({
currentRenameInfos: [renameInfo].concat(fileLocalRenameInfos),
file: mainFile
});
if (namespaces.length > 0 && namespaces[0].isNamedExportOfFile || definition.isNamedExportOfFile) {
exportedRenameInfos.push(renameInfo);
}
renameInFile_1.renameInFile([renameInfo], mainFile);
renameInGlobalForExternalModules_1.renameInGlobalForExternalModules({
exportedRenameInfos: exportedRenameInfos,
exportedFile: mainFile,
globalDef: globalDef
});
}
}
exports.renameDefinitionAs = renameDefinitionAs;
//# sourceMappingURL=renameDefinitionAs.js.map
|