Skip to content
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/content/rules/sort-imports.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ This option is only applicable when [`partitionByNewLine`](#partitionbynewline)

### maxLineLength

<sub>default: `undefined`</sub>
<sub>default: `Infinity`</sub>

Specifies a maximum line length for sorting imports. When the line length exceeds this number, sorting will be based only on the import name, excluding the elements.

Expand All @@ -273,14 +273,14 @@ This option is only available when the type is set to `'line-length'`.
<sub>
type: `{ rootDir: string; filename?: string }`
</sub>
<sub>default: undefined</sub>
<sub>default: `{ rootDir: '' }`</sub>

- `rootDir` — Specifies the directory of the root `tsconfig.json` file (ex: `.`). This is used in [`groups`](#groups) for:
- Marking aliased imports as `internal`.
- Marking imports matching [tsconfig paths](https://www.typescriptlang.org/tsconfig/#paths) as `tsconfig-path`.
- `filename` — Specifies the `tsconfig` filename to search for (by default: `tsconfig.json`).

If this option is not set, the rule will not search for a `tsconfig.json` file.
If `rootDir` is empty, the rule will not search for a `tsconfig.json` file.

### groups

Expand Down
6 changes: 3 additions & 3 deletions rules/sort-array-includes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { buildGetCustomGroupOverriddenOptionsFunction } from '../utils/get-custom-groups-compare-options'
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration'
import {
Expand Down Expand Up @@ -251,8 +251,8 @@ export function sortArray<MessageIds extends string>({
): SortArrayIncludesSortingNode[] {
return formattedMembers.flatMap(nodes =>
sortNodesByGroups({
getOptionsByGroupIndex:
buildGetCustomGroupOverriddenOptionsFunction(options),
optionsByGroupIndexComputer:
buildDefaultOptionsByGroupIndexComputer(options),
ignoreEslintDisabledNodes,
groups: options.groups,
nodes,
Expand Down
6 changes: 3 additions & 3 deletions rules/sort-classes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { buildGetCustomGroupOverriddenOptionsFunction } from '../utils/get-custom-groups-compare-options'
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import {
singleCustomGroupJsonSchema,
Expand Down Expand Up @@ -602,8 +602,8 @@ export default createEslintRule<SortClassesOptions, MessageId>({
isNodeIgnored: sortingNode =>
getGroupIndex(options.groups, sortingNode) ===
options.groups.length,
getOptionsByGroupIndex:
buildGetCustomGroupOverriddenOptionsFunction(options),
optionsByGroupIndexComputer:
buildDefaultOptionsByGroupIndexComputer(options),
ignoreEslintDisabledNodes,
groups: options.groups,
nodes,
Expand Down
6 changes: 3 additions & 3 deletions rules/sort-decorators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { buildGetCustomGroupOverriddenOptionsFunction } from '../utils/get-custom-groups-compare-options'
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration'
import { getEslintDisabledLines } from '../utils/get-eslint-disabled-lines'
Expand Down Expand Up @@ -262,8 +262,8 @@ function sortDecorators(
): SortDecoratorsSortingNode[] {
return formattedMembers.flatMap(nodes =>
sortNodesByGroups({
getOptionsByGroupIndex:
buildGetCustomGroupOverriddenOptionsFunction(options),
optionsByGroupIndexComputer:
buildDefaultOptionsByGroupIndexComputer(options),
ignoreEslintDisabledNodes,
groups: options.groups,
nodes,
Expand Down
21 changes: 4 additions & 17 deletions rules/sort-enums.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import type { TSESTree } from '@typescript-eslint/types'

import type { SortingNodeWithDependencies } from '../utils/sort-nodes-by-dependencies'
import type { NodeValueGetterFunction } from '../utils/compare'
import type { NodeValueGetterFunction } from '../utils/compare/compare'
import type { SortEnumsSortingNode, Options } from './sort-enums/types'
import type { TypeOption } from '../types/common-options'
import type { Options } from './sort-enums/types'

import {
buildCustomGroupsArrayJsonSchema,
Expand All @@ -21,9 +20,8 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import { getCustomGroupOverriddenOptions } from '../utils/build-default-options-by-group-index-computer'
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration'
import { getCustomGroupOverriddenOptions } from '../utils/get-custom-groups-compare-options'
import { sortNodesByDependencies } from '../utils/sort-nodes-by-dependencies'
import { getEslintDisabledLines } from '../utils/get-eslint-disabled-lines'
import { isNodeEslintDisabled } from '../utils/is-node-eslint-disabled'
Expand Down Expand Up @@ -54,12 +52,6 @@ type MessageId =
| typeof GROUP_ORDER_ERROR_ID
| typeof ORDER_ERROR_ID

interface SortEnumsSortingNode
extends SortingNodeWithDependencies<TSESTree.TSEnumMember> {
numericValue: number | null
value: string | null
}

let defaultOptions: Required<Options[number]> = {
fallbackSort: { type: 'unsorted' },
sortByValue: 'ifNumericEnum',
Expand Down Expand Up @@ -90,11 +82,6 @@ export default createEslintRule<Options, MessageId>({
let settings = getSettings(context.settings)
let options = complete(context.options.at(0), settings, defaultOptions)
validateCustomSortConfiguration(options)
validateGeneratedGroupsConfiguration({
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you decide to delete this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@azat-io

Oops, that's an oversight. I forgot that this does more than check predefined/generated groups.

selectors: [],
modifiers: [],
options,
})
validateNewlinesAndPartitionConfiguration(options)

let { sourceCode, id } = context
Expand Down Expand Up @@ -227,7 +214,7 @@ export default createEslintRule<Options, MessageId>({
): SortEnumsSortingNode[] {
let nodesSortedByGroups = formattedMembers.flatMap(sortingNodes =>
sortNodesByGroups({
getOptionsByGroupIndex: groupIndex => ({
optionsByGroupIndexComputer: groupIndex => ({
options: getCustomGroupOverriddenOptions({
options: overriddenOptions,
groupIndex,
Expand Down
8 changes: 8 additions & 0 deletions rules/sort-enums/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import type { JSONSchema4 } from '@typescript-eslint/utils/json-schema'
import type { TSESTree } from '@typescript-eslint/types'

import type { SortingNodeWithDependencies } from '../../utils/sort-nodes-by-dependencies'
import type { CommonPartitionOptions } from '../../types/common-partition-options'
import type { CommonOptions, RegexOption } from '../../types/common-options'
import type { CommonGroupsOptions } from '../../types/common-groups-options'
Expand Down Expand Up @@ -47,6 +49,12 @@ export type Options = Partial<
CommonOptions
>[]

export interface SortEnumsSortingNode
extends SortingNodeWithDependencies<TSESTree.TSEnumMember> {
numericValue: number | null
value: string | null
}

/**
* Represents a group identifier for enum member categorization. Can be
* 'unknown' for uncategorized members or a custom group name.
Expand Down
12 changes: 3 additions & 9 deletions rules/sort-export-attributes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { buildGetCustomGroupOverriddenOptionsFunction } from '../utils/get-custom-groups-compare-options'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer'
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration'
import { singleCustomGroupJsonSchema } from './sort-export-attributes/types'
import { getEslintDisabledLines } from '../utils/get-eslint-disabled-lines'
Expand Down Expand Up @@ -76,11 +75,6 @@ export default createEslintRule<Options, MessageId>({
let settings = getSettings(context.settings)
let options = complete(context.options.at(0), settings, defaultOptions)
validateCustomSortConfiguration(options)
validateGeneratedGroupsConfiguration({
selectors: [],
modifiers: [],
options,
})
validateNewlinesAndPartitionConfiguration(options)

let eslintDisabledLines = getEslintDisabledLines({
Expand Down Expand Up @@ -142,8 +136,8 @@ export default createEslintRule<Options, MessageId>({
ignoreEslintDisabledNodes: boolean,
): SortExportAttributesSortingNode[] {
return sortNodesByGroups({
getOptionsByGroupIndex:
buildGetCustomGroupOverriddenOptionsFunction(options),
optionsByGroupIndexComputer:
buildDefaultOptionsByGroupIndexComputer(options),
ignoreEslintDisabledNodes,
groups: options.groups,
nodes: sortingNodes,
Expand Down
13 changes: 8 additions & 5 deletions rules/sort-exports.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,18 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { buildGetCustomGroupOverriddenOptionsFunction } from '../utils/get-custom-groups-compare-options'
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import {
singleCustomGroupJsonSchema,
allModifiers,
allSelectors,
} from './sort-exports/types'
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration'
import { generatePredefinedGroups } from '../utils/generate-predefined-groups'
import { getEslintDisabledLines } from '../utils/get-eslint-disabled-lines'
import { isNodeEslintDisabled } from '../utils/is-node-eslint-disabled'
import { doesCustomGroupMatch } from '../utils/does-custom-group-match'
import { singleCustomGroupJsonSchema } from './sort-exports/types'
import { allModifiers, allSelectors } from './sort-exports/types'
import { sortNodesByGroups } from '../utils/sort-nodes-by-groups'
import { createEslintRule } from '../utils/create-eslint-rule'
import { reportAllErrors } from '../utils/report-all-errors'
Expand Down Expand Up @@ -159,8 +162,8 @@ export default createEslintRule<Options, MessageId>({
): SortExportsSortingNode[] {
return formattedMembers.flatMap(groupedNodes =>
sortNodesByGroups({
getOptionsByGroupIndex:
buildGetCustomGroupOverriddenOptionsFunction(options),
optionsByGroupIndexComputer:
buildDefaultOptionsByGroupIndexComputer(options),
ignoreEslintDisabledNodes,
groups: options.groups,
nodes: groupedNodes,
Expand Down
6 changes: 3 additions & 3 deletions rules/sort-heritage-clauses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { buildGetCustomGroupOverriddenOptionsFunction } from '../utils/get-custom-groups-compare-options'
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration'
import { singleCustomGroupJsonSchema } from './sort-heritage-clauses/types'
Expand Down Expand Up @@ -186,8 +186,8 @@ function sortHeritageClauses(
) {
return function (ignoreEslintDisabledNodes: boolean): SortingNode[] {
return sortNodesByGroups({
getOptionsByGroupIndex:
buildGetCustomGroupOverriddenOptionsFunction(options),
optionsByGroupIndexComputer:
buildDefaultOptionsByGroupIndexComputer(options),
ignoreEslintDisabledNodes,
groups: options.groups,
nodes: sortingNodes,
Expand Down
12 changes: 3 additions & 9 deletions rules/sort-import-attributes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ import {
ORDER_ERROR,
} from '../utils/report-errors'
import { validateNewlinesAndPartitionConfiguration } from '../utils/validate-newlines-and-partition-configuration'
import { buildGetCustomGroupOverriddenOptionsFunction } from '../utils/get-custom-groups-compare-options'
import { validateGeneratedGroupsConfiguration } from '../utils/validate-generated-groups-configuration'
import { buildDefaultOptionsByGroupIndexComputer } from '../utils/build-default-options-by-group-index-computer'
import { validateCustomSortConfiguration } from '../utils/validate-custom-sort-configuration'
import { singleCustomGroupJsonSchema } from './sort-import-attributes/types'
import { getEslintDisabledLines } from '../utils/get-eslint-disabled-lines'
Expand Down Expand Up @@ -76,11 +75,6 @@ export default createEslintRule<Options, MessageId>({
let settings = getSettings(context.settings)
let options = complete(context.options.at(0), settings, defaultOptions)
validateCustomSortConfiguration(options)
validateGeneratedGroupsConfiguration({
selectors: [],
modifiers: [],
options,
})
validateNewlinesAndPartitionConfiguration(options)

let eslintDisabledLines = getEslintDisabledLines({
Expand Down Expand Up @@ -142,8 +136,8 @@ export default createEslintRule<Options, MessageId>({
ignoreEslintDisabledNodes: boolean,
): SortImportAttributesSortingNode[] {
return sortNodesByGroups({
getOptionsByGroupIndex:
buildGetCustomGroupOverriddenOptionsFunction(options),
optionsByGroupIndexComputer:
buildDefaultOptionsByGroupIndexComputer(options),
ignoreEslintDisabledNodes,
groups: options.groups,
nodes: sortingNodes,
Expand Down
Loading