eslint-plugin-perfectionist 4.15.1 → 5.1.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 (310) hide show
  1. package/dist/alphabet.d.ts +1 -202
  2. package/dist/index.d.ts +5 -46
  3. package/dist/index.js +86 -81
  4. package/dist/package.json.js +2 -5
  5. package/dist/rules/sort-array-includes/types.d.ts +70 -0
  6. package/dist/rules/sort-array-includes/types.js +3 -7
  7. package/dist/rules/sort-array-includes.d.ts +38 -0
  8. package/dist/rules/sort-array-includes.js +99 -134
  9. package/dist/rules/sort-classes/get-overload-signature-groups.d.ts +10 -0
  10. package/dist/rules/sort-classes/get-overload-signature-groups.js +3 -5
  11. package/dist/rules/sort-classes/types.d.ts +103 -0
  12. package/dist/rules/sort-classes/types.js +10 -12
  13. package/dist/rules/sort-classes.d.ts +19 -0
  14. package/dist/rules/sort-classes.js +104 -105
  15. package/dist/rules/sort-decorators/types.d.ts +24 -0
  16. package/dist/rules/sort-decorators.d.ts +17 -0
  17. package/dist/rules/sort-decorators.js +128 -105
  18. package/dist/rules/sort-enums/build-comparator-by-options-computer.d.ts +16 -0
  19. package/dist/rules/sort-enums/build-comparator-by-options-computer.js +67 -0
  20. package/dist/rules/sort-enums/types.d.ts +52 -0
  21. package/dist/rules/sort-enums/types.js +3 -6
  22. package/dist/rules/sort-enums.d.ts +19 -0
  23. package/dist/rules/sort-enums.js +105 -148
  24. package/dist/rules/sort-export-attributes/types.d.ts +15 -0
  25. package/dist/rules/sort-export-attributes.d.ts +18 -0
  26. package/dist/rules/sort-export-attributes.js +178 -0
  27. package/dist/rules/sort-exports/types.d.ts +72 -0
  28. package/dist/rules/sort-exports/types.js +15 -11
  29. package/dist/rules/sort-exports.d.ts +20 -0
  30. package/dist/rules/sort-exports.js +143 -120
  31. package/dist/rules/sort-heritage-clauses/types.d.ts +11 -0
  32. package/dist/rules/sort-heritage-clauses.d.ts +17 -0
  33. package/dist/rules/sort-heritage-clauses.js +113 -62
  34. package/dist/rules/sort-import-attributes/types.d.ts +15 -0
  35. package/dist/rules/sort-import-attributes.d.ts +18 -0
  36. package/dist/rules/sort-import-attributes.js +178 -0
  37. package/dist/rules/sort-imports/comparator-by-options-computer.d.ts +6 -0
  38. package/dist/rules/sort-imports/comparator-by-options-computer.js +31 -0
  39. package/dist/rules/sort-imports/compute-common-selectors.d.ts +52 -0
  40. package/dist/rules/sort-imports/compute-common-selectors.js +9 -13
  41. package/dist/rules/sort-imports/compute-dependencies.d.ts +13 -0
  42. package/dist/rules/sort-imports/compute-dependencies.js +46 -0
  43. package/dist/rules/sort-imports/compute-dependency-names.d.ts +20 -0
  44. package/dist/rules/sort-imports/compute-dependency-names.js +28 -0
  45. package/dist/rules/sort-imports/compute-node-name.d.ts +20 -0
  46. package/dist/rules/sort-imports/compute-node-name.js +31 -0
  47. package/dist/rules/sort-imports/compute-specifier-modifiers.d.ts +15 -0
  48. package/dist/rules/sort-imports/compute-specifier-modifiers.js +25 -0
  49. package/dist/rules/sort-imports/get-typescript-import.d.ts +7 -0
  50. package/dist/rules/sort-imports/get-typescript-import.js +3 -17
  51. package/dist/rules/sort-imports/is-non-external-reference-ts-import-equals.d.ts +15 -0
  52. package/dist/rules/sort-imports/is-non-external-reference-ts-import-equals.js +8 -0
  53. package/dist/rules/sort-imports/is-side-effect-import.d.ts +20 -0
  54. package/dist/rules/sort-imports/is-side-effect-import.js +19 -0
  55. package/dist/rules/sort-imports/is-side-effect-only-group.d.ts +14 -0
  56. package/dist/rules/sort-imports/is-side-effect-only-group.js +8 -12
  57. package/dist/rules/sort-imports/is-string-group-side-effect-only-group.d.ts +12 -0
  58. package/dist/rules/sort-imports/is-string-group-side-effect-only-group.js +4 -0
  59. package/dist/rules/sort-imports/matches-tsconfig-paths.d.ts +20 -0
  60. package/dist/rules/sort-imports/matches-tsconfig-paths.js +1 -3
  61. package/dist/rules/sort-imports/read-closest-ts-config-by-path.d.ts +58 -0
  62. package/dist/rules/sort-imports/read-closest-ts-config-by-path.js +11 -39
  63. package/dist/rules/sort-imports/types.d.ts +148 -0
  64. package/dist/rules/sort-imports/types.js +15 -21
  65. package/dist/rules/sort-imports/validate-side-effects-configuration.d.ts +21 -0
  66. package/dist/rules/sort-imports/validate-side-effects-configuration.js +9 -10
  67. package/dist/rules/sort-imports.d.ts +22 -0
  68. package/dist/rules/sort-imports.js +215 -383
  69. package/dist/rules/sort-interfaces.d.ts +17 -0
  70. package/dist/rules/sort-interfaces.js +37 -43
  71. package/dist/rules/sort-intersection-types.d.ts +17 -0
  72. package/dist/rules/sort-intersection-types.js +25 -16
  73. package/dist/rules/sort-jsx-props/types.d.ts +93 -0
  74. package/dist/rules/sort-jsx-props/types.js +10 -12
  75. package/dist/rules/sort-jsx-props.d.ts +18 -0
  76. package/dist/rules/sort-jsx-props.js +115 -131
  77. package/dist/rules/sort-maps/types.d.ts +37 -0
  78. package/dist/rules/sort-maps.d.ts +18 -0
  79. package/dist/rules/sort-maps.js +80 -79
  80. package/dist/rules/sort-modules/types.d.ts +76 -0
  81. package/dist/rules/sort-modules/types.js +9 -11
  82. package/dist/rules/sort-modules.d.ts +20 -0
  83. package/dist/rules/sort-modules.js +103 -101
  84. package/dist/rules/sort-named-exports/compute-node-name.d.ts +12 -0
  85. package/dist/rules/sort-named-exports/compute-node-name.js +15 -0
  86. package/dist/rules/sort-named-exports/types.d.ts +74 -0
  87. package/dist/rules/sort-named-exports/types.js +7 -10
  88. package/dist/rules/sort-named-exports.d.ts +17 -0
  89. package/dist/rules/sort-named-exports.js +112 -133
  90. package/dist/rules/sort-named-imports/compute-node-name.d.ts +12 -0
  91. package/dist/rules/sort-named-imports/compute-node-name.js +17 -0
  92. package/dist/rules/sort-named-imports/types.d.ts +75 -0
  93. package/dist/rules/sort-named-imports/types.js +7 -10
  94. package/dist/rules/sort-named-imports.d.ts +17 -0
  95. package/dist/rules/sort-named-imports.js +114 -135
  96. package/dist/rules/sort-object-types/build-options-by-group-index-computer.d.ts +18 -0
  97. package/dist/rules/sort-object-types/build-options-by-group-index-computer.js +33 -0
  98. package/dist/rules/sort-object-types/comparator-by-options-computer.d.ts +6 -0
  99. package/dist/rules/sort-object-types/comparator-by-options-computer.js +36 -0
  100. package/dist/rules/sort-object-types/compute-matched-context-options.d.ts +24 -0
  101. package/dist/rules/sort-object-types/compute-matched-context-options.js +81 -0
  102. package/dist/rules/sort-object-types/compute-node-name.d.ts +17 -0
  103. package/dist/rules/sort-object-types/compute-node-name.js +46 -0
  104. package/dist/rules/sort-object-types/compute-node-parent-name.d.ts +13 -0
  105. package/dist/rules/sort-object-types/compute-node-parent-name.js +38 -0
  106. package/dist/rules/sort-object-types/is-member-optional.d.ts +17 -0
  107. package/dist/rules/sort-object-types/is-member-optional.js +10 -7
  108. package/dist/rules/sort-object-types/passes-declaration-comment-matches-filter.d.ts +21 -0
  109. package/dist/rules/sort-object-types/passes-declaration-comment-matches-filter.js +40 -0
  110. package/dist/rules/sort-object-types/passes-declaration-matches-pattern-filter.d.ts +22 -0
  111. package/dist/rules/sort-object-types/passes-declaration-matches-pattern-filter.js +19 -0
  112. package/dist/rules/sort-object-types/types.d.ts +174 -0
  113. package/dist/rules/sort-object-types/types.js +23 -18
  114. package/dist/rules/sort-object-types.d.ts +38 -0
  115. package/dist/rules/sort-object-types.js +216 -292
  116. package/dist/rules/sort-objects/compute-matched-context-options.d.ts +24 -0
  117. package/dist/rules/sort-objects/compute-matched-context-options.js +124 -0
  118. package/dist/rules/sort-objects/compute-property-or-variable-declarator-name.d.ts +17 -0
  119. package/dist/rules/sort-objects/compute-property-or-variable-declarator-name.js +24 -0
  120. package/dist/rules/sort-objects/is-style-node.d.ts +8 -0
  121. package/dist/rules/sort-objects/is-style-node.js +32 -0
  122. package/dist/rules/sort-objects/passes-calling-function-name-pattern-filter.d.ts +21 -0
  123. package/dist/rules/sort-objects/passes-calling-function-name-pattern-filter.js +18 -0
  124. package/dist/rules/sort-objects/passes-declaration-comment-matches-filter.d.ts +21 -0
  125. package/dist/rules/sort-objects/passes-declaration-comment-matches-filter.js +38 -0
  126. package/dist/rules/sort-objects/passes-declaration-matches-pattern-filter.d.ts +22 -0
  127. package/dist/rules/sort-objects/passes-declaration-matches-pattern-filter.js +25 -0
  128. package/dist/rules/sort-objects/types.d.ts +142 -0
  129. package/dist/rules/sort-objects/types.js +31 -12
  130. package/dist/rules/sort-objects.d.ts +9 -0
  131. package/dist/rules/sort-objects.js +186 -316
  132. package/dist/rules/sort-sets.d.ts +17 -0
  133. package/dist/rules/sort-sets.js +25 -17
  134. package/dist/rules/sort-switch-case.d.ts +10 -0
  135. package/dist/rules/sort-switch-case.js +64 -73
  136. package/dist/rules/sort-union-types/types.d.ts +55 -0
  137. package/dist/rules/sort-union-types/types.js +3 -7
  138. package/dist/rules/sort-union-types.d.ts +39 -0
  139. package/dist/rules/sort-union-types.js +82 -83
  140. package/dist/rules/sort-variable-declarations/types.d.ts +43 -0
  141. package/dist/rules/sort-variable-declarations/types.js +3 -7
  142. package/dist/rules/sort-variable-declarations.d.ts +22 -0
  143. package/dist/rules/sort-variable-declarations.js +89 -81
  144. package/dist/types/common-groups-options.d.ts +223 -0
  145. package/dist/types/common-options.d.ts +241 -0
  146. package/dist/types/common-partition-options.d.ts +55 -0
  147. package/dist/types/join.d.ts +19 -0
  148. package/dist/types/node-of-type.d.ts +5 -0
  149. package/dist/types/scoped-regex-option.d.ts +6 -0
  150. package/dist/types/scoped-regex-option.js +2 -0
  151. package/dist/types/sorting-node.d.ts +96 -0
  152. package/dist/utils/alphabet.d.ts +201 -0
  153. package/dist/utils/alphabet.js +5 -9
  154. package/dist/utils/build-default-options-by-group-index-computer.d.ts +29 -0
  155. package/dist/utils/build-default-options-by-group-index-computer.js +5 -0
  156. package/dist/utils/compare/build-line-length-comparator.d.ts +13 -0
  157. package/dist/utils/compare/build-line-length-comparator.js +10 -0
  158. package/dist/utils/compare/build-string-formatter.d.ts +29 -0
  159. package/dist/utils/compare/build-string-formatter.js +30 -0
  160. package/dist/utils/compare/compare-alphabetically.d.ts +29 -0
  161. package/dist/utils/compare/compare-alphabetically.js +15 -0
  162. package/dist/utils/compare/compare-by-custom-sort.d.ts +14 -0
  163. package/dist/utils/compare/compare-by-custom-sort.js +47 -0
  164. package/dist/utils/compare/compare-naturally.d.ts +30 -0
  165. package/dist/utils/compare/compare-naturally.js +19 -0
  166. package/dist/utils/compare/compute-comparators.d.ts +25 -0
  167. package/dist/utils/compare/compute-comparators.js +13 -0
  168. package/dist/utils/compare/compute-ordered-value.d.ts +15 -0
  169. package/dist/utils/compare/compute-ordered-value.js +13 -0
  170. package/dist/utils/compare/default-comparator-by-options-computer.d.ts +16 -0
  171. package/dist/utils/compare/default-comparator-by-options-computer.js +24 -0
  172. package/dist/utils/compare/unsorted-comparator.d.ts +3 -0
  173. package/dist/utils/compare/unsorted-comparator.js +2 -0
  174. package/dist/utils/complete.d.ts +33 -0
  175. package/dist/utils/complete.js +1 -3
  176. package/dist/utils/compute-group-name.d.ts +13 -0
  177. package/dist/utils/compute-group-name.js +22 -0
  178. package/dist/utils/compute-group.d.ts +69 -0
  179. package/dist/utils/compute-group.js +9 -24
  180. package/dist/utils/compute-groups-names.d.ts +8 -0
  181. package/dist/utils/compute-groups-names.js +25 -0
  182. package/dist/utils/compute-nodes-in-circular-dependencies.d.ts +33 -0
  183. package/dist/utils/compute-nodes-in-circular-dependencies.js +1 -3
  184. package/dist/utils/compute-overridden-options-by-group-index.d.ts +48 -0
  185. package/dist/utils/compute-overridden-options-by-group-index.js +30 -0
  186. package/dist/utils/compute-parent-nodes-with-types.d.ts +20 -0
  187. package/dist/utils/compute-parent-nodes-with-types.js +13 -0
  188. package/dist/utils/convert-boolean-to-sign.d.ts +21 -0
  189. package/dist/utils/convert-boolean-to-sign.js +1 -3
  190. package/dist/utils/create-eslint-rule.d.ts +48 -0
  191. package/dist/utils/create-eslint-rule.js +3 -5
  192. package/dist/utils/create-node-index-map.d.ts +27 -0
  193. package/dist/utils/create-node-index-map.js +1 -3
  194. package/dist/utils/does-custom-group-match.d.ts +119 -0
  195. package/dist/utils/does-custom-group-match.js +5 -7
  196. package/dist/utils/filter-options-by-all-names-match.d.ts +84 -0
  197. package/dist/utils/filter-options-by-all-names-match.js +11 -0
  198. package/dist/utils/generate-predefined-groups.d.ts +25 -0
  199. package/dist/utils/generate-predefined-groups.js +3 -5
  200. package/dist/utils/get-array-combinations.d.ts +11 -0
  201. package/dist/utils/get-array-combinations.js +1 -3
  202. package/dist/utils/get-comment-above-that-should-exist.d.ts +77 -0
  203. package/dist/utils/get-comment-above-that-should-exist.js +14 -16
  204. package/dist/utils/get-comments-before.d.ts +24 -0
  205. package/dist/utils/get-comments-before.js +1 -3
  206. package/dist/utils/get-decorator-name.d.ts +36 -0
  207. package/dist/utils/get-decorator-name.js +1 -3
  208. package/dist/utils/get-enum-members.d.ts +25 -0
  209. package/dist/utils/get-enum-members.js +5 -4
  210. package/dist/utils/get-eslint-disabled-lines.d.ts +44 -0
  211. package/dist/utils/get-eslint-disabled-lines.js +8 -11
  212. package/dist/utils/get-eslint-disabled-rules.d.ts +48 -0
  213. package/dist/utils/get-eslint-disabled-rules.js +2 -4
  214. package/dist/utils/get-group-index.d.ts +38 -0
  215. package/dist/utils/get-group-index.js +23 -9
  216. package/dist/utils/get-lines-between.d.ts +38 -0
  217. package/dist/utils/get-lines-between.js +1 -3
  218. package/dist/utils/get-newlines-between-errors.d.ts +102 -0
  219. package/dist/utils/get-newlines-between-errors.js +5 -11
  220. package/dist/utils/get-newlines-between-option.d.ts +43 -0
  221. package/dist/utils/get-newlines-between-option.js +82 -110
  222. package/dist/utils/get-node-decorators.d.ts +33 -0
  223. package/dist/utils/get-node-decorators.js +5 -4
  224. package/dist/utils/get-node-range.d.ts +79 -0
  225. package/dist/utils/get-node-range.js +11 -15
  226. package/dist/utils/get-options-with-clean-groups.d.ts +55 -0
  227. package/dist/utils/get-options-with-clean-groups.js +1 -3
  228. package/dist/utils/get-settings.d.ts +52 -0
  229. package/dist/utils/get-settings.js +3 -4
  230. package/dist/utils/is-group-with-overrides-option.d.ts +33 -0
  231. package/dist/utils/is-group-with-overrides-option.js +4 -0
  232. package/dist/utils/is-newlines-between-option.d.ts +37 -0
  233. package/dist/utils/is-newlines-between-option.js +1 -3
  234. package/dist/utils/is-node-dependent-on-other-node.d.ts +42 -0
  235. package/dist/utils/is-node-dependent-on-other-node.js +1 -3
  236. package/dist/utils/is-node-eslint-disabled.d.ts +29 -0
  237. package/dist/utils/is-node-eslint-disabled.js +1 -3
  238. package/dist/utils/is-node-function-type.d.ts +48 -0
  239. package/dist/utils/is-node-function-type.js +1 -3
  240. package/dist/utils/is-node-on-single-line.d.ts +8 -0
  241. package/dist/utils/is-node-on-single-line.js +4 -0
  242. package/dist/utils/is-partition-comment.d.ts +64 -0
  243. package/dist/utils/is-partition-comment.js +7 -19
  244. package/dist/utils/is-sortable.d.ts +7 -0
  245. package/dist/utils/is-sortable.js +1 -3
  246. package/dist/utils/json-schemas/common-groups-json-schemas.d.ts +101 -0
  247. package/dist/utils/json-schemas/common-groups-json-schemas.js +217 -0
  248. package/dist/utils/json-schemas/common-json-schemas.d.ts +70 -0
  249. package/dist/utils/json-schemas/common-json-schemas.js +144 -0
  250. package/dist/utils/json-schemas/common-partition-json-schemas.d.ts +11 -0
  251. package/dist/utils/json-schemas/common-partition-json-schemas.js +35 -0
  252. package/dist/utils/json-schemas/scoped-regex-json-schema.d.ts +2 -0
  253. package/dist/utils/json-schemas/scoped-regex-json-schema.js +11 -0
  254. package/dist/utils/make-comment-above-fixes.d.ts +48 -0
  255. package/dist/utils/make-comment-above-fixes.js +21 -26
  256. package/dist/utils/make-comment-after-fixes.d.ts +46 -0
  257. package/dist/utils/make-comment-after-fixes.js +3 -5
  258. package/dist/utils/make-fixes.d.ts +91 -0
  259. package/dist/utils/make-fixes.js +10 -12
  260. package/dist/utils/make-newlines-between-fixes.d.ts +74 -0
  261. package/dist/utils/make-newlines-between-fixes.js +15 -24
  262. package/dist/utils/make-order-fixes.d.ts +70 -0
  263. package/dist/utils/make-order-fixes.js +4 -6
  264. package/dist/utils/make-single-node-comment-after-fixes.d.ts +46 -0
  265. package/dist/utils/make-single-node-comment-after-fixes.js +1 -3
  266. package/dist/utils/matches.d.ts +41 -0
  267. package/dist/utils/matches.js +1 -3
  268. package/dist/utils/pairwise.d.ts +32 -0
  269. package/dist/utils/pairwise.js +1 -3
  270. package/dist/utils/range-to-diff.d.ts +34 -0
  271. package/dist/utils/range-to-diff.js +1 -3
  272. package/dist/utils/report-all-errors.d.ts +179 -0
  273. package/dist/utils/report-all-errors.js +25 -34
  274. package/dist/utils/report-errors.d.ts +101 -0
  275. package/dist/utils/report-errors.js +13 -13
  276. package/dist/utils/scoped-regex/matches-scoped-expressions.d.ts +30 -0
  277. package/dist/utils/scoped-regex/matches-scoped-expressions.js +75 -0
  278. package/dist/utils/scoped-regex/partition-patterns-by-scope.d.ts +20 -0
  279. package/dist/utils/scoped-regex/partition-patterns-by-scope.js +33 -0
  280. package/dist/utils/should-partition.d.ts +68 -0
  281. package/dist/utils/should-partition.js +7 -9
  282. package/dist/utils/sort-nodes-by-dependencies.d.ts +99 -0
  283. package/dist/utils/sort-nodes-by-dependencies.js +5 -13
  284. package/dist/utils/sort-nodes-by-groups.d.ts +103 -0
  285. package/dist/utils/sort-nodes-by-groups.js +21 -17
  286. package/dist/utils/sort-nodes.d.ts +47 -0
  287. package/dist/utils/sort-nodes.js +13 -15
  288. package/dist/utils/unreachable-case-error.d.ts +40 -0
  289. package/dist/utils/unreachable-case-error.js +1 -3
  290. package/dist/utils/validate-custom-sort-configuration.d.ts +21 -0
  291. package/dist/utils/validate-custom-sort-configuration.js +19 -6
  292. package/dist/utils/validate-groups-configuration.d.ts +74 -0
  293. package/dist/utils/{validate-generated-groups-configuration.js → validate-groups-configuration.js} +13 -24
  294. package/dist/utils/validate-newlines-and-partition-configuration.d.ts +94 -0
  295. package/dist/utils/validate-newlines-and-partition-configuration.js +63 -14
  296. package/dist/utils/validate-no-duplicated-groups.d.ts +13 -0
  297. package/dist/utils/validate-no-duplicated-groups.js +7 -16
  298. package/dist/utils/validate-objects-inside-groups.d.ts +55 -0
  299. package/dist/utils/validate-objects-inside-groups.js +9 -11
  300. package/package.json +4 -5
  301. package/readme.md +2 -0
  302. package/dist/rules/sort-maps/types.js +0 -7
  303. package/dist/rules/sort-object-types/build-node-value-getter.js +0 -6
  304. package/dist/rules/sort-object-types/get-custom-groups-compare-options.js +0 -41
  305. package/dist/rules/sort-objects/get-first-node-parent-with-type.js +0 -16
  306. package/dist/utils/common-json-schemas.js +0 -316
  307. package/dist/utils/compare.js +0 -163
  308. package/dist/utils/get-custom-groups-compare-options.js +0 -46
  309. package/dist/utils/get-matching-context-options.js +0 -15
  310. package/dist/utils/is-comment-above-option.js +0 -6
