@@ -25,6 +25,7 @@ import {
25
25
sortNodesByDependencies ,
26
26
} from '../utils/sort-nodes-by-dependencies'
27
27
import { hasPartitionComment } from '../utils/is-partition-comment'
28
+ import { sortNodesByGroups } from '../utils/sort-nodes-by-groups'
28
29
import { getCommentsBefore } from '../utils/get-comments-before'
29
30
import { createEslintRule } from '../utils/create-eslint-rule'
30
31
import { getGroupNumber } from '../utils/get-group-number'
@@ -33,7 +34,6 @@ import { toSingleLine } from '../utils/to-single-line'
33
34
import { rangeToDiff } from '../utils/range-to-diff'
34
35
import { getSettings } from '../utils/get-settings'
35
36
import { useGroups } from '../utils/use-groups'
36
- import { sortNodes } from '../utils/sort-nodes'
37
37
import { makeFixes } from '../utils/make-fixes'
38
38
import { complete } from '../utils/complete'
39
39
import { pairwise } from '../utils/pairwise'
@@ -649,47 +649,17 @@ export default createEslintRule<SortClassesOptions, MESSAGE_ID>({
649
649
[ [ ] ] ,
650
650
)
651
651
652
- let sortedNodes : SortingNodeWithDependencies [ ] = [ ]
653
- for ( let nodes of formattedNodes ) {
654
- let nodesByNonIgnoredGroupNumber : {
655
- [ key : number ] : SortingNodeWithDependencies [ ]
656
- } = { }
657
- let ignoredNodeIndices : number [ ] = [ ]
658
- for ( let [ index , sortingNode ] of nodes . entries ( ) ) {
659
- let groupNum = getGroupNumber ( options . groups , sortingNode )
660
- if ( groupNum === options . groups . length ) {
661
- ignoredNodeIndices . push ( index )
662
- continue
663
- }
664
- nodesByNonIgnoredGroupNumber [ groupNum ] =
665
- nodesByNonIgnoredGroupNumber [ groupNum ] ?? [ ]
666
- nodesByNonIgnoredGroupNumber [ groupNum ] . push ( sortingNode )
667
- }
668
-
669
- for ( let groupNumber of Object . keys (
670
- nodesByNonIgnoredGroupNumber ,
671
- ) . sort ( ( a , b ) => Number ( a ) - Number ( b ) ) ) {
672
- let compareOptions = getCompareOptions ( options , Number ( groupNumber ) )
673
- if ( ! compareOptions ) {
674
- // Do not sort this group
675
- sortedNodes . push (
676
- ...nodesByNonIgnoredGroupNumber [ Number ( groupNumber ) ] ,
677
- )
678
- } else {
679
- sortedNodes . push (
680
- ...sortNodes (
681
- nodesByNonIgnoredGroupNumber [ Number ( groupNumber ) ] ,
682
- compareOptions ,
683
- ) ,
684
- )
685
- }
686
- }
687
-
688
- // Add ignored nodes at the same position as they were before linting
689
- for ( let ignoredIndex of ignoredNodeIndices ) {
690
- sortedNodes . splice ( ignoredIndex , 0 , nodes [ ignoredIndex ] )
691
- }
692
- }
652
+ let sortedNodes = formattedNodes
653
+ . map ( nodes =>
654
+ sortNodesByGroups ( nodes , options , {
655
+ getGroupCompareOptions : groupNumber =>
656
+ getCompareOptions ( options , groupNumber ) ,
657
+ isNodeIgnored : sortingNode =>
658
+ getGroupNumber ( options . groups , sortingNode ) ===
659
+ options . groups . length ,
660
+ } ) ,
661
+ )
662
+ . flat ( )
693
663
694
664
sortedNodes = sortNodesByDependencies ( sortedNodes )
695
665
let nodes = formattedNodes . flat ( )
0 commit comments