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.
Files changed (249) hide show
  1. package/dist/index.d.ts +23 -0
  2. package/dist/index.js +57 -54
  3. package/dist/package.json.js +2 -2
  4. package/dist/rules/sort-array-includes/types.d.ts +2 -74
  5. package/dist/rules/sort-array-includes.d.ts +1 -1
  6. package/dist/rules/sort-array-includes.js +24 -20
  7. package/dist/rules/{sort-array-includes → sort-arrays}/compute-array-elements.js +8 -1
  8. package/dist/rules/{sort-array-includes → sort-arrays}/compute-matched-context-options.js +20 -2
  9. package/dist/rules/sort-arrays/compute-node-name.js +15 -0
  10. package/dist/rules/{sort-array-includes → sort-arrays}/sort-array.d.ts +2 -0
  11. package/dist/rules/{sort-array-includes → sort-arrays}/sort-array.js +20 -15
  12. package/dist/rules/sort-arrays/types.d.ts +74 -0
  13. package/dist/rules/sort-arrays/types.js +14 -0
  14. package/dist/rules/sort-arrays.d.ts +21 -0
  15. package/dist/rules/sort-arrays.js +111 -0
  16. package/dist/rules/sort-classes/compute-dependencies-by-sorting-node.js +11 -11
  17. package/dist/rules/sort-classes/compute-dependencies.js +21 -5
  18. package/dist/rules/sort-classes/compute-identifier-name-details.js +8 -1
  19. package/dist/rules/sort-classes/compute-matched-context-options.js +16 -3
  20. package/dist/rules/sort-classes/compute-overload-signature-groups.js +11 -6
  21. package/dist/rules/sort-classes/is-known-class-element.js +10 -0
  22. package/dist/rules/sort-classes/node-info/common-modifiers.d.ts +3 -3
  23. package/dist/rules/sort-classes/node-info/common-modifiers.js +26 -17
  24. package/dist/rules/sort-classes/node-info/compute-accessor-details.js +12 -3
  25. package/dist/rules/sort-classes/node-info/compute-index-signature-details.js +10 -1
  26. package/dist/rules/sort-classes/node-info/compute-method-details.js +16 -6
  27. package/dist/rules/sort-classes/node-info/compute-method-or-property-name-details.js +9 -1
  28. package/dist/rules/sort-classes/node-info/compute-property-details.js +20 -6
  29. package/dist/rules/sort-classes/node-info/compute-static-block-details.js +12 -0
  30. package/dist/rules/sort-classes/sort-class.js +73 -62
  31. package/dist/rules/sort-classes/types.d.ts +6 -0
  32. package/dist/rules/sort-classes/types.js +25 -10
  33. package/dist/rules/sort-classes.js +22 -18
  34. package/dist/rules/sort-decorators.js +38 -32
  35. package/dist/rules/sort-enums/build-comparator-by-options-computer.js +15 -4
  36. package/dist/rules/sort-enums/compute-dependencies-by-sorting-node.js +2 -2
  37. package/dist/rules/sort-enums/compute-dependencies.js +12 -0
  38. package/dist/rules/sort-enums/compute-expression-number-value.js +29 -0
  39. package/dist/rules/sort-enums/compute-matched-context-options.js +19 -2
  40. package/dist/rules/sort-enums/compute-node-name.js +8 -0
  41. package/dist/rules/sort-enums/sort-enum.js +46 -41
  42. package/dist/rules/sort-enums/types.js +10 -6
  43. package/dist/rules/sort-enums.js +19 -19
  44. package/dist/rules/sort-export-attributes/types.d.ts +2 -0
  45. package/dist/rules/sort-export-attributes.d.ts +1 -2
  46. package/dist/rules/sort-export-attributes.js +13 -13
  47. package/dist/rules/sort-exports/types.js +16 -4
  48. package/dist/rules/sort-exports.js +33 -31
  49. package/dist/rules/sort-heritage-clauses/compute-matched-context-options.js +15 -1
  50. package/dist/rules/sort-heritage-clauses/compute-node-name.js +11 -0
  51. package/dist/rules/sort-heritage-clauses/sort-heritage-clause.js +21 -18
  52. package/dist/rules/sort-heritage-clauses/types.js +4 -4
  53. package/dist/rules/sort-heritage-clauses.js +17 -17
  54. package/dist/rules/sort-import-attributes/compute-matched-context-options.js +17 -1
  55. package/dist/rules/sort-import-attributes/compute-node-name.js +11 -1
  56. package/dist/rules/sort-import-attributes/sort-import-or-export-attributes.js +12 -9
  57. package/dist/rules/sort-import-attributes.js +20 -20
  58. package/dist/rules/sort-imports/comparator-by-options-computer.js +16 -5
  59. package/dist/rules/sort-imports/compute-common-selectors.js +75 -12
  60. package/dist/rules/sort-imports/compute-dependencies.js +10 -1
  61. package/dist/rules/sort-imports/compute-dependency-names.js +9 -1
  62. package/dist/rules/sort-imports/compute-node-name.js +10 -3
  63. package/dist/rules/sort-imports/compute-specifier-modifiers.js +6 -0
  64. package/dist/rules/sort-imports/compute-specifier-name.js +1 -1
  65. package/dist/rules/sort-imports/get-typescript-import.js +14 -2
  66. package/dist/rules/sort-imports/is-non-external-reference-ts-import-equals.js +8 -0
  67. package/dist/rules/sort-imports/is-side-effect-import.js +10 -3
  68. package/dist/rules/sort-imports/is-side-effect-only-group.js +11 -1
  69. package/dist/rules/sort-imports/is-string-group-side-effect-only-group.js +9 -0
  70. package/dist/rules/sort-imports/matches-tsconfig-paths.js +32 -1
  71. package/dist/rules/sort-imports/read-closest-ts-config-by-path.js +41 -8
  72. package/dist/rules/sort-imports/types.js +19 -8
  73. package/dist/rules/sort-imports/validate-side-effects-configuration.js +23 -8
  74. package/dist/rules/sort-imports.js +90 -81
  75. package/dist/rules/sort-interfaces/types.d.ts +2 -0
  76. package/dist/rules/sort-interfaces.d.ts +1 -2
  77. package/dist/rules/sort-interfaces.js +11 -11
  78. package/dist/rules/sort-intersection-types/types.d.ts +2 -0
  79. package/dist/rules/sort-intersection-types.d.ts +1 -2
  80. package/dist/rules/sort-intersection-types.js +15 -12
  81. package/dist/rules/sort-jsx-props/compute-matched-context-options.js +12 -2
  82. package/dist/rules/sort-jsx-props/compute-node-name.js +7 -1
  83. package/dist/rules/sort-jsx-props/sort-jsx-object.js +33 -28
  84. package/dist/rules/sort-jsx-props/types.js +21 -9
  85. package/dist/rules/sort-jsx-props.js +17 -17
  86. package/dist/rules/sort-maps/compute-matched-context-options.js +19 -3
  87. package/dist/rules/sort-maps/compute-node-name.js +12 -0
  88. package/dist/rules/sort-maps/sort-potential-map.js +20 -17
  89. package/dist/rules/sort-maps/types.js +4 -4
  90. package/dist/rules/sort-maps.js +16 -16
  91. package/dist/rules/sort-modules/build-comparator-by-options-computer.js +1 -1
  92. package/dist/rules/sort-modules/build-usage-comparator.js +28 -8
  93. package/dist/rules/sort-modules/compute-dependencies-by-sorting-node.js +14 -12
  94. package/dist/rules/sort-modules/compute-dependencies.js +14 -4
  95. package/dist/rules/sort-modules/compute-node-details.js +35 -12
  96. package/dist/rules/sort-modules/compute-overload-signature-groups.js +14 -6
  97. package/dist/rules/sort-modules/is-arrow-function-node.js +9 -1
  98. package/dist/rules/sort-modules/is-property-or-accessor-node.js +7 -0
  99. package/dist/rules/sort-modules/types.d.ts +16 -10
  100. package/dist/rules/sort-modules/types.js +18 -14
  101. package/dist/rules/sort-modules.js +101 -68
  102. package/dist/rules/sort-named-exports/compute-matched-context-options.js +16 -1
  103. package/dist/rules/sort-named-exports/compute-node-name.js +8 -1
  104. package/dist/rules/sort-named-exports/sort-named-export.js +30 -25
  105. package/dist/rules/sort-named-exports/types.js +22 -8
  106. package/dist/rules/sort-named-exports.js +20 -20
  107. package/dist/rules/sort-named-imports/compute-matched-context-options.js +17 -2
  108. package/dist/rules/sort-named-imports/compute-node-name.js +8 -1
  109. package/dist/rules/sort-named-imports/sort-named-import.js +31 -26
  110. package/dist/rules/sort-named-imports/types.js +22 -8
  111. package/dist/rules/sort-named-imports.js +20 -20
  112. package/dist/rules/sort-object-types/comparator-by-options-computer.js +4 -4
  113. package/dist/rules/sort-object-types/compute-matched-context-options.js +19 -4
  114. package/dist/rules/sort-object-types/compute-node-name.js +12 -2
  115. package/dist/rules/sort-object-types/compute-node-parent-name.js +8 -1
  116. package/dist/rules/sort-object-types/is-member-optional.js +11 -1
  117. package/dist/rules/sort-object-types/is-node-function-type.js +55 -0
  118. package/dist/rules/sort-object-types/passes-declaration-comment-matches-filter.js +11 -2
  119. package/dist/rules/sort-object-types/passes-declaration-matches-pattern-filter.js +11 -1
  120. package/dist/rules/sort-object-types/sort-object-type-elements.js +35 -28
  121. package/dist/rules/sort-object-types/types.js +26 -10
  122. package/dist/rules/sort-object-types.js +28 -25
  123. package/dist/rules/sort-objects/comparator-by-options-computer.js +4 -4
  124. package/dist/rules/sort-objects/compute-dependencies.js +5 -3
  125. package/dist/rules/sort-objects/compute-dependency-names.js +1 -1
  126. package/dist/rules/sort-objects/compute-matched-context-options.js +21 -6
  127. package/dist/rules/sort-objects/compute-property-or-variable-declarator-name.js +17 -3
  128. package/dist/rules/sort-objects/is-style-component.js +6 -0
  129. package/dist/rules/sort-objects/passes-calling-function-name-pattern-filter.js +11 -2
  130. package/dist/rules/sort-objects/passes-declaration-comment-matches-filter.js +11 -2
  131. package/dist/rules/sort-objects/passes-declaration-matches-pattern-filter.js +13 -3
  132. package/dist/rules/sort-objects/sort-object.js +55 -51
  133. package/dist/rules/sort-objects/types.js +31 -15
  134. package/dist/rules/sort-objects.js +21 -21
  135. package/dist/rules/sort-sets/types.d.ts +2 -0
  136. package/dist/rules/sort-sets.d.ts +1 -2
  137. package/dist/rules/sort-sets.js +16 -12
  138. package/dist/rules/sort-switch-case/types.d.ts +2 -0
  139. package/dist/rules/sort-switch-case.d.ts +1 -2
  140. package/dist/rules/sort-switch-case.js +69 -37
  141. package/dist/rules/sort-union-types/compute-matched-context-options.js +20 -2
  142. package/dist/rules/sort-union-types/compute-node-name.js +12 -0
  143. package/dist/rules/sort-union-types/sort-union-or-intersection-types.js +19 -17
  144. package/dist/rules/sort-union-types/types.js +11 -2
  145. package/dist/rules/sort-union-types.js +23 -20
  146. package/dist/rules/sort-variable-declarations/compute-dependencies.js +8 -0
  147. package/dist/rules/sort-variable-declarations/compute-matched-context-options.js +21 -2
  148. package/dist/rules/sort-variable-declarations/compute-node-name.js +9 -1
  149. package/dist/rules/sort-variable-declarations/sort-variable-declaration.js +35 -30
  150. package/dist/rules/sort-variable-declarations/types.js +16 -9
  151. package/dist/rules/sort-variable-declarations.js +17 -17
  152. package/dist/types/scoped-regex-option.d.ts +1 -3
  153. package/dist/types/scoped-regex-option.js +1 -1
  154. package/dist/utils/alphabet.js +50 -40
  155. package/dist/utils/assert-is-never.d.ts +7 -0
  156. package/dist/utils/assert-is-never.js +8 -0
  157. package/dist/utils/build-ast-listeners.js +13 -3
  158. package/dist/utils/build-options-by-group-index-computer.js +19 -0
  159. package/dist/utils/build-sorting-node-by-node-map.js +6 -0
  160. package/dist/utils/compare/build-line-length-comparator.js +8 -4
  161. package/dist/utils/compare/build-string-formatter.js +21 -0
  162. package/dist/utils/compare/build-subgroup-order-comparator.js +7 -4
  163. package/dist/utils/compare/compare-alphabetically.js +20 -3
  164. package/dist/utils/compare/compare-by-custom-sort.js +7 -3
  165. package/dist/utils/compare/compare-naturally.js +23 -7
  166. package/dist/utils/compare/compute-comparators.js +19 -5
  167. package/dist/utils/compare/compute-ordered-value.js +10 -0
  168. package/dist/utils/compare/default-comparator-by-options-computer.js +2 -2
  169. package/dist/utils/compare/unsorted-comparator.js +1 -1
  170. package/dist/utils/complete.js +35 -1
  171. package/dist/utils/compute-deep-scope-references.js +7 -0
  172. package/dist/utils/compute-dependencies-by-sorting-node.js +14 -0
  173. package/dist/utils/compute-dependencies-outside-functions-by-sorting-node.js +12 -11
  174. package/dist/utils/compute-group-name.js +11 -0
  175. package/dist/utils/compute-group.js +35 -0
  176. package/dist/utils/compute-groups-names.js +8 -0
  177. package/dist/utils/compute-nodes-in-circular-dependencies.js +45 -0
  178. package/dist/utils/compute-overridden-options-by-group-index.js +40 -3
  179. package/dist/utils/compute-parent-nodes-with-types.js +12 -0
  180. package/dist/utils/context-matching/passes-all-names-match-pattern-filter.js +10 -0
  181. package/dist/utils/context-matching/passes-ast-selector-filter.js +10 -0
  182. package/dist/utils/convert-boolean-to-sign.js +26 -0
  183. package/dist/utils/create-eslint-rule.js +13 -1
  184. package/dist/utils/create-node-index-map.js +25 -0
  185. package/dist/utils/does-custom-group-match.js +77 -14
  186. package/dist/utils/does-sorting-node-have-one-of-dependency-names.js +9 -0
  187. package/dist/utils/generate-predefined-groups.js +26 -0
  188. package/dist/utils/get-array-combinations.js +7 -0
  189. package/dist/utils/get-comment-above-that-should-exist.js +47 -5
  190. package/dist/utils/get-comments-before.js +14 -2
  191. package/dist/utils/get-decorator-name.js +36 -0
  192. package/dist/utils/get-enum-members.js +25 -4
  193. package/dist/utils/get-eslint-disabled-lines.js +69 -7
  194. package/dist/utils/get-eslint-disabled-rules.js +81 -3
  195. package/dist/utils/get-group-index.js +31 -0
  196. package/dist/utils/get-lines-between.js +40 -5
  197. package/dist/utils/get-newlines-between-errors.js +39 -0
  198. package/dist/utils/get-newlines-between-option.js +44 -8
  199. package/dist/utils/get-node-decorators.js +20 -4
  200. package/dist/utils/get-node-range.js +58 -1
  201. package/dist/utils/get-options-with-clean-groups.js +62 -0
  202. package/dist/utils/get-settings.js +43 -1
  203. package/dist/utils/is-group-with-overrides-option.js +27 -0
  204. package/dist/utils/is-newlines-between-option.js +33 -0
  205. package/dist/utils/is-node-dependent-on-other-node.js +40 -0
  206. package/dist/utils/is-node-eslint-disabled.js +27 -0
  207. package/dist/utils/is-node-on-single-line.js +6 -0
  208. package/dist/utils/is-partition-comment.js +67 -0
  209. package/dist/utils/is-sortable.js +6 -0
  210. package/dist/utils/json-schemas/common-groups-json-schemas.js +92 -23
  211. package/dist/utils/json-schemas/common-json-schemas.js +65 -16
  212. package/dist/utils/json-schemas/common-partition-json-schemas.js +12 -6
  213. package/dist/utils/json-schemas/scoped-regex-json-schema.js +2 -2
  214. package/dist/utils/make-comment-above-fixes.js +60 -8
  215. package/dist/utils/make-comment-after-fixes.js +29 -0
  216. package/dist/utils/make-fixes.js +49 -0
  217. package/dist/utils/make-newlines-between-fixes.js +89 -10
  218. package/dist/utils/make-order-fixes.js +49 -5
  219. package/dist/utils/make-single-node-comment-after-fixes.js +49 -2
  220. package/dist/utils/matches.js +45 -0
  221. package/dist/utils/overload-signature/build-overload-signature-newlines-between-value-getter.d.ts +6 -3
  222. package/dist/utils/overload-signature/build-overload-signature-newlines-between-value-getter.js +11 -2
  223. package/dist/utils/overload-signature/overload-signature-group.js +4 -1
  224. package/dist/utils/overload-signature/populate-sorting-node-groups-with-overload-signature.js +10 -0
  225. package/dist/utils/pairwise.js +32 -3
  226. package/dist/utils/populate-sorting-node-groups-with-dependencies.js +9 -0
  227. package/dist/utils/range-contains-range.js +7 -0
  228. package/dist/utils/range-to-diff.js +37 -0
  229. package/dist/utils/report-all-errors.js +88 -14
  230. package/dist/utils/report-errors.js +90 -12
  231. package/dist/utils/scoped-regex/matches-scoped-expressions.js +23 -11
  232. package/dist/utils/scoped-regex/partition-patterns-by-scope.js +7 -2
  233. package/dist/utils/should-partition.js +83 -3
  234. package/dist/utils/sort-nodes-by-dependencies.js +91 -0
  235. package/dist/utils/sort-nodes-by-groups.js +73 -0
  236. package/dist/utils/sort-nodes.js +17 -0
  237. package/dist/utils/unreachable-case-error.js +34 -1
  238. package/dist/utils/validate-custom-sort-configuration.js +13 -0
  239. package/dist/utils/validate-groups-configuration.js +156 -4
  240. package/dist/utils/validate-newlines-and-partition-configuration.js +101 -7
  241. package/dist/utils/validate-no-duplicated-groups.js +7 -0
  242. package/dist/utils/validate-objects-inside-groups.js +58 -0
  243. package/package.json +2 -2
  244. package/readme.md +33 -31
  245. package/dist/rules/sort-array-includes/compute-node-name.js +0 -7
  246. package/dist/rules/sort-array-includes/types.js +0 -6
  247. /package/dist/rules/{sort-array-includes → sort-arrays}/compute-array-elements.d.ts +0 -0
  248. /package/dist/rules/{sort-array-includes → sort-arrays}/compute-matched-context-options.d.ts +0 -0
  249. /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 sortVariableDeclarations from './rules/sort-variable-declarations.js'