@@ -1,203 +1,2 @@
1
- /**
2
- * Manages a customizable alphabet for sorting operations.
3
- *
4
- * Provides methods to generate, modify, and sort alphabets based on various
5
- * criteria including Unicode ranges, case prioritization, and locale-specific
6
- * ordering. Used by the 'custom' sort type to define character precedence.
7
- *
8
- * The class supports:
9
- *
10
- * - Generating alphabets from strings or Unicode ranges
11
- * - Case prioritization and manipulation
12
- * - Character positioning and removal
13
- * - Multiple sorting strategies (natural, locale, char code).
14
- *
15
- * @example
16
- * // Create a custom alphabet with specific character order
17
- * const alphabet = Alphabet.generateFrom('aAbBcC')
18
- * .prioritizeCase('uppercase')
19
- * .getCharacters()
20
- * // Returns: 'AaBbCc'
21
- */
22
- export declare class Alphabet {
23
- private characters
24
- private constructor()
25
- /**
26
- * Generates an alphabet from the given characters.
27
- *
28
- * @param values - The characters to generate the alphabet from.
29
- * @returns - The wrapped alphabet.
30
- */
31
- static generateFrom(values: string[] | string): Alphabet
32
- /**
33
- * Generates an alphabet containing relevant characters from the Unicode
34
- * standard. Contains the Unicode planes 0 and 1.
35
- *
36
- * @returns - The generated alphabet.
37
- */
38
- static generateRecommendedAlphabet(): Alphabet
39
- /**
40
- * Generates an alphabet containing all characters from the Unicode standard
41
- * except for irrelevant Unicode planes. Contains the Unicode planes 0, 1, 2
42
- * and 3.
43
- *
44
- * @returns - The generated alphabet.
45
- */
46
- static generateCompleteAlphabet(): Alphabet
47
- private static getCharactersWithCase
48
- /**
49
- * Generates an alphabet containing relevant characters from the Unicode
50
- * standard.
51
- *
52
- * @param maxCodePoint - The maximum code point to generate the alphabet to.
53
- * @returns - The generated alphabet.
54
- */
55
- private static generateAlphabetToRange
56
- /**
57
- * For each character with a lower and upper case, permutes the two cases so
58
- * that the alphabet is ordered by the case priority entered.
59
- *
60
- * @example
61
- * Alphabet.generateFrom('aAbBcdCD').prioritizeCase('uppercase') // Returns 'AaBbCDcd'.
62
- *
63
- * @param casePriority - The case to prioritize.
64
- * @returns - The same alphabet instance with the cases prioritized.
65
- */
66
- prioritizeCase(casePriority: 'lowercase' | 'uppercase'): this
67
- /**
68
- * Adds specific characters to the end of the alphabet.
69
- *
70
- * @example
71
- * Alphabet.generateFrom('ab').pushCharacters('cd')
72
- * // Returns 'abcd'
73
- *
74
- * @param values - The characters to push to the alphabet.
75
- * @returns - The same alphabet instance without the specified characters.
76
- */
77
- pushCharacters(values: string[] | string): this
78
- /**
79
- * Permutes characters with cases so that all characters with the entered
80
- * case are put before the other characters.
81
- *
82
- * @param caseToComeFirst - The case to put before the other characters.
83
- * @returns - The same alphabet instance with all characters with case
84
- * before all the characters with the other case.
85
- */
86
- placeAllWithCaseBeforeAllWithOtherCase(
87
- caseToComeFirst: 'uppercase' | 'lowercase',
88
- ): this
89
- /**
90
- * Places a specific character right before another character in the
91
- * alphabet.
92
- *
93
- * @example
94
- * Alphabet.generateFrom('ab-cd/').placeCharacterBefore({
95
- * characterBefore: '/',
96
- * characterAfter: '-',
97
- * })
98
- * // Returns 'ab/-cd'
99
- *
100
- * @param params - The parameters for the operation.
101
- * @param params.characterBefore - The character to come before
102
- * characterAfter.
103
- * @param params.characterAfter - The target character.
104
- * @returns - The same alphabet instance with the specific character
105
- * prioritized.
106
- */
107
- placeCharacterBefore({
108
- characterBefore,
109
- characterAfter,
110
- }: {
111
- characterBefore: string
112
- characterAfter: string
113
- }): this
114
- /**
115
- * Places a specific character right after another character in the
116
- * alphabet.
117
- *
118
- * @example
119
- * Alphabet.generateFrom('ab-cd/').placeCharacterAfter({
120
- * characterBefore: '/',
121
- * characterAfter: '-',
122
- * })
123
- * // Returns 'abcd/-'
124
- *
125
- * @param params - The parameters for the operation.
126
- * @param params.characterBefore - The target character.
127
- * @param params.characterAfter - The character to come after
128
- * characterBefore.
129
- * @returns - The same alphabet instance with the specific character
130
- * prioritized.
131
- */
132
- placeCharacterAfter({
133
- characterBefore,
134
- characterAfter,
135
- }: {
136
- characterBefore: string
137
- characterAfter: string
138
- }): this
139
- /**
140
- * Removes specific characters from the alphabet by their range.
141
- *
142
- * @param range - The Unicode range to remove characters from.
143
- * @param range.start - The starting Unicode codepoint.
144
- * @param range.end - The ending Unicode codepoint.
145
- * @returns - The same alphabet instance without the characters from the
146
- * specified range.
147
- */
148
- removeUnicodeRange({ start, end }: { start: number; end: number }): this
149
- /**
150
- * Sorts the alphabet by the sorting function provided.
151
- *
152
- * @param sortingFunction - The sorting function to use.
153
- * @returns - The same alphabet instance sorted by the sorting function
154
- * provided.
155
- */
156
- sortBy(
157
- sortingFunction: (characterA: string, characterB: string) => number,
158
- ): this
159
- /**
160
- * Sorts the alphabet by the natural order of the characters using
161
- * `natural-orderby`.
162
- *
163
- * @param locale - The locale to use for sorting.
164
- * @returns - The same alphabet instance sorted by the natural order of the
165
- * characters.
166
- */
167
- sortByNaturalSort(locale?: string): this
168
- /**
169
- * Removes specific characters from the alphabet.
170
- *
171
- * @example
172
- * Alphabet.generateFrom('abcd').removeCharacters('dcc')
173
- * // Returns 'ab'
174
- *
175
- * @param values - The characters to remove from the alphabet.
176
- * @returns - The same alphabet instance without the specified characters.
177
- */
178
- removeCharacters(values: string[] | string): this
179
- /**
180
- * Sorts the alphabet by the character code point.
181
- *
182
- * @returns - The same alphabet instance sorted by the character code point.
183
- */
184
- sortByCharCodeAt(): this
185
- /**
186
- * Sorts the alphabet by the locale order of the characters.
187
- *
188
- * @param locales - The locales to use for sorting.
189
- * @returns - The same alphabet instance sorted by the locale order of the
190
- * characters.
191
- */
192
- sortByLocaleCompare(locales?: Intl.LocalesArgument): this
193
- /**
194
- * Retrieves the characters from the alphabet.
195
- *
196
- * @returns The characters from the alphabet.
197
- */
198
- getCharacters(): string
199
- private placeCharacterBeforeOrAfter
200
- private getCharactersWithCase
201
- }
202
-
1
+ export * from './utils/alphabet.js'
203
2
  export {}
