@serverless-guru/prettier-plugin-import-order
Version:
A prettier plugin to sort TS/JS import declarations by provided Regular Expression order
45 lines (44 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSortedNodes = void 0;
var constants_1 = require("../constants");
var adjust_comments_on_sorted_nodes_1 = require("./adjust-comments-on-sorted-nodes");
var get_chunk_type_of_node_1 = require("./get-chunk-type-of-node");
var get_sorted_nodes_by_import_order_1 = require("./get-sorted-nodes-by-import-order");
var merge_nodes_with_matching_flavors_1 = require("./merge-nodes-with-matching-flavors");
var getSortedNodes = function (nodes, options) {
var importOrderSeparation = options.importOrderSeparation, importOrderMergeDuplicateImports = options.importOrderMergeDuplicateImports;
var splitBySideEffectNodes = nodes.reduce(function (chunks, node) {
var type = (0, get_chunk_type_of_node_1.getChunkTypeOfNode)(node);
var last = chunks[chunks.length - 1];
if (last === undefined || last.type !== type) {
chunks.push({ type: type, nodes: [node] });
}
else {
last.nodes.push(node);
}
return chunks;
}, []);
var finalNodes = [];
for (var _i = 0, splitBySideEffectNodes_1 = splitBySideEffectNodes; _i < splitBySideEffectNodes_1.length; _i++) {
var chunk = splitBySideEffectNodes_1[_i];
if (chunk.type === constants_1.chunkTypeUnsortable) {
finalNodes.push.apply(finalNodes, chunk.nodes);
}
else {
var nodes_1 = importOrderMergeDuplicateImports
? (0, merge_nodes_with_matching_flavors_1.mergeNodesWithMatchingImportFlavors)(chunk.nodes)
: chunk.nodes;
var sorted = (0, get_sorted_nodes_by_import_order_1.getSortedNodesByImportOrder)(nodes_1, options);
finalNodes.push.apply(finalNodes, sorted);
}
if (importOrderSeparation) {
finalNodes.push(constants_1.newLineNode);
}
}
if (finalNodes.length > 0 && !importOrderSeparation) {
finalNodes.push(constants_1.newLineNode);
}
return (0, adjust_comments_on_sorted_nodes_1.adjustCommentsOnSortedNodes)(nodes, finalNodes);
};
exports.getSortedNodes = getSortedNodes;