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,107 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Workspace dependency lookup helpers for Stylelint config validation rules.
4
+ */
5
+ import { existsSync, readFileSync } from "node:fs";
6
+ import { dirname, isAbsolute, resolve } from "node:path";
7
+ const nearestPackageJsonCache = new Map();
8
+ const dependencyNameSetCache = new Map();
9
+ const getNearestPackageJsonPath = (startDirectory) => {
10
+ const normalizedStartDirectory = resolve(startDirectory);
11
+ if (nearestPackageJsonCache.has(normalizedStartDirectory)) {
12
+ return nearestPackageJsonCache.get(normalizedStartDirectory);
13
+ }
14
+ let currentDirectory = normalizedStartDirectory;
15
+ while (true) {
16
+ const packageJsonPath = resolve(currentDirectory, "package.json");
17
+ if (existsSync(packageJsonPath)) {
18
+ nearestPackageJsonCache.set(normalizedStartDirectory, packageJsonPath);
19
+ return packageJsonPath;
20
+ }
21
+ const parentDirectory = dirname(currentDirectory);
22
+ if (parentDirectory === currentDirectory) {
23
+ nearestPackageJsonCache.set(normalizedStartDirectory, undefined);
24
+ return undefined;
25
+ }
26
+ currentDirectory = parentDirectory;
27
+ }
28
+ };
29
+ const toDependencyNameSet = (packageJson) => {
30
+ const dependencyNames = new Set();
31
+ const dependencyRecords = [
32
+ packageJson.dependencies,
33
+ packageJson.devDependencies,
34
+ packageJson.peerDependencies,
35
+ packageJson.optionalDependencies,
36
+ ];
37
+ for (const dependencyRecord of dependencyRecords) {
38
+ if (dependencyRecord === undefined) {
39
+ continue;
40
+ }
41
+ for (const dependencyName of Object.keys(dependencyRecord)) {
42
+ dependencyNames.add(dependencyName);
43
+ }
44
+ }
45
+ return dependencyNames;
46
+ };
47
+ const readDependencyNamesFromPackageJson = (packageJsonPath) => {
48
+ if (dependencyNameSetCache.has(packageJsonPath)) {
49
+ return dependencyNameSetCache.get(packageJsonPath);
50
+ }
51
+ try {
52
+ const packageJsonText = readFileSync(packageJsonPath, "utf8");
53
+ const parsedPackageJson = JSON.parse(packageJsonText);
54
+ if (parsedPackageJson === null ||
55
+ typeof parsedPackageJson !== "object") {
56
+ dependencyNameSetCache.set(packageJsonPath, undefined);
57
+ return undefined;
58
+ }
59
+ const dependencyNameSet = toDependencyNameSet(parsedPackageJson);
60
+ dependencyNameSetCache.set(packageJsonPath, dependencyNameSet);
61
+ return dependencyNameSet;
62
+ }
63
+ catch {
64
+ dependencyNameSetCache.set(packageJsonPath, undefined);
65
+ return undefined;
66
+ }
67
+ };
68
+ /**
69
+ * Resolve dependency names from the nearest package.json for a linted file.
70
+ *
71
+ * @param physicalFilename - ESLint physical filename.
72
+ * @param cwd - ESLint execution cwd.
73
+ *
74
+ * @returns Dependency-name set or `undefined` when unavailable.
75
+ */
76
+ export const getDependencyNamesForFile = (physicalFilename, cwd) => {
77
+ const startDirectory = isAbsolute(physicalFilename)
78
+ ? dirname(physicalFilename)
79
+ : cwd;
80
+ const packageJsonPath = getNearestPackageJsonPath(startDirectory) ??
81
+ getNearestPackageJsonPath(resolve(cwd));
82
+ if (packageJsonPath === undefined) {
83
+ return undefined;
84
+ }
85
+ return readDependencyNamesFromPackageJson(packageJsonPath);
86
+ };
87
+ /**
88
+ * Get package name root from a package specifier or subpath.
89
+ *
90
+ * @param specifier - Package specifier from Stylelint extends/plugins entry.
91
+ *
92
+ * @returns Package name root (for example `stylelint-order`) when parsable.
93
+ */
94
+ export const getPackageNameFromSpecifier = (specifier) => {
95
+ if (specifier.length === 0 || specifier.startsWith("node:")) {
96
+ return undefined;
97
+ }
98
+ if (specifier.startsWith("@")) {
99
+ const [scope, packageName] = specifier.split("/");
100
+ if (scope === undefined || packageName === undefined) {
101
+ return undefined;
102
+ }
103
+ return `${scope}/${packageName}`;
104
+ }
105
+ return specifier.split("/")[0];
106
+ };
107
+ //# sourceMappingURL=stylelint-package-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-package-dependencies.js","sourceRoot":"","sources":["../../src/_internal/stylelint-package-dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SerializableStylelintLintOptions, SerializableStylelintResult } from "./stylelint-worker-types.js";
2
+ /** Run Stylelint synchronously for one source string. */
3
+ export declare const runStylelintSynchronously: (options: SerializableStylelintLintOptions) => SerializableStylelintResult;
4
+ //# sourceMappingURL=stylelint-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-runner.d.ts","sourceRoot":"","sources":["../../src/_internal/stylelint-runner.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACR,gCAAgC,EAChC,2BAA2B,EAE9B,MAAM,6BAA6B,CAAC;AA8ErC,yDAAyD;AACzD,eAAO,MAAM,yBAAyB,GAClC,SAAS,gCAAgC,KAC1C,2BAiDF,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Synchronous facade over Stylelint's async Node API using a dedicated worker.
4
+ */
5
+ import { MessageChannel, receiveMessageOnPort, Worker, } from "node:worker_threads";
6
+ const WAIT_TIMEOUT_IN_MILLISECONDS = 30_000;
7
+ const WORKER_DONE_STATE = 1;
8
+ const lintResultCache = new Map();
9
+ let stylelintWorker = null;
10
+ const usesTypeScriptSourceWorker = import.meta.url.endsWith(".ts");
11
+ const workerModuleUrl = new URL(usesTypeScriptSourceWorker
12
+ ? "./stylelint-worker.ts"
13
+ : "./stylelint-worker.js", import.meta.url);
14
+ const createWorker = () => new Worker(workerModuleUrl, {
15
+ name: "stylelint-eslint-bridge",
16
+ ...(usesTypeScriptSourceWorker
17
+ ? { execArgv: ["--experimental-strip-types"] }
18
+ : {}),
19
+ });
20
+ const resetWorker = () => {
21
+ const workerToTerminate = stylelintWorker;
22
+ if (workerToTerminate === null) {
23
+ return;
24
+ }
25
+ void (async () => {
26
+ try {
27
+ await workerToTerminate.terminate();
28
+ }
29
+ catch {
30
+ // Ignore termination failures while resetting worker state.
31
+ }
32
+ })();
33
+ stylelintWorker = null;
34
+ };
35
+ const getWorker = () => {
36
+ if (stylelintWorker === null) {
37
+ stylelintWorker = createWorker();
38
+ stylelintWorker.once("exit", () => {
39
+ stylelintWorker = null;
40
+ });
41
+ }
42
+ return stylelintWorker;
43
+ };
44
+ const createCacheKey = (options) => JSON.stringify(options);
45
+ const readWorkerResponse = (response) => {
46
+ if (response === undefined) {
47
+ throw new Error("Stylelint worker finished without returning a response.");
48
+ }
49
+ if (response.ok) {
50
+ return response.result;
51
+ }
52
+ const error = new Error(response.error.message);
53
+ error.name = response.error.name;
54
+ if (response.error.stack !== undefined) {
55
+ error.stack = response.error.stack;
56
+ }
57
+ throw error;
58
+ };
59
+ /** Run Stylelint synchronously for one source string. */
60
+ export const runStylelintSynchronously = (options) => {
61
+ const cacheKey = createCacheKey(options);
62
+ const cachedResult = lintResultCache.get(cacheKey);
63
+ if (cachedResult !== undefined) {
64
+ return cachedResult;
65
+ }
66
+ const worker = getWorker();
67
+ const signalBuffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT);
68
+ const signal = new Int32Array(signalBuffer);
69
+ const { port1, port2 } = new MessageChannel();
70
+ /* eslint-disable sdl/no-postmessage-without-origin-allowlist -- Worker threads use structured-clone messaging, not browser window.postMessage. */
71
+ worker.postMessage({
72
+ options,
73
+ port: port2,
74
+ signalBuffer,
75
+ }, [port2]);
76
+ /* eslint-enable sdl/no-postmessage-without-origin-allowlist -- Re-enable after the worker-thread message dispatch. */
77
+ const waitResult = Atomics.wait(signal, 0, 0, WAIT_TIMEOUT_IN_MILLISECONDS);
78
+ if (waitResult === "timed-out") {
79
+ port1.close();
80
+ resetWorker();
81
+ throw new Error("Timed out while waiting for the Stylelint worker to finish.");
82
+ }
83
+ if (Atomics.load(signal, 0) !== WORKER_DONE_STATE) {
84
+ port1.close();
85
+ throw new Error("Stylelint worker did not enter a completed state.");
86
+ }
87
+ const workerMessage = receiveMessageOnPort(port1);
88
+ port1.close();
89
+ const result = readWorkerResponse(workerMessage?.message);
90
+ lintResultCache.set(cacheKey, result);
91
+ return result;
92
+ };
93
+ //# sourceMappingURL=stylelint-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-runner.js","sourceRoot":"","sources":["../../src/_internal/stylelint-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Serializable contracts shared between the Stylelint worker and its sync client.
4
+ */
5
+ import type { MessagePort } from "node:worker_threads";
6
+ import type stylelint from "stylelint";
7
+ /** Rule option subset forwarded to Stylelint's Node API. */
8
+ export type SerializableStylelintLintOptions = Readonly<{
9
+ allowEmptyInput?: boolean;
10
+ code: string;
11
+ codeFilename: string;
12
+ configBasedir?: string;
13
+ configFile?: string;
14
+ customSyntax?: string;
15
+ cwd?: string;
16
+ ignoreDisables?: boolean;
17
+ quiet?: boolean;
18
+ }>;
19
+ /** Minimal serializable parse-error payload returned to the ESLint rule. */
20
+ export type SerializableStylelintParseError = Readonly<{
21
+ column: number;
22
+ endColumn?: number;
23
+ endLine?: number;
24
+ line: number;
25
+ message: string;
26
+ rule: "CssSyntaxError";
27
+ }>;
28
+ /** Minimal result payload returned from the worker. */
29
+ export type SerializableStylelintResult = Readonly<{
30
+ deprecations: readonly string[];
31
+ invalidOptionWarnings: readonly string[];
32
+ parseErrors: readonly SerializableStylelintParseError[];
33
+ report: string;
34
+ warnings: readonly SerializableStylelintWarning[];
35
+ }>;
36
+ /** Minimal serializable warning payload returned to the ESLint rule. */
37
+ export type SerializableStylelintWarning = Readonly<{
38
+ column: number;
39
+ endColumn?: number;
40
+ endLine?: number;
41
+ fix?: stylelint.EditInfo;
42
+ line: number;
43
+ rule: string;
44
+ severity: stylelint.Severity;
45
+ text: string;
46
+ url?: string;
47
+ }>;
48
+ /** Failure response posted from the worker. */
49
+ export type StylelintWorkerErrorResponse = Readonly<{
50
+ error: Readonly<{
51
+ message: string;
52
+ name: string;
53
+ stack?: string;
54
+ }>;
55
+ ok: false;
56
+ }>;
57
+ /** Request posted from the main thread to the worker. */
58
+ export type StylelintWorkerRequest = Readonly<{
59
+ options: SerializableStylelintLintOptions;
60
+ port: MessagePort;
61
+ signalBuffer: SharedArrayBuffer;
62
+ }>;
63
+ /** Worker response union used by the sync client. */
64
+ export type StylelintWorkerResponse = StylelintWorkerErrorResponse | StylelintWorkerSuccessResponse;
65
+ /** Success response posted from the worker. */
66
+ export type StylelintWorkerSuccessResponse = Readonly<{
67
+ ok: true;
68
+ result: SerializableStylelintResult;
69
+ }>;
70
+ //# sourceMappingURL=stylelint-worker-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-worker-types.d.ts","sourceRoot":"","sources":["../../src/_internal/stylelint-worker-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,MAAM,MAAM,gCAAgC,GAAG,QAAQ,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;CAC1B,CAAC,CAAC;AAEH,uDAAuD;AACvD,MAAM,MAAM,2BAA2B,GAAG,QAAQ,CAAC;IAC/C,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,WAAW,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACrD,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,+CAA+C;AAC/C,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAChD,KAAK,EAAE,QAAQ,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,EAAE,EAAE,KAAK,CAAC;CACb,CAAC,CAAC;AAEH,yDAAyD;AACzD,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC1C,OAAO,EAAE,gCAAgC,CAAC;IAC1C,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;CACnC,CAAC,CAAC;AAEH,qDAAqD;AACrD,MAAM,MAAM,uBAAuB,GAC7B,4BAA4B,GAC5B,8BAA8B,CAAC;AAErC,+CAA+C;AAC/C,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IAClD,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,2BAA2B,CAAC;CACvC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stylelint-worker-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-worker-types.js","sourceRoot":"","sources":["../../src/_internal/stylelint-worker-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stylelint-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-worker.d.ts","sourceRoot":"","sources":["../../src/_internal/stylelint-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Dedicated worker that runs Stylelint's async Node API for sync ESLint rule consumers.
4
+ */
5
+ import { isMainThread, parentPort } from "node:worker_threads";
6
+ import stylelint from "stylelint";
7
+ const DONE_STATE = 1;
8
+ const toSerializableWarning = (warning) => ({
9
+ column: warning.column,
10
+ ...(warning.endColumn === undefined
11
+ ? {}
12
+ : { endColumn: warning.endColumn }),
13
+ ...(warning.endLine === undefined ? {} : { endLine: warning.endLine }),
14
+ ...(warning.fix === undefined ? {} : { fix: warning.fix }),
15
+ line: warning.line,
16
+ rule: warning.rule,
17
+ severity: warning.severity,
18
+ text: warning.text,
19
+ ...(warning.url === undefined ? {} : { url: warning.url }),
20
+ });
21
+ const toSerializableParseError = (parseError) => ({
22
+ column: parseError.column,
23
+ ...(parseError.endColumn === undefined
24
+ ? {}
25
+ : { endColumn: parseError.endColumn }),
26
+ ...(parseError.endLine === undefined
27
+ ? {}
28
+ : { endLine: parseError.endLine }),
29
+ line: parseError.line,
30
+ message: parseError.text,
31
+ rule: "CssSyntaxError",
32
+ });
33
+ const toSerializableResult = (result) => {
34
+ const firstResult = result.results[0];
35
+ return {
36
+ deprecations: firstResult?.deprecations.map((entry) => entry.text) ?? [],
37
+ invalidOptionWarnings: firstResult?.invalidOptionWarnings.map((entry) => entry.text) ?? [],
38
+ parseErrors: firstResult?.parseErrors.map((parseError) => toSerializableParseError(parseError)) ?? [],
39
+ report: result.report,
40
+ warnings: firstResult?.warnings.map((warning) => toSerializableWarning(warning)) ?? [],
41
+ };
42
+ };
43
+ const notifyCompletion = (request, response) => {
44
+ // eslint-disable-next-line unicorn/require-post-message-target-origin -- Worker MessagePort.postMessage does not support browser target origins.
45
+ request.port.postMessage(response);
46
+ request.port.close();
47
+ const signal = new Int32Array(request.signalBuffer);
48
+ Atomics.store(signal, 0, DONE_STATE);
49
+ Atomics.notify(signal, 0);
50
+ };
51
+ const handleRequest = async (request) => {
52
+ try {
53
+ const lintResult = await stylelint.lint({
54
+ code: request.options.code,
55
+ codeFilename: request.options.codeFilename,
56
+ computeEditInfo: true,
57
+ ...(request.options.allowEmptyInput === undefined
58
+ ? {}
59
+ : { allowEmptyInput: request.options.allowEmptyInput }),
60
+ ...(request.options.configBasedir === undefined
61
+ ? {}
62
+ : { configBasedir: request.options.configBasedir }),
63
+ ...(request.options.configFile === undefined
64
+ ? {}
65
+ : { configFile: request.options.configFile }),
66
+ ...(request.options.cwd === undefined
67
+ ? {}
68
+ : { cwd: request.options.cwd }),
69
+ ...(request.options.customSyntax === undefined
70
+ ? {}
71
+ : { customSyntax: request.options.customSyntax }),
72
+ ...(request.options.ignoreDisables === undefined
73
+ ? {}
74
+ : { ignoreDisables: request.options.ignoreDisables }),
75
+ ...(request.options.quiet === undefined
76
+ ? {}
77
+ : { quiet: request.options.quiet }),
78
+ });
79
+ notifyCompletion(request, {
80
+ ok: true,
81
+ result: toSerializableResult(lintResult),
82
+ });
83
+ }
84
+ catch (error) {
85
+ const normalizedError = error instanceof Error
86
+ ? {
87
+ message: error.message,
88
+ name: error.name,
89
+ ...(error.stack === undefined
90
+ ? {}
91
+ : { stack: error.stack }),
92
+ }
93
+ : {
94
+ message: `Unknown Stylelint worker failure: ${String(error)}`,
95
+ name: "StylelintWorkerError",
96
+ };
97
+ notifyCompletion(request, {
98
+ error: normalizedError,
99
+ ok: false,
100
+ });
101
+ }
102
+ };
103
+ if (!isMainThread) {
104
+ const onMessage = (request) => {
105
+ void handleRequest(request);
106
+ };
107
+ const removeOnExit = () => {
108
+ parentPort?.off("message", onMessage);
109
+ };
110
+ parentPort?.on("message", onMessage);
111
+ process.once("exit", removeOnExit);
112
+ }
113
+ //# sourceMappingURL=stylelint-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-worker.js","sourceRoot":"","sources":["../../src/_internal/stylelint-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared preset/config reference constants for eslint-plugin-stylelint-2.
4
+ */
5
+ /** Canonical flat-config preset keys exposed through `plugin.configs`. */
6
+ export declare const stylelint2ConfigNames: readonly ["all", "configuration", "configs", "recommended", "stylelintOnly", "stylesheets"];
7
+ /** Shared metadata used by docs, README rendering, and config tests. */
8
+ export type Stylelint2ConfigMetadata = Readonly<{
9
+ icon: string;
10
+ presetName: `stylelint2:${Stylelint2ConfigName}`;
11
+ readmeOrder: number;
12
+ }>;
13
+ /** Canonical flat-config preset key type exposed through `plugin.configs`. */
14
+ export type Stylelint2ConfigName = (typeof stylelint2ConfigNames)[number];
15
+ /** Canonical metadata for each exported preset. */
16
+ export declare const stylelint2ConfigMetadataByName: Readonly<Record<Stylelint2ConfigName, Stylelint2ConfigMetadata>>;
17
+ /** Stable README legend/rendering order for preset icons. */
18
+ export declare const stylelint2ConfigNamesByReadmeOrder: readonly Stylelint2ConfigName[];
19
+ /** Fully-qualified preset references used in rule metadata. */
20
+ export declare const stylelint2ConfigReferenceToName: Readonly<{
21
+ "stylelint2.configs.all": "all";
22
+ "stylelint2.configs.configs": "configuration";
23
+ "stylelint2.configs.configuration": "configuration";
24
+ "stylelint2.configs.recommended": "recommended";
25
+ "stylelint2.configs.stylelintOnly": "stylelintOnly";
26
+ "stylelint2.configs.stylesheets": "stylelintOnly";
27
+ }>;
28
+ /** Fully-qualified preset reference type accepted in docs metadata. */
29
+ export type Stylelint2ConfigReference = keyof typeof stylelint2ConfigReferenceToName;
30
+ /** Check whether a string is a supported preset reference. */
31
+ export declare const isStylelint2ConfigReference: (value: string) => value is Stylelint2ConfigReference;
32
+ //# sourceMappingURL=stylelint2-config-references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint2-config-references.d.ts","sourceRoot":"","sources":["../../src/_internal/stylelint2-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,6FAOxB,CAAC;AAEX,wEAAwE;AACxE,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,oBAAoB,EAAE,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,mDAAmD;AACnD,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CACjD,MAAM,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,CAgCzD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,kCAAkC,EAAE,SAAS,oBAAoB,EAMzE,CAAC;AAEN,+DAA+D;AAC/D,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC;IACnD,wBAAwB,EAAE,KAAK,CAAC;IAChC,4BAA4B,EAAE,eAAe,CAAC;IAC9C,kCAAkC,EAAE,eAAe,CAAC;IACpD,gCAAgC,EAAE,aAAa,CAAC;IAChD,kCAAkC,EAAE,eAAe,CAAC;IACpD,gCAAgC,EAAE,eAAe,CAAC;CACrD,CAOA,CAAC;AAEF,uEAAuE;AACvE,MAAM,MAAM,yBAAyB,GACjC,MAAM,OAAO,+BAA+B,CAAC;AAEjD,8DAA8D;AAC9D,eAAO,MAAM,2BAA2B,GACpC,OAAO,MAAM,KACd,KAAK,IAAI,yBAC6C,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared preset/config reference constants for eslint-plugin-stylelint-2.
4
+ */
5
+ /** Canonical flat-config preset keys exposed through `plugin.configs`. */
6
+ export const stylelint2ConfigNames = [
7
+ "all",
8
+ "configuration",
9
+ "configs",
10
+ "recommended",
11
+ "stylelintOnly",
12
+ "stylesheets",
13
+ ];
14
+ /** Canonical metadata for each exported preset. */
15
+ export const stylelint2ConfigMetadataByName = {
16
+ all: {
17
+ icon: "🟣",
18
+ presetName: "stylelint2:all",
19
+ readmeOrder: 4,
20
+ },
21
+ configs: {
22
+ icon: "🔧",
23
+ presetName: "stylelint2:configs",
24
+ readmeOrder: 6,
25
+ },
26
+ configuration: {
27
+ icon: "🔧",
28
+ presetName: "stylelint2:configuration",
29
+ readmeOrder: 3,
30
+ },
31
+ recommended: {
32
+ icon: "🟡",
33
+ presetName: "stylelint2:recommended",
34
+ readmeOrder: 1,
35
+ },
36
+ stylelintOnly: {
37
+ icon: "🎨",
38
+ presetName: "stylelint2:stylelintOnly",
39
+ readmeOrder: 2,
40
+ },
41
+ stylesheets: {
42
+ icon: "🎨",
43
+ presetName: "stylelint2:stylesheets",
44
+ readmeOrder: 5,
45
+ },
46
+ };
47
+ /** Stable README legend/rendering order for preset icons. */
48
+ export const stylelint2ConfigNamesByReadmeOrder = [
49
+ "recommended",
50
+ "stylelintOnly",
51
+ "configuration",
52
+ "all",
53
+ ];
54
+ /** Fully-qualified preset references used in rule metadata. */
55
+ export const stylelint2ConfigReferenceToName = {
56
+ "stylelint2.configs.all": "all",
57
+ "stylelint2.configs.configs": "configuration",
58
+ "stylelint2.configs.configuration": "configuration",
59
+ "stylelint2.configs.recommended": "recommended",
60
+ "stylelint2.configs.stylelintOnly": "stylelintOnly",
61
+ "stylelint2.configs.stylesheets": "stylelintOnly",
62
+ };
63
+ /** Check whether a string is a supported preset reference. */
64
+ export const isStylelint2ConfigReference = (value) => Object.hasOwn(stylelint2ConfigReferenceToName, value);
65
+ //# sourceMappingURL=stylelint2-config-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint2-config-references.js","sourceRoot":"","sources":["../../src/_internal/stylelint2-config-references.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,KAAK;IACL,eAAe;IACf,SAAS;IACT,aAAa;IACb,eAAe;IACf,aAAa;CACP,CAAC;AAYX,mDAAmD;AACnD,MAAM,CAAC,MAAM,8BAA8B,GAEvC;IACA,GAAG,EAAE;QACD,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,CAAC;KACjB;IACD,OAAO,EAAE;QACL,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,oBAAoB;QAChC,WAAW,EAAE,CAAC;KACjB;IACD,aAAa,EAAE;QACX,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,0BAA0B;QACtC,WAAW,EAAE,CAAC;KACjB;IACD,WAAW,EAAE;QACT,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,wBAAwB;QACpC,WAAW,EAAE,CAAC;KACjB;IACD,aAAa,EAAE;QACX,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,0BAA0B;QACtC,WAAW,EAAE,CAAC;KACjB;IACD,WAAW,EAAE;QACT,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,wBAAwB;QACpC,WAAW,EAAE,CAAC;KACjB;CACJ,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,kCAAkC,GAC3C;IACI,aAAa;IACb,eAAe;IACf,eAAe;IACf,KAAK;CACR,CAAC;AAEN,+DAA+D;AAC/D,MAAM,CAAC,MAAM,+BAA+B,GAOvC;IACD,wBAAwB,EAAE,KAAK;IAC/B,4BAA4B,EAAE,eAAe;IAC7C,kCAAkC,EAAE,eAAe;IACnD,gCAAgC,EAAE,aAAa;IAC/C,kCAAkC,EAAE,eAAe;IACnD,gCAAgC,EAAE,eAAe;CACpD,CAAC;AAMF,8DAA8D;AAC9D,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,KAAa,EACqB,EAAE,CACpC,MAAM,CAAC,MAAM,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @packageDocumentation
3
+ * Shared rule creation helpers for eslint-plugin-stylelint-2.
4
+ */
5
+ import type { TSESLint } from "@typescript-eslint/utils";
6
+ import type { Stylelint2ConfigReference } from "./stylelint2-config-references.js";
7
+ /** Small helper for rule context typing in local helpers. */
8
+ export type GenericRuleContext<MessageIds extends string, Options extends readonly unknown[]> = Readonly<TSESLint.RuleContext<MessageIds, Options>>;
9
+ /** CSS/JS-agnostic listener map used by this plugin's rules. */
10
+ export type GenericRuleListener = Readonly<Record<string, (node: unknown) => void>>;
11
+ /**
12
+ * Rule definition shape accepted by `createTypedRule`, including typed
13
+ * `create(context, options)` access with merged default options.
14
+ */
15
+ export type RuleDefinitionWithDocs<MessageIds extends string, Options extends readonly unknown[]> = Omit<RuleModuleWithDocs<MessageIds, Options>, "create" | "meta"> & {
16
+ create: (context: GenericRuleContext<MessageIds, Options>, options: Options) => TSESLint.RuleListener;
17
+ meta: RuleModuleWithDocs<MessageIds, Options>["meta"];
18
+ };
19
+ /** Rule module contract used by registry and plugin wiring. */
20
+ export type RuleModuleWithDocs<MessageIds extends string, Options extends readonly unknown[]> = TSESLint.RuleModule<MessageIds, Options> & {
21
+ meta: TSESLint.RuleMetaData<MessageIds, Stylelint2RuleDocs, Options> & {
22
+ deprecated: boolean;
23
+ docs: Stylelint2RuleDocs;
24
+ };
25
+ name: string;
26
+ };
27
+ /** Plugin-specific metadata extensions for `meta.docs`. */
28
+ export type Stylelint2RuleDocs = Readonly<{
29
+ configs: readonly Stylelint2ConfigReference[] | Stylelint2ConfigReference;
30
+ description: string;
31
+ frozen?: boolean;
32
+ recommended: boolean;
33
+ requiresTypeChecking: boolean;
34
+ url: string;
35
+ }>;
36
+ /** Identity-preserving rule creator with canonical docs URL enforcement. */
37
+ export declare const createTypedRule: <MessageIds extends string, Options extends readonly unknown[]>(ruleDefinition: Readonly<RuleDefinitionWithDocs<MessageIds, Options>>) => RuleModuleWithDocs<MessageIds, Options>;
38
+ /** Convert a generic string-keyed listener map into an ESLint rule listener. */
39
+ export declare const toRuleListener: (listener: GenericRuleListener) => TSESLint.RuleListener;
40
+ /** Create a single range replacement fixer for a Stylelint edit. */
41
+ export declare const replaceTextRange: (fixer: TSESLint.RuleFixer, range: readonly [number, number], text: string) => TSESLint.RuleFix;
42
+ //# sourceMappingURL=typed-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-rule.d.ts","sourceRoot":"","sources":["../../src/_internal/typed-rule.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAInF,6DAA6D;AAC7D,MAAM,MAAM,kBAAkB,CAC1B,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,SAAS,OAAO,EAAE,IAClC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAExD,gEAAgE;AAChE,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CACtC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAC9B,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,SAAS,OAAO,EAAE,IAClC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG;IACnE,MAAM,EAAE,CACJ,OAAO,EAAE,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,EAChD,OAAO,EAAE,OAAO,KACf,QAAQ,CAAC,YAAY,CAAC;IAC3B,IAAI,EAAE,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;CACzD,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,kBAAkB,CAC1B,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,SAAS,OAAO,EAAE,IAClC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG;IAC3C,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,CAAC,GAAG;QACnE,UAAU,EAAE,OAAO,CAAC;QACpB,IAAI,EAAE,kBAAkB,CAAC;KAC5B,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,SAAS,yBAAyB,EAAE,GAAG,yBAAyB,CAAC;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAkEH,4EAA4E;AAC5E,eAAO,MAAM,eAAe,GACxB,UAAU,SAAS,MAAM,EACzB,OAAO,SAAS,SAAS,OAAO,EAAE,EAElC,gBAAgB,QAAQ,CAAC,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,KACtE,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAwBxC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,cAAc,GACvB,UAAU,mBAAmB,KAC9B,QAAQ,CAAC,YAA4D,CAAC;AAEzE,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,GACzB,OAAO,QAAQ,CAAC,SAAS,EACzB,OAAO,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,MAAM,MAAM,KACb,QAAQ,CAAC,OAAmD,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { createRuleDocsUrl } from "./rule-docs-url.js";
2
+ const isReadonlyRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
3
+ const mergeOptionValue = (defaultValue, configuredValue) => {
4
+ if (configuredValue === undefined) {
5
+ return defaultValue;
6
+ }
7
+ if (isReadonlyRecord(defaultValue) && isReadonlyRecord(configuredValue)) {
8
+ const mergedValue = { ...defaultValue };
9
+ for (const [propertyName, propertyValue] of Object.entries(configuredValue)) {
10
+ mergedValue[propertyName] = mergeOptionValue(defaultValue[propertyName], propertyValue);
11
+ }
12
+ return mergedValue;
13
+ }
14
+ return configuredValue;
15
+ };
16
+ const mergeDefaultOptions = (defaultOptions, configuredOptions) => {
17
+ const mergedOptions = [];
18
+ const maxLength = Math.max(defaultOptions.length, configuredOptions.length);
19
+ for (let index = 0; index < maxLength; index += 1) {
20
+ mergedOptions.push(mergeOptionValue(defaultOptions[index], configuredOptions[index]));
21
+ }
22
+ return mergedOptions;
23
+ };
24
+ const getMergedRuleOptions = (ruleDefinition, configuredOptions) => {
25
+ const { defaultOptions } = ruleDefinition.meta;
26
+ if (defaultOptions === undefined) {
27
+ return configuredOptions;
28
+ }
29
+ return mergeDefaultOptions(defaultOptions, configuredOptions);
30
+ };
31
+ /** Identity-preserving rule creator with canonical docs URL enforcement. */
32
+ export const createTypedRule = (ruleDefinition) => {
33
+ const canonicalDocsUrl = createRuleDocsUrl(ruleDefinition.name);
34
+ if (ruleDefinition.meta.docs.url !== canonicalDocsUrl) {
35
+ throw new TypeError(`Rule '${ruleDefinition.name}' must declare docs.url as '${canonicalDocsUrl}'.`);
36
+ }
37
+ return {
38
+ ...ruleDefinition,
39
+ create(context) {
40
+ const mergedOptions = getMergedRuleOptions(ruleDefinition, context.options);
41
+ return ruleDefinition.create(context, mergedOptions);
42
+ },
43
+ meta: {
44
+ ...ruleDefinition.meta,
45
+ docs: ruleDefinition.meta.docs,
46
+ },
47
+ };
48
+ };
49
+ /** Convert a generic string-keyed listener map into an ESLint rule listener. */
50
+ export const toRuleListener = (listener) => listener;
51
+ /** Create a single range replacement fixer for a Stylelint edit. */
52
+ export const replaceTextRange = (fixer, range, text) => fixer.replaceTextRange([...range], text);
53
+ //# sourceMappingURL=typed-rule.js.map