import-conductor
Version:
Automatically organize your Typescript import statements
37 lines • 1.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getImportStatementMap = void 0;
const typescript_1 = __importDefault(require("typescript"));
const config_1 = require("../config");
const merge_import_statements_1 = require("./merge-import-statements");
function getImportStatementMap(importNodes) {
const { autoMerge } = config_1.getConfig();
const importStatementMap = new Map();
importNodes.forEach((node) => {
var _a;
const importSegments = node.getChildren();
let importStatement = node.getFullText();
if (importStatement.startsWith('\n')) {
importStatement = importStatement.replace(/^\n*/, '');
}
const importLiteral = (_a = importSegments.find((segment) => segment.kind === typescript_1.default.SyntaxKind.StringLiteral)) === null || _a === void 0 ? void 0 : _a.getText();
if (!importLiteral) {
return;
}
const existingImport = importStatementMap.get(importLiteral);
const canMerge = autoMerge && existingImport && [existingImport, importStatement].every((i) => !i.includes('*'));
if (canMerge) {
importStatementMap.set(importLiteral, merge_import_statements_1.mergeImportStatements(existingImport, importStatement));
}
else {
const key = existingImport ? `${importLiteral}_${Math.random()}` : importLiteral;
importStatementMap.set(key, importStatement);
}
});
return importStatementMap;
}
exports.getImportStatementMap = getImportStatementMap;
//# sourceMappingURL=get-import-statement-map.js.map