UNPKG

@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
"use strict"; 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;