eslint-plugin-perfectionist 5.7.0 → 5.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +23 -0
- package/dist/index.js +57 -54
- package/dist/package.json.js +2 -2
- package/dist/rules/sort-array-includes/types.d.ts +2 -74
- package/dist/rules/sort-array-includes.d.ts +1 -1
- package/dist/rules/sort-array-includes.js +24 -20
- package/dist/rules/{sort-array-includes → sort-arrays}/compute-array-elements.js +8 -1
- package/dist/rules/{sort-array-includes → sort-arrays}/compute-matched-context-options.js +20 -2
- package/dist/rules/sort-arrays/compute-node-name.js +15 -0
- package/dist/rules/{sort-array-includes → sort-arrays}/sort-array.d.ts +2 -0
- package/dist/rules/{sort-array-includes → sort-arrays}/sort-array.js +20 -15
- package/dist/rules/sort-arrays/types.d.ts +74 -0
- package/dist/rules/sort-arrays/types.js +14 -0
- package/dist/rules/sort-arrays.d.ts +21 -0
- package/dist/rules/sort-arrays.js +111 -0
- package/dist/rules/sort-classes/compute-dependencies-by-sorting-node.js +11 -11
- package/dist/rules/sort-classes/compute-dependencies.js +21 -5
- package/dist/rules/sort-classes/compute-identifier-name-details.js +8 -1
- package/dist/rules/sort-classes/compute-matched-context-options.js +16 -3
- package/dist/rules/sort-classes/compute-overload-signature-groups.js +11 -6
- package/dist/rules/sort-classes/is-known-class-element.js +10 -0
- package/dist/rules/sort-classes/node-info/common-modifiers.d.ts +3 -3
- package/dist/rules/sort-classes/node-info/common-modifiers.js +26 -17
- package/dist/rules/sort-classes/node-info/compute-accessor-details.js +12 -3
- package/dist/rules/sort-classes/node-info/compute-index-signature-details.js +10 -1
- package/dist/rules/sort-classes/node-info/compute-method-details.js +16 -6
- package/dist/rules/sort-classes/node-info/compute-method-or-property-name-details.js +9 -1
- package/dist/rules/sort-classes/node-info/compute-property-details.js +20 -6
- package/dist/rules/sort-classes/node-info/compute-static-block-details.js +12 -0
- package/dist/rules/sort-classes/sort-class.js +73 -62
- package/dist/rules/sort-classes/types.d.ts +6 -0
- package/dist/rules/sort-classes/types.js +25 -10
- package/dist/rules/sort-classes.js +22 -18
- package/dist/rules/sort-decorators.js +38 -32
- package/dist/rules/sort-enums/build-comparator-by-options-computer.js +15 -4
- package/dist/rules/sort-enums/compute-dependencies-by-sorting-node.js +2 -2
- package/dist/rules/sort-enums/compute-dependencies.js +12 -0
- package/dist/rules/sort-enums/compute-expression-number-value.js +29 -0
- package/dist/rules/sort-enums/compute-matched-context-options.js +19 -2
- package/dist/rules/sort-enums/compute-node-name.js +8 -0
- package/dist/rules/sort-enums/sort-enum.js +46 -41
- package/dist/rules/sort-enums/types.js +10 -6
- package/dist/rules/sort-enums.js +19 -19
- package/dist/rules/sort-export-attributes/types.d.ts +2 -0
- package/dist/rules/sort-export-attributes.d.ts +1 -2
- package/dist/rules/sort-export-attributes.js +13 -13
- package/dist/rules/sort-exports/types.js +16 -4
- package/dist/rules/sort-exports.js +33 -31
- package/dist/rules/sort-heritage-clauses/compute-matched-context-options.js +15 -1
- package/dist/rules/sort-heritage-clauses/compute-node-name.js +11 -0
- package/dist/rules/sort-heritage-clauses/sort-heritage-clause.js +21 -18
- package/dist/rules/sort-heritage-clauses/types.js +4 -4
- package/dist/rules/sort-heritage-clauses.js +17 -17
- package/dist/rules/sort-import-attributes/compute-matched-context-options.js +17 -1
- package/dist/rules/sort-import-attributes/compute-node-name.js +11 -1
- package/dist/rules/sort-import-attributes/sort-import-or-export-attributes.js +12 -9
- package/dist/rules/sort-import-attributes.js +20 -20
- package/dist/rules/sort-imports/comparator-by-options-computer.js +16 -5
- package/dist/rules/sort-imports/compute-common-selectors.js +75 -12
- package/dist/rules/sort-imports/compute-dependencies.js +10 -1
- package/dist/rules/sort-imports/compute-dependency-names.js +9 -1
- package/dist/rules/sort-imports/compute-node-name.js +10 -3
- package/dist/rules/sort-imports/compute-specifier-modifiers.js +6 -0
- package/dist/rules/sort-imports/compute-specifier-name.js +1 -1
- package/dist/rules/sort-imports/get-typescript-import.js +14 -2
- package/dist/rules/sort-imports/is-non-external-reference-ts-import-equals.js +8 -0
- package/dist/rules/sort-imports/is-side-effect-import.js +10 -3
- package/dist/rules/sort-imports/is-side-effect-only-group.js +11 -1
- package/dist/rules/sort-imports/is-string-group-side-effect-only-group.js +9 -0
- package/dist/rules/sort-imports/matches-tsconfig-paths.js +32 -1
- package/dist/rules/sort-imports/read-closest-ts-config-by-path.js +41 -8
- package/dist/rules/sort-imports/types.js +19 -8
- package/dist/rules/sort-imports/validate-side-effects-configuration.js +23 -8
- package/dist/rules/sort-imports.js +90 -81
- package/dist/rules/sort-interfaces/types.d.ts +2 -0
- package/dist/rules/sort-interfaces.d.ts +1 -2
- package/dist/rules/sort-interfaces.js +11 -11
- package/dist/rules/sort-intersection-types/types.d.ts +2 -0
- package/dist/rules/sort-intersection-types.d.ts +1 -2
- package/dist/rules/sort-intersection-types.js +15 -12
- package/dist/rules/sort-jsx-props/compute-matched-context-options.js +12 -2
- package/dist/rules/sort-jsx-props/compute-node-name.js +7 -1
- package/dist/rules/sort-jsx-props/sort-jsx-object.js +33 -28
- package/dist/rules/sort-jsx-props/types.js +21 -9
- package/dist/rules/sort-jsx-props.js +17 -17
- package/dist/rules/sort-maps/compute-matched-context-options.js +19 -3
- package/dist/rules/sort-maps/compute-node-name.js +12 -0
- package/dist/rules/sort-maps/sort-potential-map.js +20 -17
- package/dist/rules/sort-maps/types.js +4 -4
- package/dist/rules/sort-maps.js +16 -16
- package/dist/rules/sort-modules/build-comparator-by-options-computer.js +1 -1
- package/dist/rules/sort-modules/build-usage-comparator.js +28 -8
- package/dist/rules/sort-modules/compute-dependencies-by-sorting-node.js +14 -12
- package/dist/rules/sort-modules/compute-dependencies.js +14 -4
- package/dist/rules/sort-modules/compute-node-details.js +35 -12
- package/dist/rules/sort-modules/compute-overload-signature-groups.js +14 -6
- package/dist/rules/sort-modules/is-arrow-function-node.js +9 -1
- package/dist/rules/sort-modules/is-property-or-accessor-node.js +7 -0
- package/dist/rules/sort-modules/types.d.ts +16 -10
- package/dist/rules/sort-modules/types.js +18 -14
- package/dist/rules/sort-modules.js +101 -68
- package/dist/rules/sort-named-exports/compute-matched-context-options.js +16 -1
- package/dist/rules/sort-named-exports/compute-node-name.js +8 -1
- package/dist/rules/sort-named-exports/sort-named-export.js +30 -25
- package/dist/rules/sort-named-exports/types.js +22 -8
- package/dist/rules/sort-named-exports.js +20 -20
- package/dist/rules/sort-named-imports/compute-matched-context-options.js +17 -2
- package/dist/rules/sort-named-imports/compute-node-name.js +8 -1
- package/dist/rules/sort-named-imports/sort-named-import.js +31 -26
- package/dist/rules/sort-named-imports/types.js +22 -8
- package/dist/rules/sort-named-imports.js +20 -20
- package/dist/rules/sort-object-types/comparator-by-options-computer.js +4 -4
- package/dist/rules/sort-object-types/compute-matched-context-options.js +19 -4
- package/dist/rules/sort-object-types/compute-node-name.js +12 -2
- package/dist/rules/sort-object-types/compute-node-parent-name.js +8 -1
- package/dist/rules/sort-object-types/is-member-optional.js +11 -1
- package/dist/rules/sort-object-types/is-node-function-type.js +55 -0
- package/dist/rules/sort-object-types/passes-declaration-comment-matches-filter.js +11 -2
- package/dist/rules/sort-object-types/passes-declaration-matches-pattern-filter.js +11 -1
- package/dist/rules/sort-object-types/sort-object-type-elements.js +35 -28
- package/dist/rules/sort-object-types/types.js +26 -10
- package/dist/rules/sort-object-types.js +28 -25
- package/dist/rules/sort-objects/comparator-by-options-computer.js +4 -4
- package/dist/rules/sort-objects/compute-dependencies.js +5 -3
- package/dist/rules/sort-objects/compute-dependency-names.js +1 -1
- package/dist/rules/sort-objects/compute-matched-context-options.js +21 -6
- package/dist/rules/sort-objects/compute-property-or-variable-declarator-name.js +17 -3
- package/dist/rules/sort-objects/is-style-component.js +6 -0
- package/dist/rules/sort-objects/passes-calling-function-name-pattern-filter.js +11 -2
- package/dist/rules/sort-objects/passes-declaration-comment-matches-filter.js +11 -2
- package/dist/rules/sort-objects/passes-declaration-matches-pattern-filter.js +13 -3
- package/dist/rules/sort-objects/sort-object.js +55 -51
- package/dist/rules/sort-objects/types.js +31 -15
- package/dist/rules/sort-objects.js +21 -21
- package/dist/rules/sort-sets/types.d.ts +2 -0
- package/dist/rules/sort-sets.d.ts +1 -2
- package/dist/rules/sort-sets.js +16 -12
- package/dist/rules/sort-switch-case/types.d.ts +2 -0
- package/dist/rules/sort-switch-case.d.ts +1 -2
- package/dist/rules/sort-switch-case.js +69 -37
- package/dist/rules/sort-union-types/compute-matched-context-options.js +20 -2
- package/dist/rules/sort-union-types/compute-node-name.js +12 -0
- package/dist/rules/sort-union-types/sort-union-or-intersection-types.js +19 -17
- package/dist/rules/sort-union-types/types.js +11 -2
- package/dist/rules/sort-union-types.js +23 -20
- package/dist/rules/sort-variable-declarations/compute-dependencies.js +8 -0
- package/dist/rules/sort-variable-declarations/compute-matched-context-options.js +21 -2
- package/dist/rules/sort-variable-declarations/compute-node-name.js +9 -1
- package/dist/rules/sort-variable-declarations/sort-variable-declaration.js +35 -30
- package/dist/rules/sort-variable-declarations/types.js +16 -9
- package/dist/rules/sort-variable-declarations.js +17 -17
- package/dist/types/scoped-regex-option.d.ts +1 -3
- package/dist/types/scoped-regex-option.js +1 -1
- package/dist/utils/alphabet.js +50 -40
- package/dist/utils/assert-is-never.d.ts +7 -0
- package/dist/utils/assert-is-never.js +8 -0
- package/dist/utils/build-ast-listeners.js +13 -3
- package/dist/utils/build-options-by-group-index-computer.js +19 -0
- package/dist/utils/build-sorting-node-by-node-map.js +6 -0
- package/dist/utils/compare/build-line-length-comparator.js +8 -4
- package/dist/utils/compare/build-string-formatter.js +21 -0
- package/dist/utils/compare/build-subgroup-order-comparator.js +7 -4
- package/dist/utils/compare/compare-alphabetically.js +20 -3
- package/dist/utils/compare/compare-by-custom-sort.js +7 -3
- package/dist/utils/compare/compare-naturally.js +23 -7
- package/dist/utils/compare/compute-comparators.js +19 -5
- package/dist/utils/compare/compute-ordered-value.js +10 -0
- package/dist/utils/compare/default-comparator-by-options-computer.js +2 -2
- package/dist/utils/compare/unsorted-comparator.js +1 -1
- package/dist/utils/complete.js +35 -1
- package/dist/utils/compute-deep-scope-references.js +7 -0
- package/dist/utils/compute-dependencies-by-sorting-node.js +14 -0
- package/dist/utils/compute-dependencies-outside-functions-by-sorting-node.js +12 -11
- package/dist/utils/compute-group-name.js +11 -0
- package/dist/utils/compute-group.js +35 -0
- package/dist/utils/compute-groups-names.js +8 -0
- package/dist/utils/compute-nodes-in-circular-dependencies.js +45 -0
- package/dist/utils/compute-overridden-options-by-group-index.js +40 -3
- package/dist/utils/compute-parent-nodes-with-types.js +12 -0
- package/dist/utils/context-matching/passes-all-names-match-pattern-filter.js +10 -0
- package/dist/utils/context-matching/passes-ast-selector-filter.js +10 -0
- package/dist/utils/convert-boolean-to-sign.js +26 -0
- package/dist/utils/create-eslint-rule.js +13 -1
- package/dist/utils/create-node-index-map.js +25 -0
- package/dist/utils/does-custom-group-match.js +77 -14
- package/dist/utils/does-sorting-node-have-one-of-dependency-names.js +9 -0
- package/dist/utils/generate-predefined-groups.js +26 -0
- package/dist/utils/get-array-combinations.js +7 -0
- package/dist/utils/get-comment-above-that-should-exist.js +47 -5
- package/dist/utils/get-comments-before.js +14 -2
- package/dist/utils/get-decorator-name.js +36 -0
- package/dist/utils/get-enum-members.js +25 -4
- package/dist/utils/get-eslint-disabled-lines.js +69 -7
- package/dist/utils/get-eslint-disabled-rules.js +81 -3
- package/dist/utils/get-group-index.js +31 -0
- package/dist/utils/get-lines-between.js +40 -5
- package/dist/utils/get-newlines-between-errors.js +39 -0
- package/dist/utils/get-newlines-between-option.js +44 -8
- package/dist/utils/get-node-decorators.js +20 -4
- package/dist/utils/get-node-range.js +58 -1
- package/dist/utils/get-options-with-clean-groups.js +62 -0
- package/dist/utils/get-settings.js +43 -1
- package/dist/utils/is-group-with-overrides-option.js +27 -0
- package/dist/utils/is-newlines-between-option.js +33 -0
- package/dist/utils/is-node-dependent-on-other-node.js +40 -0
- package/dist/utils/is-node-eslint-disabled.js +27 -0
- package/dist/utils/is-node-on-single-line.js +6 -0
- package/dist/utils/is-partition-comment.js +67 -0
- package/dist/utils/is-sortable.js +6 -0
- package/dist/utils/json-schemas/common-groups-json-schemas.js +92 -23
- package/dist/utils/json-schemas/common-json-schemas.js +65 -16
- package/dist/utils/json-schemas/common-partition-json-schemas.js +12 -6
- package/dist/utils/json-schemas/scoped-regex-json-schema.js +2 -2
- package/dist/utils/make-comment-above-fixes.js +60 -8
- package/dist/utils/make-comment-after-fixes.js +29 -0
- package/dist/utils/make-fixes.js +49 -0
- package/dist/utils/make-newlines-between-fixes.js +89 -10
- package/dist/utils/make-order-fixes.js +49 -5
- package/dist/utils/make-single-node-comment-after-fixes.js +49 -2
- package/dist/utils/matches.js +45 -0
- package/dist/utils/overload-signature/build-overload-signature-newlines-between-value-getter.d.ts +6 -3
- package/dist/utils/overload-signature/build-overload-signature-newlines-between-value-getter.js +11 -2
- package/dist/utils/overload-signature/overload-signature-group.js +4 -1
- package/dist/utils/overload-signature/populate-sorting-node-groups-with-overload-signature.js +10 -0
- package/dist/utils/pairwise.js +32 -3
- package/dist/utils/populate-sorting-node-groups-with-dependencies.js +9 -0
- package/dist/utils/range-contains-range.js +7 -0
- package/dist/utils/range-to-diff.js +37 -0
- package/dist/utils/report-all-errors.js +88 -14
- package/dist/utils/report-errors.js +90 -12
- package/dist/utils/scoped-regex/matches-scoped-expressions.js +23 -11
- package/dist/utils/scoped-regex/partition-patterns-by-scope.js +7 -2
- package/dist/utils/should-partition.js +83 -3
- package/dist/utils/sort-nodes-by-dependencies.js +91 -0
- package/dist/utils/sort-nodes-by-groups.js +73 -0
- package/dist/utils/sort-nodes.js +17 -0
- package/dist/utils/unreachable-case-error.js +34 -1
- package/dist/utils/validate-custom-sort-configuration.js +13 -0
- package/dist/utils/validate-groups-configuration.js +156 -4
- package/dist/utils/validate-newlines-and-partition-configuration.js +101 -7
- package/dist/utils/validate-no-duplicated-groups.js +7 -0
- package/dist/utils/validate-objects-inside-groups.js +58 -0
- package/package.json +2 -2
- package/readme.md +33 -31
- package/dist/rules/sort-array-includes/compute-node-name.js +0 -7
- package/dist/rules/sort-array-includes/types.js +0 -6
- /package/dist/rules/{sort-array-includes → sort-arrays}/compute-array-elements.d.ts +0 -0
- /package/dist/rules/{sort-array-includes → sort-arrays}/compute-matched-context-options.d.ts +0 -0
- /package/dist/rules/{sort-array-includes → sort-arrays}/compute-node-name.d.ts +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -18,3 +18,26 @@ declare const _default: {
|
|
|
18
18
|
configs: PluginConfigs
|
|
19
19
|
} & ESLint.Plugin
|
|
20
20
|
export default _default
|
|
21
|
+
export type { Options as SortVariableDeclarationsOptions } from './rules/sort-variable-declarations/types.js'
|
|
22
|
+
export type { Options as SortIntersectionTypesOptions } from './rules/sort-intersection-types/types.js'
|
|
23
|
+
export type { Options as SortImportAttributesOptions } from './rules/sort-import-attributes/types.js'
|
|
24
|
+
export type { Options as SortExportAttributesOptions } from './rules/sort-export-attributes/types.js'
|
|
25
|
+
export type { Options as SortHeritageClausesOptions } from './rules/sort-heritage-clauses/types.js'
|
|
26
|
+
export type { Options as SortArrayIncludesOptions } from './rules/sort-array-includes/types.js'
|
|
27
|
+
export type { Options as SortNamedImportsOptions } from './rules/sort-named-imports/types.js'
|
|
28
|
+
export type { Options as SortNamedExportsOptions } from './rules/sort-named-exports/types.js'
|
|
29
|
+
export type { Options as SortObjectTypesOptions } from './rules/sort-object-types/types.js'
|
|
30
|
+
export type { Options as SortSwitchCaseOptions } from './rules/sort-switch-case/types.js'
|
|
31
|
+
export type { Options as SortUnionTypesOptions } from './rules/sort-union-types/types.js'
|
|
32
|
+
export type { Options as SortInterfacesOptions } from './rules/sort-interfaces/types.js'
|
|
33
|
+
export type { Options as SortDecoratorsOptions } from './rules/sort-decorators/types.js'
|
|
34
|
+
export type { Options as SortJsxPropsOptions } from './rules/sort-jsx-props/types.js'
|
|
35
|
+
export type { Options as SortClassesOptions } from './rules/sort-classes/types.js'
|
|
36
|
+
export type { Options as SortImportsOptions } from './rules/sort-imports/types.js'
|
|
37
|
+
export type { Options as SortExportsOptions } from './rules/sort-exports/types.js'
|
|
38
|
+
export type { Options as SortObjectsOptions } from './rules/sort-objects/types.js'
|
|
39
|
+
export type { Options as SortModulesOptions } from './rules/sort-modules/types.js'
|
|
40
|
+
export type { Options as SortArraysOptions } from './rules/sort-arrays/types.js'
|
|
41
|
+
export type { Options as SortEnumsOptions } from './rules/sort-enums/types.js'
|
|
42
|
+
export type { Options as SortMapsOptions } from './rules/sort-maps/types.js'
|
|
43
|
+
export type { Options as SortSetsOptions } from './rules/sort-sets/types.js'
|
package/dist/index.js
CHANGED
|
@@ -1,52 +1,57 @@
|
|
|
1
1
|
import { name, version } from './package.json.js'
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'sort-
|
|
28
|
-
'sort-
|
|
29
|
-
'sort-
|
|
30
|
-
'sort-
|
|
31
|
-
'sort-
|
|
32
|
-
'sort-
|
|
33
|
-
'sort-named-
|
|
34
|
-
'sort-
|
|
35
|
-
'sort-
|
|
36
|
-
'sort-
|
|
37
|
-
'sort-
|
|
38
|
-
'sort-
|
|
39
|
-
'sort-
|
|
40
|
-
'sort-
|
|
41
|
-
'sort-
|
|
42
|
-
'sort-
|
|
43
|
-
'sort-
|
|
44
|
-
'sort-
|
|
45
|
-
'sort-
|
|
46
|
-
'sort-
|
|
47
|
-
'sort-
|
|
2
|
+
import sort_variable_declarations_default from './rules/sort-variable-declarations.js'
|
|
3
|
+
import sort_union_types_default from './rules/sort-union-types.js'
|
|
4
|
+
import sort_intersection_types_default from './rules/sort-intersection-types.js'
|
|
5
|
+
import sort_import_attributes_default from './rules/sort-import-attributes.js'
|
|
6
|
+
import sort_export_attributes_default from './rules/sort-export-attributes.js'
|
|
7
|
+
import sort_heritage_clauses_default from './rules/sort-heritage-clauses.js'
|
|
8
|
+
import sort_array_includes_default from './rules/sort-array-includes.js'
|
|
9
|
+
import sort_named_imports_default from './rules/sort-named-imports.js'
|
|
10
|
+
import sort_named_exports_default from './rules/sort-named-exports.js'
|
|
11
|
+
import sort_object_types_default from './rules/sort-object-types.js'
|
|
12
|
+
import sort_switch_case_default from './rules/sort-switch-case.js'
|
|
13
|
+
import sort_interfaces_default from './rules/sort-interfaces.js'
|
|
14
|
+
import sort_decorators_default from './rules/sort-decorators.js'
|
|
15
|
+
import sort_jsx_props_default from './rules/sort-jsx-props.js'
|
|
16
|
+
import sort_classes_default from './rules/sort-classes.js'
|
|
17
|
+
import sort_imports_default from './rules/sort-imports.js'
|
|
18
|
+
import sort_exports_default from './rules/sort-exports.js'
|
|
19
|
+
import sort_objects_default from './rules/sort-objects.js'
|
|
20
|
+
import sort_modules_default from './rules/sort-modules.js'
|
|
21
|
+
import sort_arrays_default from './rules/sort-arrays.js'
|
|
22
|
+
import sort_enums_default from './rules/sort-enums.js'
|
|
23
|
+
import sort_maps_default from './rules/sort-maps.js'
|
|
24
|
+
import sort_sets_default from './rules/sort-sets.js'
|
|
25
|
+
var pluginName = 'perfectionist'
|
|
26
|
+
var recommendedRules = {
|
|
27
|
+
'sort-variable-declarations': sort_variable_declarations_default,
|
|
28
|
+
'sort-intersection-types': sort_intersection_types_default,
|
|
29
|
+
'sort-import-attributes': sort_import_attributes_default,
|
|
30
|
+
'sort-export-attributes': sort_export_attributes_default,
|
|
31
|
+
'sort-heritage-clauses': sort_heritage_clauses_default,
|
|
32
|
+
'sort-array-includes': sort_array_includes_default,
|
|
33
|
+
'sort-named-imports': sort_named_imports_default,
|
|
34
|
+
'sort-named-exports': sort_named_exports_default,
|
|
35
|
+
'sort-object-types': sort_object_types_default,
|
|
36
|
+
'sort-union-types': sort_union_types_default,
|
|
37
|
+
'sort-switch-case': sort_switch_case_default,
|
|
38
|
+
'sort-decorators': sort_decorators_default,
|
|
39
|
+
'sort-interfaces': sort_interfaces_default,
|
|
40
|
+
'sort-jsx-props': sort_jsx_props_default,
|
|
41
|
+
'sort-modules': sort_modules_default,
|
|
42
|
+
'sort-classes': sort_classes_default,
|
|
43
|
+
'sort-imports': sort_imports_default,
|
|
44
|
+
'sort-exports': sort_exports_default,
|
|
45
|
+
'sort-objects': sort_objects_default,
|
|
46
|
+
'sort-enums': sort_enums_default,
|
|
47
|
+
'sort-sets': sort_sets_default,
|
|
48
|
+
'sort-maps': sort_maps_default,
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
+
var rules = {
|
|
51
|
+
...recommendedRules,
|
|
52
|
+
'sort-arrays': sort_arrays_default,
|
|
53
|
+
}
|
|
54
|
+
var plugin = {
|
|
50
55
|
meta: {
|
|
51
56
|
version,
|
|
52
57
|
name,
|
|
@@ -55,7 +60,7 @@ let plugin = {
|
|
|
55
60
|
}
|
|
56
61
|
function getRules(options) {
|
|
57
62
|
return Object.fromEntries(
|
|
58
|
-
Object.keys(
|
|
63
|
+
Object.keys(recommendedRules).map(ruleName => [
|
|
59
64
|
`${pluginName}/${ruleName}`,
|
|
60
65
|
['error', options],
|
|
61
66
|
]),
|
|
@@ -63,9 +68,7 @@ function getRules(options) {
|
|
|
63
68
|
}
|
|
64
69
|
function createConfig(options) {
|
|
65
70
|
return {
|
|
66
|
-
plugins: {
|
|
67
|
-
[pluginName]: plugin,
|
|
68
|
-
},
|
|
71
|
+
plugins: { [pluginName]: plugin },
|
|
69
72
|
rules: getRules(options),
|
|
70
73
|
}
|
|
71
74
|
}
|
|
@@ -75,7 +78,7 @@ function createLegacyConfig(options) {
|
|
|
75
78
|
plugins: [pluginName],
|
|
76
79
|
}
|
|
77
80
|
}
|
|
78
|
-
|
|
81
|
+
var configs = {
|
|
79
82
|
'recommended-alphabetical-legacy': createLegacyConfig({
|
|
80
83
|
type: 'alphabetical',
|
|
81
84
|
order: 'asc',
|
|
@@ -109,8 +112,8 @@ let configs = {
|
|
|
109
112
|
order: 'asc',
|
|
110
113
|
}),
|
|
111
114
|
}
|
|
112
|
-
|
|
115
|
+
var eslint_plugin_perfectionist_default = {
|
|
113
116
|
...plugin,
|
|
114
117
|
configs,
|
|
115
118
|
}
|
|
116
|
-
export { configs,
|
|
119
|
+
export { configs, eslint_plugin_perfectionist_default as default, rules }
|
package/dist/package.json.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var name = 'eslint-plugin-perfectionist'
|
|
2
|
+
var version = '5.9.0'
|
|
3
3
|
export { name, version }
|
|
@@ -1,74 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { AllCommonOptions } from '../../types/all-common-options.js'
|
|
4
|
-
/**
|
|
5
|
-
* Configuration options for the sort-array-includes rule.
|
|
6
|
-
*
|
|
7
|
-
* This rule enforces the sorting of arrays passed to the `.includes()` method,
|
|
8
|
-
* ensuring consistent ordering of array elements for better readability and
|
|
9
|
-
* maintainability.
|
|
10
|
-
*/
|
|
11
|
-
export type Options = Partial<
|
|
12
|
-
{
|
|
13
|
-
/**
|
|
14
|
-
* Conditional configuration based on pattern matching.
|
|
15
|
-
*/
|
|
16
|
-
useConfigurationIf: {
|
|
17
|
-
/**
|
|
18
|
-
* Regular expression pattern to match against all array element names.
|
|
19
|
-
* The rule is only applied when all names match this pattern.
|
|
20
|
-
*/
|
|
21
|
-
allNamesMatchPattern?: RegexOption
|
|
22
|
-
/**
|
|
23
|
-
* AST selector to match against ArrayExpression nodes.
|
|
24
|
-
*/
|
|
25
|
-
matchesAstSelector?: string
|
|
26
|
-
}
|
|
27
|
-
} & AllCommonOptions<
|
|
28
|
-
TypeOption,
|
|
29
|
-
AdditionalSortOptions,
|
|
30
|
-
CustomGroupMatchOptions
|
|
31
|
-
>
|
|
32
|
-
>[]
|
|
33
|
-
/**
|
|
34
|
-
* Represents the type of array element selector. Note: Spread elements are not
|
|
35
|
-
* sorted and act as partition boundaries.
|
|
36
|
-
*/
|
|
37
|
-
export type Selector = (typeof allSelectors)[number]
|
|
38
|
-
/**
|
|
39
|
-
* Additional configuration for a single custom group.
|
|
40
|
-
*
|
|
41
|
-
* Custom groups allow fine-grained control over how array elements are grouped
|
|
42
|
-
* and sorted based on their names and types.
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
*
|
|
46
|
-
* ```ts
|
|
47
|
-
* {
|
|
48
|
-
* "selector": "literal"
|
|
49
|
-
* }
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
interface CustomGroupMatchOptions {
|
|
53
|
-
/**
|
|
54
|
-
* Specifies the type of array elements to include in this group. Only
|
|
55
|
-
* 'literal' is available since spread elements create partition boundaries
|
|
56
|
-
* and are not sorted.
|
|
57
|
-
*/
|
|
58
|
-
selector?: Selector
|
|
59
|
-
}
|
|
60
|
-
type AdditionalSortOptions = object
|
|
61
|
-
/**
|
|
62
|
-
* Complete list of available selectors for array elements. Used for validation
|
|
63
|
-
* and JSON schema generation.
|
|
64
|
-
*/
|
|
65
|
-
export declare let allSelectors: readonly ['literal']
|
|
66
|
-
/**
|
|
67
|
-
* Additional custom group match options JSON schema. Used by ESLint to validate
|
|
68
|
-
* rule options at configuration time.
|
|
69
|
-
*/
|
|
70
|
-
export declare let additionalCustomGroupMatchOptionsJsonSchema: Record<
|
|
71
|
-
string,
|
|
72
|
-
JSONSchema4
|
|
73
|
-
>
|
|
74
|
-
export {}
|
|
1
|
+
import { Options as SortArraysOptions } from '../sort-arrays/types.js'
|
|
2
|
+
export type Options = SortArraysOptions
|
|
@@ -14,7 +14,7 @@ export declare let defaultOptions: Required<Options[number]>
|
|
|
14
14
|
export declare let jsonSchema: JSONSchema4
|
|
15
15
|
declare const _default: import('@typescript-eslint/utils/ts-eslint').RuleModule<
|
|
16
16
|
MessageId,
|
|
17
|
-
|
|
17
|
+
import('...js').SortArraysOptions,
|
|
18
18
|
{
|
|
19
19
|
recommended?: boolean
|
|
20
20
|
},
|
|
@@ -1,30 +1,33 @@
|
|
|
1
|
-
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
2
1
|
import {
|
|
2
|
+
buildCommonJsonSchemas,
|
|
3
3
|
buildUseConfigurationIfJsonSchema,
|
|
4
4
|
matchesAstSelectorJsonSchema,
|
|
5
|
-
buildCommonJsonSchemas,
|
|
6
5
|
} from '../utils/json-schemas/common-json-schemas.js'
|
|
6
|
+
import { buildCommonGroupsJsonSchemas } from '../utils/json-schemas/common-groups-json-schemas.js'
|
|
7
7
|
import {
|
|
8
|
-
partitionByNewLineJsonSchema,
|
|
9
|
-
partitionByCommentJsonSchema,
|
|
10
|
-
} from '../utils/json-schemas/common-partition-json-schemas.js'
|
|
11
|
-
import {
|
|
12
|
-
ORDER_ERROR,
|
|
13
|
-
GROUP_ORDER_ERROR,
|
|
14
8
|
EXTRA_SPACING_ERROR,
|
|
9
|
+
GROUP_ORDER_ERROR,
|
|
15
10
|
MISSED_SPACING_ERROR,
|
|
11
|
+
ORDER_ERROR,
|
|
16
12
|
} from '../utils/report-errors.js'
|
|
17
|
-
import {
|
|
18
|
-
|
|
13
|
+
import {
|
|
14
|
+
partitionByCommentJsonSchema,
|
|
15
|
+
partitionByNewLineJsonSchema,
|
|
16
|
+
} from '../utils/json-schemas/common-partition-json-schemas.js'
|
|
19
17
|
import { buildAstListeners } from '../utils/build-ast-listeners.js'
|
|
20
18
|
import { createEslintRule } from '../utils/create-eslint-rule.js'
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
import { additionalCustomGroupMatchOptionsJsonSchema } from './sort-arrays/types.js'
|
|
20
|
+
import { sortArray } from './sort-arrays/sort-array.js'
|
|
21
|
+
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
22
|
+
/**
|
|
23
|
+
* Cache computed groups by modifiers and selectors for performance.
|
|
24
|
+
*/
|
|
25
|
+
var cachedGroupsByModifiersAndSelectors = /* @__PURE__ */ new Map()
|
|
26
|
+
var ORDER_ERROR_ID = 'unexpectedArrayIncludesOrder'
|
|
27
|
+
var GROUP_ORDER_ERROR_ID = 'unexpectedArrayIncludesGroupOrder'
|
|
28
|
+
var EXTRA_SPACING_ERROR_ID = 'extraSpacingBetweenArrayIncludesMembers'
|
|
29
|
+
var MISSED_SPACING_ERROR_ID = 'missedSpacingBetweenArrayIncludesMembers'
|
|
30
|
+
var defaultOptions = {
|
|
28
31
|
fallbackSort: { type: 'unsorted' },
|
|
29
32
|
newlinesInside: 'newlinesBetween',
|
|
30
33
|
specialCharacters: 'keep',
|
|
@@ -40,7 +43,7 @@ let defaultOptions = {
|
|
|
40
43
|
alphabet: '',
|
|
41
44
|
order: 'asc',
|
|
42
45
|
}
|
|
43
|
-
|
|
46
|
+
var jsonSchema = {
|
|
44
47
|
items: {
|
|
45
48
|
properties: {
|
|
46
49
|
...buildCommonJsonSchemas(),
|
|
@@ -62,7 +65,7 @@ let jsonSchema = {
|
|
|
62
65
|
uniqueItems: true,
|
|
63
66
|
type: 'array',
|
|
64
67
|
}
|
|
65
|
-
|
|
68
|
+
var sort_array_includes_default = createEslintRule({
|
|
66
69
|
meta: {
|
|
67
70
|
messages: {
|
|
68
71
|
[MISSED_SPACING_ERROR_ID]: MISSED_SPACING_ERROR,
|
|
@@ -99,6 +102,7 @@ function sortPotentiallyValidArray({ matchedAstSelectors, context, node }) {
|
|
|
99
102
|
unexpectedGroupOrder: GROUP_ORDER_ERROR_ID,
|
|
100
103
|
unexpectedOrder: ORDER_ERROR_ID,
|
|
101
104
|
},
|
|
105
|
+
mustHaveMatchedContextOptions: false,
|
|
102
106
|
cachedGroupsByModifiersAndSelectors,
|
|
103
107
|
matchedAstSelectors,
|
|
104
108
|
defaultOptions,
|
|
@@ -124,4 +128,4 @@ function sortPotentiallyValidArray({ matchedAstSelectors, context, node }) {
|
|
|
124
128
|
return true
|
|
125
129
|
}
|
|
126
130
|
}
|
|
127
|
-
export {
|
|
131
|
+
export { sort_array_includes_default as default, defaultOptions, jsonSchema }
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
2
1
|
import { UnreachableCaseError } from '../../utils/unreachable-case-error.js'
|
|
2
|
+
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
3
|
+
/**
|
|
4
|
+
* Computes array elements for the given expression.
|
|
5
|
+
*
|
|
6
|
+
* @param expression - The expression to compute array elements from.
|
|
7
|
+
* @returns An array of elements if the expression is an array or a new
|
|
8
|
+
* expression, otherwise null.
|
|
9
|
+
*/
|
|
3
10
|
function computeArrayElements(expression) {
|
|
4
11
|
switch (expression.type) {
|
|
5
12
|
case AST_NODE_TYPES.ArrayExpression:
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { passesAllNamesMatchPatternFilter } from '../../utils/context-matching/passes-all-names-match-pattern-filter.js'
|
|
2
2
|
import { passesAstSelectorFilter } from '../../utils/context-matching/passes-ast-selector-filter.js'
|
|
3
3
|
import { computeNodeName } from './compute-node-name.js'
|
|
4
|
+
/**
|
|
5
|
+
* Computes the matched context options for a given array node.
|
|
6
|
+
*
|
|
7
|
+
* @param params - Parameters.
|
|
8
|
+
* @param params.matchedAstSelectors - The matched AST selectors for an array
|
|
9
|
+
* node.
|
|
10
|
+
* @param params.elements - The array elements to compute the context options
|
|
11
|
+
* for.
|
|
12
|
+
* @param params.context - The rule context.
|
|
13
|
+
* @returns The matched context options or undefined if none match.
|
|
14
|
+
*/
|
|
4
15
|
function computeMatchedContextOptions({
|
|
5
16
|
matchedAstSelectors,
|
|
6
17
|
elements,
|
|
@@ -9,10 +20,17 @@ function computeMatchedContextOptions({
|
|
|
9
20
|
let nodeNames = elements
|
|
10
21
|
.filter(element => element !== null)
|
|
11
22
|
.map(element =>
|
|
12
|
-
computeNodeName({
|
|
23
|
+
computeNodeName({
|
|
24
|
+
sourceCode: context.sourceCode,
|
|
25
|
+
node: element,
|
|
26
|
+
}),
|
|
13
27
|
)
|
|
14
28
|
return context.options.find(options =>
|
|
15
|
-
isContextOptionMatching({
|
|
29
|
+
isContextOptionMatching({
|
|
30
|
+
matchedAstSelectors,
|
|
31
|
+
nodeNames,
|
|
32
|
+
options,
|
|
33
|
+
}),
|
|
16
34
|
)
|
|
17
35
|
}
|
|
18
36
|
function isContextOptionMatching({ matchedAstSelectors, nodeNames, options }) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
2
|
+
/**
|
|
3
|
+
* Computes the name of an array member.
|
|
4
|
+
*
|
|
5
|
+
* @param props - The parameters object.
|
|
6
|
+
* @param props.sourceCode - ESLint source code object for text extraction.
|
|
7
|
+
* @param props.node - The AST node representing an array member.
|
|
8
|
+
* @returns The name of the array member.
|
|
9
|
+
*/
|
|
10
|
+
function computeNodeName({ sourceCode, node }) {
|
|
11
|
+
return node.type === AST_NODE_TYPES.Literal ?
|
|
12
|
+
`${node.value}`
|
|
13
|
+
: sourceCode.getText(node)
|
|
14
|
+
}
|
|
15
|
+
export { computeNodeName }
|
|
@@ -3,6 +3,7 @@ import { TSESTree } from '@typescript-eslint/types'
|
|
|
3
3
|
import { Options } from './types.js'
|
|
4
4
|
export declare function sortArray<MessageIds extends string>({
|
|
5
5
|
cachedGroupsByModifiersAndSelectors,
|
|
6
|
+
mustHaveMatchedContextOptions,
|
|
6
7
|
availableMessageIds,
|
|
7
8
|
matchedAstSelectors,
|
|
8
9
|
defaultOptions,
|
|
@@ -20,4 +21,5 @@ export declare function sortArray<MessageIds extends string>({
|
|
|
20
21
|
context: Readonly<RuleContext<MessageIds, Options>>
|
|
21
22
|
defaultOptions: Required<Options[number]>
|
|
22
23
|
matchedAstSelectors: ReadonlySet<string>
|
|
24
|
+
mustHaveMatchedContextOptions: boolean
|
|
23
25
|
}): void
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
2
1
|
import { validateNewlinesAndPartitionConfiguration } from '../../utils/validate-newlines-and-partition-configuration.js'
|
|
3
2
|
import { defaultComparatorByOptionsComputer } from '../../utils/compare/default-comparator-by-options-computer.js'
|
|
4
3
|
import { buildOptionsByGroupIndexComputer } from '../../utils/build-options-by-group-index-computer.js'
|
|
5
4
|
import { validateCustomSortConfiguration } from '../../utils/validate-custom-sort-configuration.js'
|
|
6
5
|
import { validateGroupsConfiguration } from '../../utils/validate-groups-configuration.js'
|
|
7
6
|
import { generatePredefinedGroups } from '../../utils/generate-predefined-groups.js'
|
|
8
|
-
import { computeMatchedContextOptions } from './compute-matched-context-options.js'
|
|
9
7
|
import { getEslintDisabledLines } from '../../utils/get-eslint-disabled-lines.js'
|
|
10
8
|
import { doesCustomGroupMatch } from '../../utils/does-custom-group-match.js'
|
|
11
9
|
import { isNodeEslintDisabled } from '../../utils/is-node-eslint-disabled.js'
|
|
12
10
|
import { sortNodesByGroups } from '../../utils/sort-nodes-by-groups.js'
|
|
13
|
-
import { computeArrayElements } from './compute-array-elements.js'
|
|
14
11
|
import { reportAllErrors } from '../../utils/report-all-errors.js'
|
|
15
12
|
import { shouldPartition } from '../../utils/should-partition.js'
|
|
16
13
|
import { computeGroup } from '../../utils/compute-group.js'
|
|
17
14
|
import { rangeToDiff } from '../../utils/range-to-diff.js'
|
|
18
15
|
import { getSettings } from '../../utils/get-settings.js'
|
|
19
|
-
import { computeNodeName } from './compute-node-name.js'
|
|
20
16
|
import { isSortable } from '../../utils/is-sortable.js'
|
|
21
17
|
import { complete } from '../../utils/complete.js'
|
|
22
18
|
import { allSelectors } from './types.js'
|
|
19
|
+
import { computeNodeName } from './compute-node-name.js'
|
|
20
|
+
import { computeMatchedContextOptions } from './compute-matched-context-options.js'
|
|
21
|
+
import { computeArrayElements } from './compute-array-elements.js'
|
|
22
|
+
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
|
|
23
23
|
function sortArray({
|
|
24
24
|
cachedGroupsByModifiersAndSelectors,
|
|
25
|
+
mustHaveMatchedContextOptions,
|
|
25
26
|
availableMessageIds,
|
|
26
27
|
matchedAstSelectors,
|
|
27
28
|
defaultOptions,
|
|
@@ -42,6 +43,9 @@ function sortArray({
|
|
|
42
43
|
elements,
|
|
43
44
|
context,
|
|
44
45
|
})
|
|
46
|
+
if (mustHaveMatchedContextOptions && !matchedContextOptions) {
|
|
47
|
+
return
|
|
48
|
+
}
|
|
45
49
|
let options = complete(matchedContextOptions, settings, defaultOptions)
|
|
46
50
|
validateCustomSortConfiguration(options)
|
|
47
51
|
validateGroupsConfiguration({
|
|
@@ -64,13 +68,11 @@ function sortArray({
|
|
|
64
68
|
accumulator.push([])
|
|
65
69
|
return accumulator
|
|
66
70
|
}
|
|
67
|
-
let name = computeNodeName({
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
cache: cachedGroupsByModifiersAndSelectors,
|
|
71
|
-
selectors: [selector],
|
|
72
|
-
modifiers: [],
|
|
71
|
+
let name = computeNodeName({
|
|
72
|
+
node: element,
|
|
73
|
+
sourceCode,
|
|
73
74
|
})
|
|
75
|
+
let selector = 'literal'
|
|
74
76
|
let group = computeGroup({
|
|
75
77
|
customGroupMatcher: customGroup =>
|
|
76
78
|
doesCustomGroupMatch({
|
|
@@ -79,7 +81,11 @@ function sortArray({
|
|
|
79
81
|
modifiers: [],
|
|
80
82
|
customGroup,
|
|
81
83
|
}),
|
|
82
|
-
predefinedGroups
|
|
84
|
+
predefinedGroups: generatePredefinedGroups({
|
|
85
|
+
cache: cachedGroupsByModifiersAndSelectors,
|
|
86
|
+
selectors: [selector],
|
|
87
|
+
modifiers: [],
|
|
88
|
+
}),
|
|
83
89
|
options,
|
|
84
90
|
})
|
|
85
91
|
let sortingNode = {
|
|
@@ -109,23 +115,22 @@ function sortArray({
|
|
|
109
115
|
[[]],
|
|
110
116
|
)
|
|
111
117
|
function sortNodesExcludingEslintDisabled(ignoreEslintDisabledNodes) {
|
|
112
|
-
return formattedMembers.flatMap(
|
|
118
|
+
return formattedMembers.flatMap(nodes =>
|
|
113
119
|
sortNodesByGroups({
|
|
114
120
|
comparatorByOptionsComputer: defaultComparatorByOptionsComputer,
|
|
115
121
|
optionsByGroupIndexComputer,
|
|
116
122
|
ignoreEslintDisabledNodes,
|
|
117
123
|
groups: options.groups,
|
|
118
|
-
nodes
|
|
124
|
+
nodes,
|
|
119
125
|
}),
|
|
120
126
|
)
|
|
121
127
|
}
|
|
122
|
-
let nodes = formattedMembers.flat()
|
|
123
128
|
reportAllErrors({
|
|
124
129
|
sortNodesExcludingEslintDisabled,
|
|
125
130
|
availableMessageIds,
|
|
126
131
|
options,
|
|
127
132
|
context,
|
|
128
|
-
nodes,
|
|
133
|
+
nodes: formattedMembers.flat(),
|
|
129
134
|
})
|
|
130
135
|
}
|
|
131
136
|
export { sortArray }
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { JSONSchema4 } from '@typescript-eslint/utils/json-schema'
|
|
2
|
+
import { RegexOption, TypeOption } from '../../types/common-options.js'
|
|
3
|
+
import { AllCommonOptions } from '../../types/all-common-options.js'
|
|
4
|
+
/**
|
|
5
|
+
* Configuration options for the sort-array-includes rule.
|
|
6
|
+
*
|
|
7
|
+
* This rule enforces the sorting of arrays passed to the `.includes()` method,
|
|
8
|
+
* ensuring consistent ordering of array elements for better readability and
|
|
9
|
+
* maintainability.
|
|
10
|
+
*/
|
|
11
|
+
export type Options = Partial<
|
|
12
|
+
{
|
|
13
|
+
/**
|
|
14
|
+
* Conditional configuration based on pattern matching.
|
|
15
|
+
*/
|
|
16
|
+
useConfigurationIf: {
|
|
17
|
+
/**
|
|
18
|
+
* Regular expression pattern to match against all array element names.
|
|
19
|
+
* The rule is only applied when all names match this pattern.
|
|
20
|
+
*/
|
|
21
|
+
allNamesMatchPattern?: RegexOption
|
|
22
|
+
/**
|
|
23
|
+
* AST selector to match against ArrayExpression nodes.
|
|
24
|
+
*/
|
|
25
|
+
matchesAstSelector?: string
|
|
26
|
+
}
|
|
27
|
+
} & AllCommonOptions<
|
|
28
|
+
TypeOption,
|
|
29
|
+
AdditionalSortOptions,
|
|
30
|
+
CustomGroupMatchOptions
|
|
31
|
+
>
|
|
32
|
+
>[]
|
|
33
|
+
/**
|
|
34
|
+
* Represents the type of array element selector. Note: Spread elements are not
|
|
35
|
+
* sorted and act as partition boundaries.
|
|
36
|
+
*/
|
|
37
|
+
export type Selector = (typeof allSelectors)[number]
|
|
38
|
+
/**
|
|
39
|
+
* Additional configuration for a single custom group.
|
|
40
|
+
*
|
|
41
|
+
* Custom groups allow fine-grained control over how array elements are grouped
|
|
42
|
+
* and sorted based on their names and types.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* {
|
|
48
|
+
* "selector": "literal"
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
interface CustomGroupMatchOptions {
|
|
53
|
+
/**
|
|
54
|
+
* Specifies the type of array elements to include in this group. Only
|
|
55
|
+
* 'literal' is available since spread elements create partition boundaries
|
|
56
|
+
* and are not sorted.
|
|
57
|
+
*/
|
|
58
|
+
selector?: Selector
|
|
59
|
+
}
|
|
60
|
+
type AdditionalSortOptions = object
|
|
61
|
+
/**
|
|
62
|
+
* Complete list of available selectors for array elements. Used for validation
|
|
63
|
+
* and JSON schema generation.
|
|
64
|
+
*/
|
|
65
|
+
export declare let allSelectors: readonly ['literal']
|
|
66
|
+
/**
|
|
67
|
+
* Additional custom group match options JSON schema. Used by ESLint to validate
|
|
68
|
+
* rule options at configuration time.
|
|
69
|
+
*/
|
|
70
|
+
export declare let additionalCustomGroupMatchOptionsJsonSchema: Record<
|
|
71
|
+
string,
|
|
72
|
+
JSONSchema4
|
|
73
|
+
>
|
|
74
|
+
export {}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { buildCustomGroupSelectorJsonSchema } from '../../utils/json-schemas/common-groups-json-schemas.js'
|
|
2
|
+
/**
|
|
3
|
+
* Complete list of available selectors for array elements. Used for validation
|
|
4
|
+
* and JSON schema generation.
|
|
5
|
+
*/
|
|
6
|
+
var allSelectors = ['literal']
|
|
7
|
+
/**
|
|
8
|
+
* Additional custom group match options JSON schema. Used by ESLint to validate
|
|
9
|
+
* rule options at configuration time.
|
|
10
|
+
*/
|
|
11
|
+
var additionalCustomGroupMatchOptionsJsonSchema = {
|
|
12
|
+
selector: buildCustomGroupSelectorJsonSchema(allSelectors),
|
|
13
|
+
}
|
|
14
|
+
export { additionalCustomGroupMatchOptionsJsonSchema, allSelectors }
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Options } from './sort-arrays/types.js'
|
|
2
|
+
declare const ORDER_ERROR_ID = 'unexpectedArraysOrder'
|
|
3
|
+
declare const GROUP_ORDER_ERROR_ID = 'unexpectedArraysGroupOrder'
|
|
4
|
+
declare const EXTRA_SPACING_ERROR_ID = 'extraSpacingBetweenArraysMembers'
|
|
5
|
+
declare const MISSED_SPACING_ERROR_ID = 'missedSpacingBetweenArraysMembers'
|
|
6
|
+
type MessageId =
|
|
7
|
+
| typeof MISSED_SPACING_ERROR_ID
|
|
8
|
+
| typeof EXTRA_SPACING_ERROR_ID
|
|
9
|
+
| typeof GROUP_ORDER_ERROR_ID
|
|
10
|
+
| typeof ORDER_ERROR_ID
|
|
11
|
+
declare const _default: import('@typescript-eslint/utils/ts-eslint').RuleModule<
|
|
12
|
+
MessageId,
|
|
13
|
+
Options,
|
|
14
|
+
{
|
|
15
|
+
recommended?: boolean
|
|
16
|
+
},
|
|
17
|
+
import('@typescript-eslint/utils/ts-eslint').RuleListener
|
|
18
|
+
> & {
|
|
19
|
+
name: string
|
|
20
|
+
}
|
|
21
|
+
export default _default
|