package/dist/index.d.ts CHANGED
@@ -1,46 +1,5 @@
1
- import { Linter } from 'eslint'
2
- import { Rule } from 'eslint'
3
-
4
- declare const _default: PluginConfig
5
-
6
- declare interface PluginConfig {
7
- rules: {
8
- 'sort-variable-declarations': Rule.RuleModule
9
- 'sort-intersection-types': Rule.RuleModule
10
- 'sort-heritage-clauses': Rule.RuleModule
11
- 'sort-array-includes': Rule.RuleModule
12
- 'sort-named-imports': Rule.RuleModule
13
- 'sort-named-exports': Rule.RuleModule
14
- 'sort-object-types': Rule.RuleModule
15
- 'sort-union-types': Rule.RuleModule
16
- 'sort-switch-case': Rule.RuleModule
17
- 'sort-interfaces': Rule.RuleModule
18
- 'sort-decorators': Rule.RuleModule
19
- 'sort-jsx-props': Rule.RuleModule
20
- 'sort-modules': Rule.RuleModule
21
- 'sort-classes': Rule.RuleModule
22
- 'sort-imports': Rule.RuleModule
23
- 'sort-exports': Rule.RuleModule
24
- 'sort-objects': Rule.RuleModule
25
- 'sort-enums': Rule.RuleModule
26
- 'sort-sets': Rule.RuleModule
27
- 'sort-maps': Rule.RuleModule
28
- }
29
- configs: {
30
- 'recommended-alphabetical-legacy': Linter.LegacyConfig
31
- 'recommended-line-length-legacy': Linter.LegacyConfig
32
- 'recommended-natural-legacy': Linter.LegacyConfig
33
- 'recommended-custom-legacy': Linter.LegacyConfig
34
- 'recommended-alphabetical': Linter.Config
35
- 'recommended-line-length': Linter.Config
36
- 'recommended-natural': Linter.Config
37
- 'recommended-custom': Linter.Config
38
- }
39
- meta: {
40
- version: string
41
- name: string
42
- }
43
- }
44
-
45
- export {}
46
- export = _default
1
+ import { ESLint } from 'eslint'
2
+ export declare let rules: ESLint.Plugin['rules']
3
+ export declare let configs: ESLint.Plugin['configs']
4
+ declare const _default: ESLint.Plugin
5
+ export default _default
package/dist/index.js CHANGED
@@ -1,53 +1,57 @@
1
- 'use strict'
2
- const _package = require('./package.json.js')
3
- const sortVariableDeclarations = require('./rules/sort-variable-declarations.js')
4
- const sortIntersectionTypes = require('./rules/sort-intersection-types.js')
5
- const sortHeritageClauses = require('./rules/sort-heritage-clauses.js')
6
- const sortArrayIncludes = require('./rules/sort-array-includes.js')
7
- const sortNamedImports = require('./rules/sort-named-imports.js')
8
- const sortNamedExports = require('./rules/sort-named-exports.js')
9
- const sortObjectTypes = require('./rules/sort-object-types.js')
10
- const sortSwitchCase = require('./rules/sort-switch-case.js')
11
- const sortUnionTypes = require('./rules/sort-union-types.js')
12
- const sortInterfaces = require('./rules/sort-interfaces.js')
13
- const sortDecorators = require('./rules/sort-decorators.js')
14
- const sortJsxProps = require('./rules/sort-jsx-props.js')
15
- const sortClasses = require('./rules/sort-classes.js')
16
- const sortImports = require('./rules/sort-imports.js')
17
- const sortExports = require('./rules/sort-exports.js')
18
- const sortObjects = require('./rules/sort-objects.js')
19
- const sortModules = require('./rules/sort-modules.js')
20
- const sortEnums = require('./rules/sort-enums.js')
21
- const sortMaps = require('./rules/sort-maps.js')
22
- const sortSets = require('./rules/sort-sets.js')
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'
23
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,
48
+ }
24
49
  let plugin = {
25
- rules: {
26
- 'sort-variable-declarations': sortVariableDeclarations,
27
- 'sort-intersection-types': sortIntersectionTypes,
28
- 'sort-heritage-clauses': sortHeritageClauses,
29
- 'sort-array-includes': sortArrayIncludes.default,
30
- 'sort-named-imports': sortNamedImports,
31
- 'sort-named-exports': sortNamedExports,
32
- 'sort-object-types': sortObjectTypes.default,
33
- 'sort-union-types': sortUnionTypes.default,
34
- 'sort-switch-case': sortSwitchCase,
35
- 'sort-decorators': sortDecorators,
36
- 'sort-interfaces': sortInterfaces,
37
- 'sort-jsx-props': sortJsxProps,
38
- 'sort-modules': sortModules,
39
- 'sort-classes': sortClasses,
40
- 'sort-imports': sortImports,
41
- 'sort-exports': sortExports,
42
- 'sort-objects': sortObjects,
43
- 'sort-enums': sortEnums,
44
- 'sort-sets': sortSets,
45
- 'sort-maps': sortMaps,
46
- },
47
50
  meta: {
48
- version: _package.version,
49
- name: _package.name,
51
+ version,
52
+ name,
50
53
  },
54
+ rules,
51
55
  }
