UNPKG

eslint-plugin-import-sorting

Version:

ESLint plugin to group and sort imports by module, à la Python isort

38 lines (37 loc) 1.74 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const order = require("../rules/order.cjs"); const getGroupNumber = require("./get-group-number.cjs"); const sortNodes = require("./sort-nodes.cjs"); function sortNodesByGroups(nodes, options, extraOptions) { var _a; let nodesByNonIgnoredGroupNumber = {}; let ignoredNodeIndices = []; for (let [index, sortingNode] of nodes.entries()) { if ((sortingNode.isEslintDisabled && (extraOptions == null ? void 0 : extraOptions.ignoreEslintDisabledNodes)) ?? ((_a = extraOptions == null ? void 0 : extraOptions.isNodeIgnored) == null ? void 0 : _a.call(extraOptions, sortingNode))) { ignoredNodeIndices.push(index); continue; } let groupNumber = getGroupNumber.getGroupNumber(order.IMPORT_GROUPS, sortingNode); nodesByNonIgnoredGroupNumber[groupNumber] ?? (nodesByNonIgnoredGroupNumber[groupNumber] = []); nodesByNonIgnoredGroupNumber[groupNumber].push(sortingNode); } let sortedNodes = []; for (let groupNumber of Object.keys(nodesByNonIgnoredGroupNumber).sort( (a, b) => Number(a) - Number(b) )) { let compareOptions = (extraOptions == null ? void 0 : extraOptions.getGroupCompareOptions) ? extraOptions.getGroupCompareOptions(Number(groupNumber)) : options; if (!compareOptions) { sortedNodes.push(...nodesByNonIgnoredGroupNumber[Number(groupNumber)]); continue; } sortedNodes.push( ...sortNodes.sortNodes(nodesByNonIgnoredGroupNumber[Number(groupNumber)], compareOptions) ); } for (let ignoredIndex of ignoredNodeIndices) { sortedNodes.splice(ignoredIndex, 0, nodes[ignoredIndex]); } return sortedNodes; } exports.sortNodesByGroups = sortNodesByGroups;