eslint-plugin-stylelint-2 1.0.9

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 (268) hide show
  1. package/CHANGELOG.md +329 -0
  2. package/LICENSE +21 -0
  3. package/README.md +174 -0
  4. package/dist/_internal/rule-docs-url.d.ts +15 -0
  5. package/dist/_internal/rule-docs-url.d.ts.map +1 -0
  6. package/dist/_internal/rule-docs-url.js +15 -0
  7. package/dist/_internal/rule-docs-url.js.map +1 -0
  8. package/dist/_internal/rules-registry.d.ts +88 -0
  9. package/dist/_internal/rules-registry.d.ts.map +1 -0
  10. package/dist/_internal/rules-registry.js +85 -0
  11. package/dist/_internal/rules-registry.js.map +1 -0
  12. package/dist/_internal/stylelint-config-boolean-option-rule.d.ts +17 -0
  13. package/dist/_internal/stylelint-config-boolean-option-rule.d.ts.map +1 -0
  14. package/dist/_internal/stylelint-config-boolean-option-rule.js +90 -0
  15. package/dist/_internal/stylelint-config-boolean-option-rule.js.map +1 -0
  16. package/dist/_internal/stylelint-config-disallowed-option-rule.d.ts +16 -0
  17. package/dist/_internal/stylelint-config-disallowed-option-rule.d.ts.map +1 -0
  18. package/dist/_internal/stylelint-config-disallowed-option-rule.js +48 -0
  19. package/dist/_internal/stylelint-config-disallowed-option-rule.js.map +1 -0
  20. package/dist/_internal/stylelint-config-object.d.ts +62 -0
  21. package/dist/_internal/stylelint-config-object.d.ts.map +1 -0
  22. package/dist/_internal/stylelint-config-object.js +114 -0
  23. package/dist/_internal/stylelint-config-object.js.map +1 -0
  24. package/dist/_internal/stylelint-config-package-option-rule.d.ts +12 -0
  25. package/dist/_internal/stylelint-config-package-option-rule.d.ts.map +1 -0
  26. package/dist/_internal/stylelint-config-package-option-rule.js +66 -0
  27. package/dist/_internal/stylelint-config-package-option-rule.js.map +1 -0
  28. package/dist/_internal/stylelint-config-rules-object.d.ts +23 -0
  29. package/dist/_internal/stylelint-config-rules-object.d.ts.map +1 -0
  30. package/dist/_internal/stylelint-config-rules-object.js +47 -0
  31. package/dist/_internal/stylelint-config-rules-object.js.map +1 -0
  32. package/dist/_internal/stylelint-config-string-array-option-rule.d.ts +27 -0
  33. package/dist/_internal/stylelint-config-string-array-option-rule.d.ts.map +1 -0
  34. package/dist/_internal/stylelint-config-string-array-option-rule.js +234 -0
  35. package/dist/_internal/stylelint-config-string-array-option-rule.js.map +1 -0
  36. package/dist/_internal/stylelint-config-string-array-option.d.ts +32 -0
  37. package/dist/_internal/stylelint-config-string-array-option.d.ts.map +1 -0
  38. package/dist/_internal/stylelint-config-string-array-option.js +55 -0
  39. package/dist/_internal/stylelint-config-string-array-option.js.map +1 -0
  40. package/dist/_internal/stylelint-package-dependencies.d.ts +18 -0
  41. package/dist/_internal/stylelint-package-dependencies.d.ts.map +1 -0
  42. package/dist/_internal/stylelint-package-dependencies.js +107 -0
  43. package/dist/_internal/stylelint-package-dependencies.js.map +1 -0
  44. package/dist/_internal/stylelint-runner.d.ts +4 -0
  45. package/dist/_internal/stylelint-runner.d.ts.map +1 -0
  46. package/dist/_internal/stylelint-runner.js +93 -0
  47. package/dist/_internal/stylelint-runner.js.map +1 -0
  48. package/dist/_internal/stylelint-worker-types.d.ts +70 -0
  49. package/dist/_internal/stylelint-worker-types.d.ts.map +1 -0
  50. package/dist/_internal/stylelint-worker-types.js +2 -0
  51. package/dist/_internal/stylelint-worker-types.js.map +1 -0
  52. package/dist/_internal/stylelint-worker.d.ts +2 -0
  53. package/dist/_internal/stylelint-worker.d.ts.map +1 -0
  54. package/dist/_internal/stylelint-worker.js +113 -0
  55. package/dist/_internal/stylelint-worker.js.map +1 -0
  56. package/dist/_internal/stylelint2-config-references.d.ts +32 -0
  57. package/dist/_internal/stylelint2-config-references.d.ts.map +1 -0
  58. package/dist/_internal/stylelint2-config-references.js +65 -0
  59. package/dist/_internal/stylelint2-config-references.js.map +1 -0
  60. package/dist/_internal/typed-rule.d.ts +42 -0
  61. package/dist/_internal/typed-rule.d.ts.map +1 -0
  62. package/dist/_internal/typed-rule.js +53 -0
  63. package/dist/_internal/typed-rule.js.map +1 -0
  64. package/dist/plugin.cjs +1 -0
  65. package/dist/plugin.d.cts +10 -0
  66. package/dist/plugin.d.ts +36 -0
  67. package/dist/plugin.d.ts.map +1 -0
  68. package/dist/plugin.js +183 -0
  69. package/dist/plugin.js.map +1 -0
  70. package/dist/rules/disallow-stylelint-allow-empty-input.d.ts +9 -0
  71. package/dist/rules/disallow-stylelint-allow-empty-input.d.ts.map +1 -0
  72. package/dist/rules/disallow-stylelint-allow-empty-input.js +29 -0
  73. package/dist/rules/disallow-stylelint-allow-empty-input.js.map +1 -0
  74. package/dist/rules/disallow-stylelint-configuration-comment.d.ts +9 -0
  75. package/dist/rules/disallow-stylelint-configuration-comment.d.ts.map +1 -0
  76. package/dist/rules/disallow-stylelint-configuration-comment.js +29 -0
  77. package/dist/rules/disallow-stylelint-configuration-comment.js.map +1 -0
  78. package/dist/rules/disallow-stylelint-custom-syntax.d.ts +12 -0
  79. package/dist/rules/disallow-stylelint-custom-syntax.d.ts.map +1 -0
  80. package/dist/rules/disallow-stylelint-custom-syntax.js +32 -0
  81. package/dist/rules/disallow-stylelint-custom-syntax.js.map +1 -0
  82. package/dist/rules/disallow-stylelint-default-severity.d.ts +9 -0
  83. package/dist/rules/disallow-stylelint-default-severity.d.ts.map +1 -0
  84. package/dist/rules/disallow-stylelint-default-severity.js +28 -0
  85. package/dist/rules/disallow-stylelint-default-severity.js.map +1 -0
  86. package/dist/rules/disallow-stylelint-duplicate-extends.d.ts +9 -0
  87. package/dist/rules/disallow-stylelint-duplicate-extends.d.ts.map +1 -0
  88. package/dist/rules/disallow-stylelint-duplicate-extends.js +29 -0
  89. package/dist/rules/disallow-stylelint-duplicate-extends.js.map +1 -0
  90. package/dist/rules/disallow-stylelint-duplicate-plugins.d.ts +9 -0
  91. package/dist/rules/disallow-stylelint-duplicate-plugins.d.ts.map +1 -0
  92. package/dist/rules/disallow-stylelint-duplicate-plugins.js +29 -0
  93. package/dist/rules/disallow-stylelint-duplicate-plugins.js.map +1 -0
  94. package/dist/rules/disallow-stylelint-duplicate-rule-option-values.d.ts +10 -0
  95. package/dist/rules/disallow-stylelint-duplicate-rule-option-values.d.ts.map +1 -0
  96. package/dist/rules/disallow-stylelint-duplicate-rule-option-values.js +171 -0
  97. package/dist/rules/disallow-stylelint-duplicate-rule-option-values.js.map +1 -0
  98. package/dist/rules/disallow-stylelint-empty-rules-object.d.ts +7 -0
  99. package/dist/rules/disallow-stylelint-empty-rules-object.d.ts.map +1 -0
  100. package/dist/rules/disallow-stylelint-empty-rules-object.js +65 -0
  101. package/dist/rules/disallow-stylelint-empty-rules-object.js.map +1 -0
  102. package/dist/rules/disallow-stylelint-ignore-disables.d.ts +9 -0
  103. package/dist/rules/disallow-stylelint-ignore-disables.d.ts.map +1 -0
  104. package/dist/rules/disallow-stylelint-ignore-disables.js +28 -0
  105. package/dist/rules/disallow-stylelint-ignore-disables.js.map +1 -0
  106. package/dist/rules/disallow-stylelint-ignore-files.d.ts +9 -0
  107. package/dist/rules/disallow-stylelint-ignore-files.d.ts.map +1 -0
  108. package/dist/rules/disallow-stylelint-ignore-files.js +28 -0
  109. package/dist/rules/disallow-stylelint-ignore-files.js.map +1 -0
  110. package/dist/rules/disallow-stylelint-null-rule-config.d.ts +7 -0
  111. package/dist/rules/disallow-stylelint-null-rule-config.d.ts.map +1 -0
  112. package/dist/rules/disallow-stylelint-null-rule-config.js +86 -0
  113. package/dist/rules/disallow-stylelint-null-rule-config.js.map +1 -0
  114. package/dist/rules/disallow-stylelint-overrides-runtime-options.d.ts +7 -0
  115. package/dist/rules/disallow-stylelint-overrides-runtime-options.d.ts.map +1 -0
  116. package/dist/rules/disallow-stylelint-overrides-runtime-options.js +124 -0
  117. package/dist/rules/disallow-stylelint-overrides-runtime-options.js.map +1 -0
  118. package/dist/rules/disallow-stylelint-processors.d.ts +9 -0
  119. package/dist/rules/disallow-stylelint-processors.d.ts.map +1 -0
  120. package/dist/rules/disallow-stylelint-processors.js +29 -0
  121. package/dist/rules/disallow-stylelint-processors.js.map +1 -0
  122. package/dist/rules/disallow-stylelint-relative-extends-paths.d.ts +9 -0
  123. package/dist/rules/disallow-stylelint-relative-extends-paths.d.ts.map +1 -0
  124. package/dist/rules/disallow-stylelint-relative-extends-paths.js +28 -0
  125. package/dist/rules/disallow-stylelint-relative-extends-paths.js.map +1 -0
  126. package/dist/rules/disallow-stylelint-relative-plugin-paths.d.ts +9 -0
  127. package/dist/rules/disallow-stylelint-relative-plugin-paths.d.ts.map +1 -0
  128. package/dist/rules/disallow-stylelint-relative-plugin-paths.js +28 -0
  129. package/dist/rules/disallow-stylelint-relative-plugin-paths.js.map +1 -0
  130. package/dist/rules/prefer-stylelint-cache.d.ts +9 -0
  131. package/dist/rules/prefer-stylelint-cache.d.ts.map +1 -0
  132. package/dist/rules/prefer-stylelint-cache.js +28 -0
  133. package/dist/rules/prefer-stylelint-cache.js.map +1 -0
  134. package/dist/rules/prefer-stylelint-define-config.d.ts +7 -0
  135. package/dist/rules/prefer-stylelint-define-config.d.ts.map +1 -0
  136. package/dist/rules/prefer-stylelint-define-config.js +82 -0
  137. package/dist/rules/prefer-stylelint-define-config.js.map +1 -0
  138. package/dist/rules/prefer-stylelint-extends-array.d.ts +9 -0
  139. package/dist/rules/prefer-stylelint-extends-array.d.ts.map +1 -0
  140. package/dist/rules/prefer-stylelint-extends-array.js +29 -0
  141. package/dist/rules/prefer-stylelint-extends-array.js.map +1 -0
  142. package/dist/rules/prefer-stylelint-fix.d.ts +7 -0
  143. package/dist/rules/prefer-stylelint-fix.d.ts.map +1 -0
  144. package/dist/rules/prefer-stylelint-fix.js +90 -0
  145. package/dist/rules/prefer-stylelint-fix.js.map +1 -0
  146. package/dist/rules/prefer-stylelint-formatter.d.ts +10 -0
  147. package/dist/rules/prefer-stylelint-formatter.d.ts.map +1 -0
  148. package/dist/rules/prefer-stylelint-formatter.js +77 -0
  149. package/dist/rules/prefer-stylelint-formatter.js.map +1 -0
  150. package/dist/rules/prefer-stylelint-plugins-array.d.ts +9 -0
  151. package/dist/rules/prefer-stylelint-plugins-array.d.ts.map +1 -0
  152. package/dist/rules/prefer-stylelint-plugins-array.js +29 -0
  153. package/dist/rules/prefer-stylelint-plugins-array.js.map +1 -0
  154. package/dist/rules/prefer-stylelint-report-descriptionless-disables.d.ts +12 -0
  155. package/dist/rules/prefer-stylelint-report-descriptionless-disables.d.ts.map +1 -0
  156. package/dist/rules/prefer-stylelint-report-descriptionless-disables.js +32 -0
  157. package/dist/rules/prefer-stylelint-report-descriptionless-disables.js.map +1 -0
  158. package/dist/rules/prefer-stylelint-report-invalid-scope-disables.d.ts +12 -0
  159. package/dist/rules/prefer-stylelint-report-invalid-scope-disables.d.ts.map +1 -0
  160. package/dist/rules/prefer-stylelint-report-invalid-scope-disables.js +32 -0
  161. package/dist/rules/prefer-stylelint-report-invalid-scope-disables.js.map +1 -0
  162. package/dist/rules/prefer-stylelint-report-needless-disables.d.ts +9 -0
  163. package/dist/rules/prefer-stylelint-report-needless-disables.d.ts.map +1 -0
  164. package/dist/rules/prefer-stylelint-report-needless-disables.js +29 -0
  165. package/dist/rules/prefer-stylelint-report-needless-disables.js.map +1 -0
  166. package/dist/rules/prefer-stylelint-report-unscoped-disables.d.ts +9 -0
  167. package/dist/rules/prefer-stylelint-report-unscoped-disables.d.ts.map +1 -0
  168. package/dist/rules/prefer-stylelint-report-unscoped-disables.js +29 -0
  169. package/dist/rules/prefer-stylelint-report-unscoped-disables.js.map +1 -0
  170. package/dist/rules/require-stylelint-config-file-naming-convention.d.ts +13 -0
  171. package/dist/rules/require-stylelint-config-file-naming-convention.d.ts.map +1 -0
  172. package/dist/rules/require-stylelint-config-file-naming-convention.js +58 -0
  173. package/dist/rules/require-stylelint-config-file-naming-convention.js.map +1 -0
  174. package/dist/rules/require-stylelint-custom-syntax-in-overrides.d.ts +7 -0
  175. package/dist/rules/require-stylelint-custom-syntax-in-overrides.d.ts.map +1 -0
  176. package/dist/rules/require-stylelint-custom-syntax-in-overrides.js +100 -0
  177. package/dist/rules/require-stylelint-custom-syntax-in-overrides.js.map +1 -0
  178. package/dist/rules/require-stylelint-extends-packages-installed.d.ts +12 -0
  179. package/dist/rules/require-stylelint-extends-packages-installed.d.ts.map +1 -0
  180. package/dist/rules/require-stylelint-extends-packages-installed.js +31 -0
  181. package/dist/rules/require-stylelint-extends-packages-installed.js.map +1 -0
  182. package/dist/rules/require-stylelint-overrides-configuration.d.ts +7 -0
  183. package/dist/rules/require-stylelint-overrides-configuration.d.ts.map +1 -0
  184. package/dist/rules/require-stylelint-overrides-configuration.js +100 -0
  185. package/dist/rules/require-stylelint-overrides-configuration.js.map +1 -0
  186. package/dist/rules/require-stylelint-overrides-files-array.d.ts +7 -0
  187. package/dist/rules/require-stylelint-overrides-files-array.d.ts.map +1 -0
  188. package/dist/rules/require-stylelint-overrides-files-array.js +99 -0
  189. package/dist/rules/require-stylelint-overrides-files-array.js.map +1 -0
  190. package/dist/rules/require-stylelint-overrides-files.d.ts +7 -0
  191. package/dist/rules/require-stylelint-overrides-files.d.ts.map +1 -0
  192. package/dist/rules/require-stylelint-overrides-files.js +104 -0
  193. package/dist/rules/require-stylelint-overrides-files.js.map +1 -0
  194. package/dist/rules/require-stylelint-plugins-packages-installed.d.ts +12 -0
  195. package/dist/rules/require-stylelint-plugins-packages-installed.d.ts.map +1 -0
  196. package/dist/rules/require-stylelint-plugins-packages-installed.js +31 -0
  197. package/dist/rules/require-stylelint-plugins-packages-installed.js.map +1 -0
  198. package/dist/rules/require-stylelint-report-disables.d.ts +9 -0
  199. package/dist/rules/require-stylelint-report-disables.d.ts.map +1 -0
  200. package/dist/rules/require-stylelint-report-disables.js +29 -0
  201. package/dist/rules/require-stylelint-report-disables.js.map +1 -0
  202. package/dist/rules/require-stylelint-rules-object.d.ts +7 -0
  203. package/dist/rules/require-stylelint-rules-object.d.ts.map +1 -0
  204. package/dist/rules/require-stylelint-rules-object.js +65 -0
  205. package/dist/rules/require-stylelint-rules-object.js.map +1 -0
  206. package/dist/rules/sort-stylelint-extends.d.ts +9 -0
  207. package/dist/rules/sort-stylelint-extends.d.ts.map +1 -0
  208. package/dist/rules/sort-stylelint-extends.js +28 -0
  209. package/dist/rules/sort-stylelint-extends.js.map +1 -0
  210. package/dist/rules/sort-stylelint-plugins.d.ts +9 -0
  211. package/dist/rules/sort-stylelint-plugins.d.ts.map +1 -0
  212. package/dist/rules/sort-stylelint-plugins.js +28 -0
  213. package/dist/rules/sort-stylelint-plugins.js.map +1 -0
  214. package/dist/rules/sort-stylelint-rule-keys.d.ts +7 -0
  215. package/dist/rules/sort-stylelint-rule-keys.d.ts.map +1 -0
  216. package/dist/rules/sort-stylelint-rule-keys.js +129 -0
  217. package/dist/rules/sort-stylelint-rule-keys.js.map +1 -0
  218. package/dist/rules/stylelint.d.ts +15 -0
  219. package/dist/rules/stylelint.d.ts.map +1 -0
  220. package/dist/rules/stylelint.js +157 -0
  221. package/dist/rules/stylelint.js.map +1 -0
  222. package/docs/rules/disallow-stylelint-allow-empty-input.md +62 -0
  223. package/docs/rules/disallow-stylelint-configuration-comment.md +62 -0
  224. package/docs/rules/disallow-stylelint-custom-syntax.md +70 -0
  225. package/docs/rules/disallow-stylelint-default-severity.md +77 -0
  226. package/docs/rules/disallow-stylelint-duplicate-extends.md +61 -0
  227. package/docs/rules/disallow-stylelint-duplicate-plugins.md +61 -0
  228. package/docs/rules/disallow-stylelint-duplicate-rule-option-values.md +73 -0
  229. package/docs/rules/disallow-stylelint-empty-rules-object.md +62 -0
  230. package/docs/rules/disallow-stylelint-ignore-disables.md +78 -0
  231. package/docs/rules/disallow-stylelint-ignore-files.md +78 -0
  232. package/docs/rules/disallow-stylelint-null-rule-config.md +63 -0
  233. package/docs/rules/disallow-stylelint-overrides-runtime-options.md +82 -0
  234. package/docs/rules/disallow-stylelint-processors.md +62 -0
  235. package/docs/rules/disallow-stylelint-relative-extends-paths.md +61 -0
  236. package/docs/rules/disallow-stylelint-relative-plugin-paths.md +61 -0
  237. package/docs/rules/getting-started.md +130 -0
  238. package/docs/rules/overview.md +99 -0
  239. package/docs/rules/prefer-stylelint-cache.md +79 -0
  240. package/docs/rules/prefer-stylelint-define-config.md +90 -0
  241. package/docs/rules/prefer-stylelint-extends-array.md +61 -0
  242. package/docs/rules/prefer-stylelint-fix.md +79 -0
  243. package/docs/rules/prefer-stylelint-formatter.md +80 -0
  244. package/docs/rules/prefer-stylelint-plugins-array.md +61 -0
  245. package/docs/rules/prefer-stylelint-report-descriptionless-disables.md +85 -0
  246. package/docs/rules/prefer-stylelint-report-invalid-scope-disables.md +83 -0
  247. package/docs/rules/prefer-stylelint-report-needless-disables.md +83 -0
  248. package/docs/rules/prefer-stylelint-report-unscoped-disables.md +83 -0
  249. package/docs/rules/presets/all.md +39 -0
  250. package/docs/rules/presets/configs.md +40 -0
  251. package/docs/rules/presets/configuration.md +64 -0
  252. package/docs/rules/presets/index.md +82 -0
  253. package/docs/rules/presets/recommended.md +40 -0
  254. package/docs/rules/presets/stylelint-only.md +42 -0
  255. package/docs/rules/require-stylelint-config-file-naming-convention.md +61 -0
  256. package/docs/rules/require-stylelint-custom-syntax-in-overrides.md +77 -0
  257. package/docs/rules/require-stylelint-extends-packages-installed.md +61 -0
  258. package/docs/rules/require-stylelint-overrides-configuration.md +80 -0
  259. package/docs/rules/require-stylelint-overrides-files-array.md +78 -0
  260. package/docs/rules/require-stylelint-overrides-files.md +83 -0
  261. package/docs/rules/require-stylelint-plugins-packages-installed.md +61 -0
  262. package/docs/rules/require-stylelint-report-disables.md +67 -0
  263. package/docs/rules/require-stylelint-rules-object.md +61 -0
  264. package/docs/rules/sort-stylelint-extends.md +61 -0
  265. package/docs/rules/sort-stylelint-plugins.md +61 -0
  266. package/docs/rules/sort-stylelint-rule-keys.md +65 -0
  267. package/docs/rules/stylelint.md +100 -0
  268. package/package.json +577 -0
