UNPKG

import-conductor

Version:

Automatically organize your Typescript import statements

34 lines 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatImportStatements = void 0; const config_1 = require("../config"); function formatImportStatements(importCategories, lineEnding) { const { separator } = config_1.getConfig(); const [first, ...otherCategories] = Object.entries(importCategories) .filter(hasImports) .sort(byCategoriesOrder(config_1.getConfig().groupOrder)) .map((imports) => toImportBlock(imports, lineEnding)); let result = first || ''; for (const imports of otherCategories) { result += `${separator}${lineEnding}${imports}`; } return result; } exports.formatImportStatements = formatImportStatements; function byCategoriesOrder(categoriesOrder) { return ([a], [b]) => categoriesOrder.indexOf(a) - categoriesOrder.indexOf(b); } function hasImports([, imports]) { return imports.size > 0; } function toImportBlock([, imports], lineEnding) { return [...imports.values()].map((l) => trim(l, ` ${lineEnding}`)).join(lineEnding); } function escapeRegex(string) { return string.replace(/[\[\](){}?*+\^$\\.|\-]/g, '\\$&'); } function trim(input, characters) { characters = escapeRegex(characters); return input.replace(new RegExp('^[' + characters + ']+|[' + characters + ']+$', 'g'), ''); } //# sourceMappingURL=format-import-statements.js.map