3
- import sortIntersectionTypes from './rules/sort-intersection-types.js'
4
- import sortImportAttributes from './rules/sort-import-attributes.js'
5
- import sortExportAttributes from './rules/sort-export-attributes.js'
6
- import sortHeritageClauses from './rules/sort-heritage-clauses.js'
7
- import sortArrayIncludes from './rules/sort-array-includes.js'
8
- import sortNamedImports from './rules/sort-named-imports.js'
9
- import sortNamedExports from './rules/sort-named-exports.js'
10
- import sortObjectTypes from './rules/sort-object-types.js'
11
- import sortSwitchCase from './rules/sort-switch-case.js'
12
- import sortUnionTypes from './rules/sort-union-types.js'
13
- import sortInterfaces from './rules/sort-interfaces.js'
14
- import sortDecorators from './rules/sort-decorators.js'
15
- import sortJsxProps from './rules/sort-jsx-props.js'
16
- import sortClasses from './rules/sort-classes.js'
17
- import sortImports from './rules/sort-imports.js'
18
- import sortExports from './rules/sort-exports.js'
19
- import sortObjects from './rules/sort-objects.js'
20
- import sortModules from './rules/sort-modules.js'
21
- import sortEnums from './rules/sort-enums.js'
22
- import sortMaps from './rules/sort-maps.js'
23
- import sortSets from './rules/sort-sets.js'
24
- let pluginName = 'perfectionist'
25
- let rules = {
26
- 'sort-variable-declarations': sortVariableDeclarations,
27
- 'sort-intersection-types': sortIntersectionTypes,
28
- 'sort-import-attributes': sortImportAttributes,
29
- 'sort-export-attributes': sortExportAttributes,
30
- 'sort-heritage-clauses': sortHeritageClauses,
31
- 'sort-array-includes': sortArrayIncludes,
32
- 'sort-named-imports': sortNamedImports,
33
- 'sort-named-exports': sortNamedExports,
34
- 'sort-object-types': sortObjectTypes,
35
- 'sort-union-types': sortUnionTypes,
36
- 'sort-switch-case': sortSwitchCase,
37
- 'sort-decorators': sortDecorators,
38
- 'sort-interfaces': sortInterfaces,
39
- 'sort-jsx-props': sortJsxProps,
40
- 'sort-modules': sortModules,
41
- 'sort-classes': sortClasses,
42
- 'sort-imports': sortImports,
43
- 'sort-exports': sortExports,
44
- 'sort-objects': sortObjects,
45
- 'sort-enums': sortEnums,
46
- 'sort-sets': sortSets,
47
- 'sort-maps': sortMaps,
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
- let plugin = {
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(plugin.rules).map(ruleName => [
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
- let configs = {
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
- const index = {
115
+ var eslint_plugin_perfectionist_default = {
113
116
  ...plugin,
114
117
  configs,
115
118
  }
116
- export { configs, index as default, rules }
119
+ export { configs, eslint_plugin_perfectionist_default as default, rules }
@@ -1,3 +1,3 @@
1
- const name = 'eslint-plugin-perfectionist'
2
- const version = '5.7.0'
1
+ var name = 'eslint-plugin-perfectionist'
2
+ var version = '5.9.0'
3
3
  export { name, version }
@@ -1,74 +1,2 @@
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 {}
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
- Options,
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 { buildCommonGroupsJsonSchemas } from '../utils/json-schemas/common-groups-json-schemas.js'
18
- import { additionalCustomGroupMatchOptionsJsonSchema } from './sort-array-includes/types.js'
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 { sortArray } from './sort-array-includes/sort-array.js'
22
- let cachedGroupsByModifiersAndSelectors = /* @__PURE__ */ new Map()
23
- const ORDER_ERROR_ID = 'unexpectedArrayIncludesOrder'
24
- const GROUP_ORDER_ERROR_ID = 'unexpectedArrayIncludesGroupOrder'
25
- const EXTRA_SPACING_ERROR_ID = 'extraSpacingBetweenArrayIncludesMembers'
26
- const MISSED_SPACING_ERROR_ID = 'missedSpacingBetweenArrayIncludesMembers'
27
- let defaultOptions = {
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
- let jsonSchema = {
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
- const sortArrayIncludes = createEslintRule({
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 { sortArrayIncludes as default, defaultOptions, jsonSchema }
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({ sourceCode: context.sourceCode, node: element }),
23
+ computeNodeName({
24
+ sourceCode: context.sourceCode,
25
+ node: element,
26
+ }),
13
27
  )
14
28
  return context.options.find(options =>
15
- isContextOptionMatching({ matchedAstSelectors, nodeNames, options }),
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({ node: element, sourceCode })
68
- let selector = 'literal'
69
- let predefinedGroups = generatePredefinedGroups({
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(nodes2 =>
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: nodes2,
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