@@ -0,0 +1,129 @@
1
+ import { getExportedStylelintConfigObject, isStylelintConfigFile, } from "../_internal/stylelint-config-object.js";
2
+ import { getTopLevelRuleEntries, getTopLevelRulesObject, } from "../_internal/stylelint-config-rules-object.js";
3
+ import { createTypedRule, toRuleListener } from "../_internal/typed-rule.js";
4
+ const getRuleName = (property) => {
5
+ const propertyKey = property.key;
6
+ if (propertyKey.type === "Identifier") {
7
+ return propertyKey.name;
8
+ }
9
+ if (propertyKey.type === "Literal" &&
10
+ typeof propertyKey.value === "string") {
11
+ return propertyKey.value;
12
+ }
13
+ return undefined;
14
+ };
15
+ const isAlreadySorted = (properties) => {
16
+ let previousRuleName = "";
17
+ for (const property of properties) {
18
+ const ruleName = getRuleName(property);
19
+ if (ruleName === undefined) {
20
+ return true;
21
+ }
22
+ if (ruleName.localeCompare(previousRuleName) < 0) {
23
+ return false;
24
+ }
25
+ previousRuleName = ruleName;
26
+ }
27
+ return true;
28
+ };
29
+ const canSafelyFixSorting = (sourceCode, properties) => {
30
+ for (const property of properties) {
31
+ if (property.computed || property.kind !== "init") {
32
+ return false;
33
+ }
34
+ if (getRuleName(property) === undefined) {
35
+ return false;
36
+ }
37
+ if (sourceCode.getCommentsBefore(property).length > 0) {
38
+ return false;
39
+ }
40
+ if (sourceCode.getCommentsAfter(property).length > 0) {
41
+ return false;
42
+ }
43
+ }
44
+ return true;
45
+ };
46
+ const getSortedPropertyText = (sourceCode, properties) => {
47
+ const sortedProperties = [...properties];
48
+ sortedProperties.sort((left, right) => {
49
+ const leftRuleName = getRuleName(left) ?? "";
50
+ const rightRuleName = getRuleName(right) ?? "";
51
+ return leftRuleName.localeCompare(rightRuleName);
52
+ });
53
+ const indentation = " ".repeat(properties[0]?.loc.start.column ?? 0);
54
+ return sortedProperties
55
+ .map((property) => sourceCode.getText(property))
56
+ .join(`,\n${indentation}`);
57
+ };
58
+ /** Rule module that enforces lexical ordering of top-level Stylelint rule keys. */
59
+ const sortStylelintRuleKeysRule = createTypedRule({
60
+ create(context) {
61
+ if (!isStylelintConfigFile(context.physicalFilename)) {
62
+ return {};
63
+ }
64
+ const sourceCode = context.sourceCode;
65
+ return toRuleListener({
66
+ ExportDefaultDeclaration(node) {
67
+ if (node === null || typeof node !== "object") {
68
+ return;
69
+ }
70
+ const exportDefaultNode = node;
71
+ const configObject = getExportedStylelintConfigObject(exportDefaultNode.declaration);
72
+ if (configObject === undefined) {
73
+ return;
74
+ }
75
+ const rulesObject = getTopLevelRulesObject(configObject);
76
+ if (rulesObject === undefined) {
77
+ return;
78
+ }
79
+ const ruleEntries = getTopLevelRuleEntries(rulesObject);
80
+ if (ruleEntries.length < 2 ||
81
+ isAlreadySorted(ruleEntries)) {
82
+ return;
83
+ }
84
+ context.report({
85
+ fix(fixer) {
86
+ if (!canSafelyFixSorting(sourceCode, ruleEntries)) {
87
+ return null;
88
+ }
89
+ const firstRuleEntry = ruleEntries[0];
90
+ const lastRuleEntry = ruleEntries.at(-1);
91
+ if (firstRuleEntry === undefined ||
92
+ lastRuleEntry === undefined) {
93
+ return null;
94
+ }
95
+ return fixer.replaceTextRange([
96
+ firstRuleEntry.range[0],
97
+ lastRuleEntry.range[1],
98
+ ], getSortedPropertyText(sourceCode, ruleEntries));
99
+ },
100
+ messageId: "sortRuleKeys",
101
+ node: rulesObject,
102
+ });
103
+ },
104
+ });
105
+ },
106
+ meta: {
107
+ deprecated: false,
108
+ docs: {
109
+ configs: [
110
+ "stylelint2.configs.recommended",
111
+ "stylelint2.configs.configuration",
112
+ "stylelint2.configs.all",
113
+ ],
114
+ description: "enforce sorted top-level Stylelint rule keys in shared config files.",
115
+ recommended: true,
116
+ requiresTypeChecking: false,
117
+ url: "https://nick2bad4u.github.io/eslint-plugin-stylelint-2/docs/rules/sort-stylelint-rule-keys",
118
+ },
119
+ fixable: "code",
120
+ messages: {
121
+ sortRuleKeys: "Sort top-level Stylelint `rules` keys for deterministic diffs and consistent review order.",
122
+ },
123
+ schema: [],
124
+ type: "suggestion",
125
+ },
126
+ name: "sort-stylelint-rule-keys",
127
+ });
128
+ export default sortStylelintRuleKeysRule;
129
+ //# sourceMappingURL=sort-stylelint-rule-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-stylelint-rule-keys.js","sourceRoot":"","sources":["../../src/rules/sort-stylelint-rule-keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type RuleModuleWithDocs } from "../_internal/typed-rule.js";
2
+ type MessageIds = "stylelintConfigWarning" | "stylelintParseError" | "stylelintProblem";
3
+ type Options = readonly [StylelintRuleOption?];
4
+ type StylelintRuleOption = Readonly<{
5
+ allowEmptyInput?: boolean;
6
+ configBasedir?: string;
7
+ configFile?: string;
8
+ customSyntax?: string;
9
+ ignoreDisables?: boolean;
10
+ quiet?: boolean;
11
+ }>;
12
+ /** Rule module that bridges Stylelint diagnostics into ESLint. */
13
+ declare const stylelintRule: RuleModuleWithDocs<MessageIds, Options>;
14
+ export default stylelintRule;
15
+ //# sourceMappingURL=stylelint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint.d.ts","sourceRoot":"","sources":["../../src/rules/stylelint.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,kBAAkB,EAE1B,MAAM,4BAA4B,CAAC;AAEpC,KAAK,UAAU,GACT,wBAAwB,GACxB,qBAAqB,GACrB,kBAAkB,CAAC;AAEzB,KAAK,OAAO,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAO/C,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAoBH,kEAAkE;AAClE,QAAA,MAAM,aAAa,EAAE,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAmKzD,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -0,0 +1,157 @@
1
+ import { runStylelintSynchronously } from "../_internal/stylelint-runner.js";
2
+ import { createTypedRule, replaceTextRange, toRuleListener, } from "../_internal/typed-rule.js";
3
+ const toEslintLoc = (problem) => ({
4
+ end: {
5
+ column: Math.max((problem.endColumn ?? problem.column + 1) - 1, 0),
6
+ line: problem.endLine ?? problem.line,
7
+ },
8
+ start: {
9
+ column: Math.max(problem.column - 1, 0),
10
+ line: problem.line,
11
+ },
12
+ });
13
+ /** Rule module that bridges Stylelint diagnostics into ESLint. */
14
+ const stylelintRule = createTypedRule({
15
+ create(context, [rawOptions = {}]) {
16
+ return toRuleListener({
17
+ StyleSheet() {
18
+ const sourceCode = context.sourceCode;
19
+ const lintResult = runStylelintSynchronously({
20
+ code: sourceCode.text,
21
+ codeFilename: context.physicalFilename,
22
+ cwd: context.cwd,
23
+ ...(rawOptions.allowEmptyInput === undefined
24
+ ? {}
25
+ : { allowEmptyInput: rawOptions.allowEmptyInput }),
26
+ ...(rawOptions.configBasedir === undefined
27
+ ? {}
28
+ : { configBasedir: rawOptions.configBasedir }),
29
+ ...(rawOptions.configFile === undefined
30
+ ? {}
31
+ : { configFile: rawOptions.configFile }),
32
+ ...(rawOptions.customSyntax === undefined
33
+ ? {}
34
+ : { customSyntax: rawOptions.customSyntax }),
35
+ ...(rawOptions.ignoreDisables === undefined
36
+ ? {}
37
+ : { ignoreDisables: rawOptions.ignoreDisables }),
38
+ ...(rawOptions.quiet === undefined
39
+ ? {}
40
+ : { quiet: rawOptions.quiet }),
41
+ });
42
+ const reportNode = sourceCode.ast;
43
+ for (const parseError of lintResult.parseErrors) {
44
+ context.report({
45
+ data: {
46
+ message: parseError.message,
47
+ },
48
+ loc: toEslintLoc(parseError),
49
+ messageId: "stylelintParseError",
50
+ node: reportNode,
51
+ });
52
+ }
53
+ for (const warning of lintResult.warnings) {
54
+ const fixData = warning.fix;
55
+ context.report({
56
+ data: {
57
+ rule: warning.rule,
58
+ text: warning.text,
59
+ },
60
+ loc: toEslintLoc(warning),
61
+ messageId: "stylelintProblem",
62
+ node: reportNode,
63
+ ...(fixData === undefined
64
+ ? {}
65
+ : {
66
+ fix: (fixer) => replaceTextRange(fixer, fixData.range, fixData.text),
67
+ }),
68
+ });
69
+ }
70
+ for (const invalidOptionWarning of lintResult.invalidOptionWarnings) {
71
+ context.report({
72
+ data: {
73
+ message: invalidOptionWarning,
74
+ },
75
+ loc: {
76
+ end: { column: 0, line: 1 },
77
+ start: { column: 0, line: 1 },
78
+ },
79
+ messageId: "stylelintConfigWarning",
80
+ node: reportNode,
81
+ });
82
+ }
83
+ for (const deprecation of lintResult.deprecations) {
84
+ context.report({
85
+ data: {
86
+ message: deprecation,
87
+ },
88
+ loc: {
89
+ end: { column: 0, line: 1 },
90
+ start: { column: 0, line: 1 },
91
+ },
92
+ messageId: "stylelintConfigWarning",
93
+ node: reportNode,
94
+ });
95
+ }
96
+ },
97
+ });
98
+ },
99
+ meta: {
100
+ defaultOptions: [{}],
101
+ deprecated: false,
102
+ docs: {
103
+ configs: [
104
+ "stylelint2.configs.recommended",
105
+ "stylelint2.configs.stylelintOnly",
106
+ "stylelint2.configs.all",
107
+ ],
108
+ description: "enforce running Stylelint against CSS files from ESLint and surface Stylelint autofixes through ESLint's fixer pipeline.",
109
+ recommended: true,
110
+ requiresTypeChecking: false,
111
+ url: "https://nick2bad4u.github.io/eslint-plugin-stylelint-2/docs/rules/stylelint",
112
+ },
113
+ fixable: "code",
114
+ messages: {
115
+ stylelintConfigWarning: "Stylelint configuration warning: {{message}}",
116
+ stylelintParseError: "Stylelint parse error: {{message}}",
117
+ stylelintProblem: "Stylelint ({{rule}}): {{text}}",
118
+ },
119
+ schema: [
120
+ {
121
+ additionalProperties: false,
122
+ description: "Optional Stylelint bridge settings forwarded to the Stylelint Node API.",
123
+ properties: {
124
+ allowEmptyInput: {
125
+ description: "Allow empty input when forwarding the file to Stylelint.",
126
+ type: "boolean",
127
+ },
128
+ configBasedir: {
129
+ description: "Base directory used when resolving relative paths from the chosen Stylelint config.",
130
+ type: "string",
131
+ },
132
+ configFile: {
133
+ description: "Explicit Stylelint config file path to use instead of normal config discovery.",
134
+ type: "string",
135
+ },
136
+ customSyntax: {
137
+ description: "Optional Stylelint custom syntax package name.",
138
+ type: "string",
139
+ },
140
+ ignoreDisables: {
141
+ description: "Ignore Stylelint disable comments while linting the file.",
142
+ type: "boolean",
143
+ },
144
+ quiet: {
145
+ description: "Suppress warning-level Stylelint messages.",
146
+ type: "boolean",
147
+ },
148
+ },
149
+ type: "object",
150
+ },
151
+ ],
152
+ type: "layout",
153
+ },
154
+ name: "stylelint",
155
+ });
156
+ export default stylelintRule;
157
+ //# sourceMappingURL=stylelint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint.js","sourceRoot":"","sources":["../../src/rules/stylelint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ # disallow-stylelint-allow-empty-input
2
+
3
+ Disallow configuring Stylelint's top-level `allowEmptyInput` option inside authored Stylelint config files.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets Stylelint config modules such as `stylelint.config.ts`, `stylelint.config.mjs`, and `.stylelintrc.js`.
8
+
9
+ It focuses on top-level exported config objects, including configs wrapped in `defineConfig(...)`.
10
+
11
+ ## What this rule reports
12
+
13
+ This rule reports Stylelint config objects that include a top-level `allowEmptyInput` property.
14
+
15
+ ## Why this rule exists
16
+
17
+ `allowEmptyInput` changes runtime behavior for file discovery and no-op lint runs. That policy is an execution concern and should be controlled at invocation level, not embedded in shared config state.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```ts
22
+ export default {
23
+ allowEmptyInput: true,
24
+ rules: {},
25
+ };
26
+ ```
27
+
28
+ ## ✅ Correct
29
+
30
+ ```ts
31
+ export default {
32
+ rules: {},
33
+ };
34
+ ```
35
+
36
+ ## Behavior and migration notes
37
+
38
+ - This rule removes the top-level `allowEmptyInput` property.
39
+ - It preserves the rest of the config object.
40
+ - Prefer explicit file globs and task-level invocation behavior for empty-input handling.
41
+
42
+ ## ESLint flat config example
43
+
44
+ ```ts
45
+ import stylelint2 from "eslint-plugin-stylelint-2";
46
+
47
+ export default [stylelint2.configs.configuration];
48
+ ```
49
+
50
+ ## When not to use it
51
+
52
+ Do not use this rule if your team intentionally enforces one shared `allowEmptyInput` policy in committed Stylelint config files.
53
+
54
+ ## Package documentation
55
+
56
+ Stylelint package documentation:
57
+
58
+ > **Rule catalog ID:** R013
59
+
60
+ ## Further reading
61
+
62
+ - [Stylelint configuring guide](https://stylelint.io/user-guide/configure/#allowemptyinput)
@@ -0,0 +1,62 @@
1
+ # disallow-stylelint-configuration-comment
2
+
3
+ Disallow configuring Stylelint's top-level `configurationComment` option inside authored Stylelint config files.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets Stylelint config modules such as `stylelint.config.ts`, `stylelint.config.mjs`, and `.stylelintrc.js`.
8
+
9
+ It focuses on top-level exported config objects, including configs wrapped in `defineConfig(...)`.
10
+
11
+ ## What this rule reports
12
+
13
+ This rule reports Stylelint config objects that include a top-level `configurationComment` property.
14
+
15
+ ## Why this rule exists
16
+
17
+ `configurationComment` changes how in-source configuration comments are interpreted. In shared configs, overriding this can create hard-to-debug behavior differences across repositories and tooling.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```ts
22
+ export default {
23
+ configurationComment: "stylelint-enable",
24
+ rules: {},
25
+ };
26
+ ```
27
+
28
+ ## ✅ Correct
29
+
30
+ ```ts
31
+ export default {
32
+ rules: {},
33
+ };
34
+ ```
35
+
36
+ ## Behavior and migration notes
37
+
38
+ - This rule removes top-level `configurationComment`.
39
+ - It preserves the rest of the config object.
40
+ - Keep configuration-comment behavior aligned with Stylelint defaults unless there is a strict organization-wide policy.
41
+
42
+ ## ESLint flat config example
43
+
44
+ ```ts
45
+ import stylelint2 from "eslint-plugin-stylelint-2";
46
+
47
+ export default [stylelint2.configs.configuration];
48
+ ```
49
+
50
+ ## When not to use it
51
+
52
+ Do not use this rule if your organization explicitly standardizes a non-default Stylelint configuration comment token.
53
+
54
+ ## Package documentation
55
+
56
+ Stylelint package documentation:
57
+
58
+ > **Rule catalog ID:** R016
59
+
60
+ ## Further reading
61
+
62
+ - [Stylelint configuration comments](https://stylelint.io/user-guide/ignore-code/)
@@ -0,0 +1,70 @@
1
+ # disallow-stylelint-custom-syntax
2
+
3
+ Disallow configuring Stylelint's top-level `customSyntax` option inside authored Stylelint config files.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets Stylelint config modules such as `stylelint.config.ts`, `stylelint.config.mjs`, and `.stylelintrc.js`.
8
+
9
+ It focuses on top-level exported config objects, including configs wrapped in `defineConfig(...)`.
10
+
11
+ ## What this rule reports
12
+
13
+ This rule reports Stylelint config objects that include a top-level `customSyntax` property.
14
+
15
+ ## Why this rule exists
16
+
17
+ Top-level `customSyntax` applies globally and can accidentally affect unrelated file types. Syntax selection is safer when scoped to `overrides` entries with explicit `files` matchers.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```ts
22
+ export default {
23
+ customSyntax: "postcss-scss",
24
+ rules: {},
25
+ };
26
+ ```
27
+
28
+ ## ✅ Correct
29
+
30
+ ```ts
31
+ export default {
32
+ overrides: [
33
+ {
34
+ customSyntax: "postcss-scss",
35
+ files: ["**/*.scss"],
36
+ rules: {},
37
+ },
38
+ ],
39
+ rules: {},
40
+ };
41
+ ```
42
+
43
+ ## Behavior and migration notes
44
+
45
+ - This rule removes top-level `customSyntax`.
46
+ - It preserves the rest of the config object.
47
+ - Move syntax declarations into override entries that include explicit file patterns.
48
+
49
+ ## ESLint flat config example
50
+
51
+ ```ts
52
+ import stylelint2 from "eslint-plugin-stylelint-2";
53
+
54
+ export default [stylelint2.configs.configuration];
55
+ ```
56
+
57
+ ## When not to use it
58
+
59
+ Do not use this rule if your repository intentionally uses one global syntax parser for every linted file.
60
+
61
+ ## Package documentation
62
+
63
+ Stylelint package documentation:
64
+
65
+ > **Rule catalog ID:** R014
66
+
67
+ ## Further reading
68
+
69
+ - [Stylelint customSyntax](https://stylelint.io/user-guide/configure/#customsyntax)
70
+ - [Stylelint overrides](https://stylelint.io/user-guide/configure/#overrides)
@@ -0,0 +1,77 @@
1
+ # disallow-stylelint-default-severity
2
+
3
+ Disallow configuring Stylelint's top-level `defaultSeverity` option inside authored Stylelint config files.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets Stylelint config modules such as `stylelint.config.ts`, `stylelint.config.mjs`, and `.stylelintrc.js`.
8
+
9
+ It focuses on top-level exported config objects, including configs wrapped in `defineConfig(...)`.
10
+
11
+ ## What this rule reports
12
+
13
+ This rule reports Stylelint config objects that include a top-level `defaultSeverity` property.
14
+
15
+ ## Why this rule exists
16
+
17
+ `defaultSeverity` applies a global warning/error policy across rules. In an ESLint-first workflow, that global Stylelint severity layer can conflict with the severity contract already defined at the ESLint rule boundary.
18
+
19
+ Keeping severity explicit per Stylelint rule (or enforced at the ESLint config layer) makes review outcomes easier to reason about and avoids hidden global severity drift.
20
+
21
+ ## ❌ Incorrect
22
+
23
+ ```ts
24
+ export default {
25
+ defaultSeverity: "warning",
26
+ rules: {},
27
+ };
28
+ ```
29
+
30
+ ## ✅ Correct
31
+
32
+ ```ts
33
+ export default {
34
+ rules: {},
35
+ };
36
+ ```
37
+
38
+ ## Behavior and migration notes
39
+
40
+ - This rule removes the top-level `defaultSeverity` property.
41
+ - It preserves the rest of the config object.
42
+ - If you need warning/error policy differences, keep them explicit in rule-level secondary options or the ESLint config that enables this plugin.
43
+
44
+ ## Additional examples
45
+
46
+ ### ✅ Correct — severity stays local to a rule
47
+
48
+ ```ts
49
+ export default {
50
+ rules: {
51
+ "number-max-precision": [2, { severity: "warning" }],
52
+ },
53
+ };
54
+ ```
55
+
56
+ ## ESLint flat config example
57
+
58
+ ```ts
59
+ import stylelint2 from "eslint-plugin-stylelint-2";
60
+
61
+ export default [stylelint2.configs.configuration];
62
+ ```
63
+
64
+ ## When not to use it
65
+
66
+ Do not use this rule if your team intentionally enforces one global Stylelint default severity in committed config and accepts that policy being coupled to shared config files.
67
+
68
+ ## Package documentation
69
+
70
+ Stylelint package documentation:
71
+
72
+ > **Rule catalog ID:** R009
73
+
74
+ ## Further reading
75
+
76
+ - [Stylelint configuring guide](https://stylelint.io/user-guide/configure/#defaultseverity)
77
+ - [Stylelint severity option](https://stylelint.io/user-guide/configure/#severity)
@@ -0,0 +1,61 @@
1
+ # disallow-stylelint-duplicate-extends
2
+
3
+ Disallow duplicate entries in top-level Stylelint `extends` declarations.
4
+
5
+ ## Targeted pattern scope
6
+
7
+ This rule targets Stylelint config modules such as `stylelint.config.ts`, `stylelint.config.mjs`, and `.stylelintrc.js`.
8
+
9
+ It focuses on top-level exported config objects, including configs wrapped in `defineConfig(...)`.
10
+
11
+ ## What this rule reports
12
+
13
+ Reports duplicate string entries in top-level `extends` arrays.
14
+
15
+ ## Why this rule exists
16
+
17
+ Duplicate shared-config layers add noise and can obscure real config intent.
18
+
19
+ ## ❌ Incorrect
20
+
21
+ ```ts
22
+ export default {
23
+ extends: ["stylelint-config-standard", "stylelint-config-standard"],
24
+ rules: {},
25
+ };
26
+ ```
27
+
28
+ ## ✅ Correct
29
+
30
+ ```ts
31
+ export default {
32
+ extends: ["stylelint-config-standard"],
33
+ rules: {},
34
+ };
35
+ ```
36
+
37
+ ## Behavior and migration notes
38
+
39
+ This rule auto-fixes by keeping the first occurrence of each entry.
40
+
41
+ ## ESLint flat config example
42
+
43
+ ```ts
44
+ import stylelint2 from "eslint-plugin-stylelint-2";
45
+
46
+ export default [stylelint2.configs.configuration];
47
+ ```
48
+
49
+ ## When not to use it
50
+
51
+ Do not use this rule if your repository intentionally keeps duplicate entries for generated tooling compatibility.
52
+
53
+ ## Package documentation
54
+
55
+ Stylelint package documentation:
56
+
57
+ > **Rule catalog ID:** R023
58
+
59
+ ## Further reading
60
+
61
+ - [Stylelint extends](https://stylelint.io/user-guide/configure/#extends)