52
56
  function getRules(options) {
53
57
  return Object.fromEntries(
@@ -71,41 +75,42 @@ function createLegacyConfig(options) {
71
75
  plugins: [pluginName],
72
76
  }
73
77
  }
78
+ let configs = {
79
+ 'recommended-alphabetical-legacy': createLegacyConfig({
80
+ type: 'alphabetical',
81
+ order: 'asc',
82
+ }),
83
+ 'recommended-line-length-legacy': createLegacyConfig({
84
+ type: 'line-length',
85
+ order: 'desc',
86
+ }),
87
+ 'recommended-natural-legacy': createLegacyConfig({
88
+ type: 'natural',
89
+ order: 'asc',
90
+ }),
91
+ 'recommended-custom-legacy': createLegacyConfig({
92
+ type: 'custom',
93
+ order: 'asc',
94
+ }),
95
+ 'recommended-alphabetical': createConfig({
96
+ type: 'alphabetical',
97
+ order: 'asc',
98
+ }),
99
+ 'recommended-line-length': createConfig({
100
+ type: 'line-length',
101
+ order: 'desc',
102
+ }),
103
+ 'recommended-natural': createConfig({
104
+ type: 'natural',
105
+ order: 'asc',
106
+ }),
107
+ 'recommended-custom': createConfig({
108
+ type: 'custom',
109
+ order: 'asc',
110
+ }),
111
+ }
74
112
  const index = {
75
113
  ...plugin,
76
- configs: {
77
- 'recommended-alphabetical-legacy': createLegacyConfig({
78
- type: 'alphabetical',
79
- order: 'asc',
80
- }),
81
- 'recommended-line-length-legacy': createLegacyConfig({
82
- type: 'line-length',
83
- order: 'desc',
84
- }),
85
- 'recommended-natural-legacy': createLegacyConfig({
86
- type: 'natural',
87
- order: 'asc',
88
- }),
89
- 'recommended-custom-legacy': createLegacyConfig({
90
- type: 'custom',
91
- order: 'asc',
92
- }),
93
- 'recommended-alphabetical': createConfig({
94
- type: 'alphabetical',
95
- order: 'asc',
96
- }),
97
- 'recommended-line-length': createConfig({
98
- type: 'line-length',
99
- order: 'desc',
100
- }),
101
- 'recommended-natural': createConfig({
102
- type: 'natural',
103
- order: 'asc',
104
- }),
105
- 'recommended-custom': createConfig({
106
- type: 'custom',
107
- order: 'asc',
108
- }),
109
- },
114
+ configs,
110
115
  }
111
- module.exports = index
116
+ export { configs, index as default, rules }
@@ -1,6 +1,3 @@
1
- 'use strict'
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' })
3
1
  const name = 'eslint-plugin-perfectionist'
4
- const version = '4.15.1'
5
- exports.name = name
6
- exports.version = version
2
+ const version = '5.1.0'
3
+ export { name, version }
@@ -0,0 +1,70 @@
1
+ import { JSONSchema4 } from '@typescript-eslint/utils/json-schema'
2
+ import {
3
+ CommonOptions,
4
+ RegexOption,
5
+ TypeOption,
6
+ } from '../../types/common-options.js'
7
+ import { CommonPartitionOptions } from '../../types/common-partition-options.js'
8
+ import { CommonGroupsOptions } from '../../types/common-groups-options.js'
9
+ /**
10
+ * Configuration options for the sort-array-includes rule.
11
+ *
12
+ * This rule enforces the sorting of arrays passed to the `.includes()` method,
13
+ * ensuring consistent ordering of array elements for better readability and
14
+ * maintainability.
15
+ */
16
+ export type Options = Partial<
17
+ {
18
+ /**
19
+ * Conditional configuration based on pattern matching. When specified, the
20
+ * rule applies only if all array element names match the given pattern.
21
+ */
22
+ useConfigurationIf: {
23
+ /**
24
+ * Regular expression pattern to match against all array element names.
25
+ * The rule is only applied when all names match this pattern.
26
+ */
27
+ allNamesMatchPattern?: RegexOption
28
+ }
29
+ } & CommonGroupsOptions<
30
+ SingleCustomGroup,
31
+ Record<string, never>,
32
+ TypeOption
33
+ > &
34
+ CommonOptions<TypeOption> &
35
+ CommonPartitionOptions
36
+ >[]
37
+ /**
38
+ * Represents the type of array element selector. Used to distinguish between
39
+ * literal values and spread elements in arrays.
40
+ */
41
+ export type Selector = (typeof allSelectors)[number]
42
+ /**
43
+ * Additional configuration for a single custom group.
44
+ *
45
+ * Custom groups allow fine-grained control over how array elements are grouped
46
+ * and sorted based on their names and types.
47
+ *
48
+ * @example
49
+ * {
50
+ * "selector": "literal"
51
+ * }
52
+ */
53
+ interface SingleCustomGroup {
54
+ /**
55
+ * Specifies the type of array elements to include in this group. Can be
56
+ * 'literal' for literal values or 'spread' for spread elements.
57
+ */
58
+ selector?: Selector
59
+ }
60
+ /**
61
+ * Complete list of available selectors for array elements. Used for validation
62
+ * and JSON schema generation.
63
+ */
64
+ export declare let allSelectors: readonly ['literal', 'spread']
65
+ /**
66
+ * JSON schema definition for validating single custom group configurations.
67
+ * Used by ESLint to validate rule options at configuration time.
68
+ */
69
+ export declare let singleCustomGroupJsonSchema: Record<string, JSONSchema4>
70
+ export {}
@@ -1,10 +1,6 @@
1
- 'use strict'
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' })
3
- const commonJsonSchemas = require('../../utils/common-json-schemas.js')
1
+ import { buildCustomGroupSelectorJsonSchema } from '../../utils/json-schemas/common-groups-json-schemas.js'
4
2
  let allSelectors = ['literal', 'spread']
5
3
  let singleCustomGroupJsonSchema = {
6
- selector: commonJsonSchemas.buildCustomGroupSelectorJsonSchema(allSelectors),
7
- elementNamePattern: commonJsonSchemas.regexJsonSchema,
4
+ selector: buildCustomGroupSelectorJsonSchema(allSelectors),
8
5
  }
9
- exports.allSelectors = allSelectors
10
- exports.singleCustomGroupJsonSchema = singleCustomGroupJsonSchema
6
+ export { allSelectors, singleCustomGroupJsonSchema }
@@ -0,0 +1,38 @@
1
+ import { JSONSchema4 } from '@typescript-eslint/utils/json-schema'
2
+ import { RuleContext } from '@typescript-eslint/utils/ts-eslint'
3
+ import { TSESTree } from '@typescript-eslint/types'
4
+ import { TSESLint } from '@typescript-eslint/utils'
5
+ import { Options } from './sort-array-includes/types.js'
6
+ declare const ORDER_ERROR_ID = 'unexpectedArrayIncludesOrder'
7
+ declare const GROUP_ORDER_ERROR_ID = 'unexpectedArrayIncludesGroupOrder'
8
+ declare const EXTRA_SPACING_ERROR_ID = 'extraSpacingBetweenArrayIncludesMembers'
9
+ declare const MISSED_SPACING_ERROR_ID =
10
+ 'missedSpacingBetweenArrayIncludesMembers'
11
+ type MessageId =
12
+ | typeof MISSED_SPACING_ERROR_ID
13
+ | typeof EXTRA_SPACING_ERROR_ID
14
+ | typeof GROUP_ORDER_ERROR_ID
15
+ | typeof ORDER_ERROR_ID
16
+ export declare let defaultOptions: Required<Options[number]>
17
+ export declare let jsonSchema: JSONSchema4
18
+ declare const _default: TSESLint.RuleModule<
19
+ MessageId,
20
+ Options,
21
+ import('../utils/create-eslint-rule.js').ESLintPluginDocumentation,
22
+ TSESLint.RuleListener
23
+ >
24
+ export default _default
25
+ export declare function sortArray<MessageIds extends string>({
26
+ availableMessageIds,
27
+ elements,
28
+ context,
29
+ }: {
30
+ availableMessageIds: {
31
+ missedSpacingBetweenMembers: MessageIds
32
+ extraSpacingBetweenMembers: MessageIds
33
+ unexpectedGroupOrder: MessageIds
34
+ unexpectedOrder: MessageIds
35
+ }
36
+ elements: (TSESTree.SpreadElement | TSESTree.Expression | null)[]
37
+ context: Readonly<RuleContext<MessageIds, Options>>
38
+ }): void