@stylelint/language-server 1.0.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 (334) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +39 -0
  3. package/bin/stylelint-language-server.mjs +25 -0
  4. package/build/di/container.d.ts +12 -0
  5. package/build/di/container.js +76 -0
  6. package/build/di/container.js.map +1 -0
  7. package/build/di/hooks.d.ts +16 -0
  8. package/build/di/hooks.js +25 -0
  9. package/build/di/hooks.js.map +1 -0
  10. package/build/di/index.d.ts +7 -0
  11. package/build/di/index.js +8 -0
  12. package/build/di/index.js.map +1 -0
  13. package/build/di/inject.d.ts +48 -0
  14. package/build/di/inject.js +55 -0
  15. package/build/di/inject.js.map +1 -0
  16. package/build/di/module.d.ts +51 -0
  17. package/build/di/module.js +93 -0
  18. package/build/di/module.js.map +1 -0
  19. package/build/di/runtime/application.d.ts +17 -0
  20. package/build/di/runtime/application.js +209 -0
  21. package/build/di/runtime/application.js.map +1 -0
  22. package/build/di/runtime/decorators.d.ts +14 -0
  23. package/build/di/runtime/decorators.js +26 -0
  24. package/build/di/runtime/decorators.js.map +1 -0
  25. package/build/di/runtime/index.d.ts +3 -0
  26. package/build/di/runtime/index.js +4 -0
  27. package/build/di/runtime/index.js.map +1 -0
  28. package/build/di/runtime/symbols.d.ts +1 -0
  29. package/build/di/runtime/symbols.js +2 -0
  30. package/build/di/runtime/symbols.js.map +1 -0
  31. package/build/di/runtime/types.d.ts +20 -0
  32. package/build/di/runtime/types.js +2 -0
  33. package/build/di/runtime/types.js.map +1 -0
  34. package/build/di/tokens.d.ts +8 -0
  35. package/build/di/tokens.js +7 -0
  36. package/build/di/tokens.js.map +1 -0
  37. package/build/di/types.d.ts +16 -0
  38. package/build/di/types.js +2 -0
  39. package/build/di/types.js.map +1 -0
  40. package/build/server/config/default-options.d.ts +2 -0
  41. package/build/server/config/default-options.js +29 -0
  42. package/build/server/config/default-options.js.map +1 -0
  43. package/build/server/decorators.d.ts +121 -0
  44. package/build/server/decorators.js +272 -0
  45. package/build/server/decorators.js.map +1 -0
  46. package/build/server/index.d.ts +2 -0
  47. package/build/server/index.js +3 -0
  48. package/build/server/index.js.map +1 -0
  49. package/build/server/modules/documents.module.d.ts +1 -0
  50. package/build/server/modules/documents.module.js +12 -0
  51. package/build/server/modules/documents.module.js.map +1 -0
  52. package/build/server/modules/index.d.ts +6 -0
  53. package/build/server/modules/index.js +7 -0
  54. package/build/server/modules/index.js.map +1 -0
  55. package/build/server/modules/infrastructure.module.d.ts +1 -0
  56. package/build/server/modules/infrastructure.module.js +7 -0
  57. package/build/server/modules/infrastructure.module.js.map +1 -0
  58. package/build/server/modules/lsp.module.d.ts +1 -0
  59. package/build/server/modules/lsp.module.js +18 -0
  60. package/build/server/modules/lsp.module.js.map +1 -0
  61. package/build/server/modules/platform.module.d.ts +4 -0
  62. package/build/server/modules/platform.module.js +33 -0
  63. package/build/server/modules/platform.module.js.map +1 -0
  64. package/build/server/modules/stylelint-runtime.module.d.ts +1 -0
  65. package/build/server/modules/stylelint-runtime.module.js +19 -0
  66. package/build/server/modules/stylelint-runtime.module.js.map +1 -0
  67. package/build/server/modules/workspace.module.d.ts +1 -0
  68. package/build/server/modules/workspace.module.js +7 -0
  69. package/build/server/modules/workspace.module.js.map +1 -0
  70. package/build/server/runtime/application.d.ts +19 -0
  71. package/build/server/runtime/application.js +22 -0
  72. package/build/server/runtime/application.js.map +1 -0
  73. package/build/server/runtime/language-server-feature.d.ts +13 -0
  74. package/build/server/runtime/language-server-feature.js +142 -0
  75. package/build/server/runtime/language-server-feature.js.map +1 -0
  76. package/build/server/runtime/lsp-service-runtime.d.ts +15 -0
  77. package/build/server/runtime/lsp-service-runtime.js +133 -0
  78. package/build/server/runtime/lsp-service-runtime.js.map +1 -0
  79. package/build/server/server.d.ts +13 -0
  80. package/build/server/server.js +38 -0
  81. package/build/server/server.js.map +1 -0
  82. package/build/server/server.module.d.ts +1 -0
  83. package/build/server/server.module.js +13 -0
  84. package/build/server/server.module.js.map +1 -0
  85. package/build/server/services/documents/document-diagnostics.service.d.ts +15 -0
  86. package/build/server/services/documents/document-diagnostics.service.js +88 -0
  87. package/build/server/services/documents/document-diagnostics.service.js.map +1 -0
  88. package/build/server/services/documents/document-fixes.service.d.ts +14 -0
  89. package/build/server/services/documents/document-fixes.service.js +94 -0
  90. package/build/server/services/documents/document-fixes.service.js.map +1 -0
  91. package/build/server/services/documents/index.d.ts +2 -0
  92. package/build/server/services/documents/index.js +3 -0
  93. package/build/server/services/documents/index.js.map +1 -0
  94. package/build/server/services/index.d.ts +5 -0
  95. package/build/server/services/index.js +6 -0
  96. package/build/server/services/index.js.map +1 -0
  97. package/build/server/services/infrastructure/command.service.d.ts +22 -0
  98. package/build/server/services/infrastructure/command.service.js +151 -0
  99. package/build/server/services/infrastructure/command.service.js.map +1 -0
  100. package/build/server/services/infrastructure/index.d.ts +4 -0
  101. package/build/server/services/infrastructure/index.js +5 -0
  102. package/build/server/services/infrastructure/index.js.map +1 -0
  103. package/build/server/services/infrastructure/logging.service.d.ts +6 -0
  104. package/build/server/services/infrastructure/logging.service.js +4 -0
  105. package/build/server/services/infrastructure/logging.service.js.map +1 -0
  106. package/build/server/services/infrastructure/notification.service.d.ts +24 -0
  107. package/build/server/services/infrastructure/notification.service.js +142 -0
  108. package/build/server/services/infrastructure/notification.service.js.map +1 -0
  109. package/build/server/services/infrastructure/winston-logging.service.d.ts +10 -0
  110. package/build/server/services/infrastructure/winston-logging.service.js +48 -0
  111. package/build/server/services/infrastructure/winston-logging.service.js.map +1 -0
  112. package/build/server/services/lsp/auto-fix.service.d.ts +15 -0
  113. package/build/server/services/lsp/auto-fix.service.js +142 -0
  114. package/build/server/services/lsp/auto-fix.service.js.map +1 -0
  115. package/build/server/services/lsp/code-actions/code-action.service.d.ts +18 -0
  116. package/build/server/services/lsp/code-actions/code-action.service.js +288 -0
  117. package/build/server/services/lsp/code-actions/code-action.service.js.map +1 -0
  118. package/build/server/services/lsp/code-actions/disable-rule-file-code-action.service.d.ts +11 -0
  119. package/build/server/services/lsp/code-actions/disable-rule-file-code-action.service.js +72 -0
  120. package/build/server/services/lsp/code-actions/disable-rule-file-code-action.service.js.map +1 -0
  121. package/build/server/services/lsp/code-actions/disable-rule-line-code-action.service.d.ts +12 -0
  122. package/build/server/services/lsp/code-actions/disable-rule-line-code-action.service.js +80 -0
  123. package/build/server/services/lsp/code-actions/disable-rule-line-code-action.service.js.map +1 -0
  124. package/build/server/services/lsp/code-actions/index.d.ts +3 -0
  125. package/build/server/services/lsp/code-actions/index.js +4 -0
  126. package/build/server/services/lsp/code-actions/index.js.map +1 -0
  127. package/build/server/services/lsp/completion.service.d.ts +12 -0
  128. package/build/server/services/lsp/completion.service.js +183 -0
  129. package/build/server/services/lsp/completion.service.js.map +1 -0
  130. package/build/server/services/lsp/empty-config-warning.service.d.ts +17 -0
  131. package/build/server/services/lsp/empty-config-warning.service.js +149 -0
  132. package/build/server/services/lsp/empty-config-warning.service.js.map +1 -0
  133. package/build/server/services/lsp/formatter.service.d.ts +16 -0
  134. package/build/server/services/lsp/formatter.service.js +215 -0
  135. package/build/server/services/lsp/formatter.service.js.map +1 -0
  136. package/build/server/services/lsp/index.d.ts +8 -0
  137. package/build/server/services/lsp/index.js +9 -0
  138. package/build/server/services/lsp/index.js.map +1 -0
  139. package/build/server/services/lsp/old-stylelint-warning.service.d.ts +13 -0
  140. package/build/server/services/lsp/old-stylelint-warning.service.js +186 -0
  141. package/build/server/services/lsp/old-stylelint-warning.service.js.map +1 -0
  142. package/build/server/services/lsp/validator.service.d.ts +19 -0
  143. package/build/server/services/lsp/validator.service.js +273 -0
  144. package/build/server/services/lsp/validator.service.js.map +1 -0
  145. package/build/server/services/lsp/workspace-activity.service.d.ts +10 -0
  146. package/build/server/services/lsp/workspace-activity.service.js +76 -0
  147. package/build/server/services/lsp/workspace-activity.service.js.map +1 -0
  148. package/build/server/services/services.module.d.ts +1 -0
  149. package/build/server/services/services.module.js +19 -0
  150. package/build/server/services/services.module.js.map +1 -0
  151. package/build/server/services/stylelint-runtime/global-path-resolver.service.d.ts +38 -0
  152. package/build/server/services/stylelint-runtime/global-path-resolver.service.js +223 -0
  153. package/build/server/services/stylelint-runtime/global-path-resolver.service.js.map +1 -0
  154. package/build/server/services/stylelint-runtime/index.d.ts +11 -0
  155. package/build/server/services/stylelint-runtime/index.js +12 -0
  156. package/build/server/services/stylelint-runtime/index.js.map +1 -0
  157. package/build/server/services/stylelint-runtime/package-root-cache.service.d.ts +9 -0
  158. package/build/server/services/stylelint-runtime/package-root-cache.service.js +141 -0
  159. package/build/server/services/stylelint-runtime/package-root-cache.service.js.map +1 -0
  160. package/build/server/services/stylelint-runtime/package-root.service.d.ts +8 -0
  161. package/build/server/services/stylelint-runtime/package-root.service.js +119 -0
  162. package/build/server/services/stylelint-runtime/package-root.service.js.map +1 -0
  163. package/build/server/services/stylelint-runtime/pnp-configuration-cache.service.d.ts +16 -0
  164. package/build/server/services/stylelint-runtime/pnp-configuration-cache.service.js +195 -0
  165. package/build/server/services/stylelint-runtime/pnp-configuration-cache.service.js.map +1 -0
  166. package/build/server/services/stylelint-runtime/process-runner.service.d.ts +30 -0
  167. package/build/server/services/stylelint-runtime/process-runner.service.js +149 -0
  168. package/build/server/services/stylelint-runtime/process-runner.service.js.map +1 -0
  169. package/build/server/services/stylelint-runtime/stylelint-options.service.d.ts +12 -0
  170. package/build/server/services/stylelint-runtime/stylelint-options.service.js +185 -0
  171. package/build/server/services/stylelint-runtime/stylelint-options.service.js.map +1 -0
  172. package/build/server/services/stylelint-runtime/stylelint-runner.service.d.ts +42 -0
  173. package/build/server/services/stylelint-runtime/stylelint-runner.service.js +478 -0
  174. package/build/server/services/stylelint-runtime/stylelint-runner.service.js.map +1 -0
  175. package/build/server/services/stylelint-runtime/worker-environment.service.d.ts +17 -0
  176. package/build/server/services/stylelint-runtime/worker-environment.service.js +135 -0
  177. package/build/server/services/stylelint-runtime/worker-environment.service.js.map +1 -0
  178. package/build/server/services/stylelint-runtime/worker-process.service.d.ts +8 -0
  179. package/build/server/services/stylelint-runtime/worker-process.service.js +66 -0
  180. package/build/server/services/stylelint-runtime/worker-process.service.js.map +1 -0
  181. package/build/server/services/stylelint-runtime/worker-registry.service.d.ts +19 -0
  182. package/build/server/services/stylelint-runtime/worker-registry.service.js +289 -0
  183. package/build/server/services/stylelint-runtime/worker-registry.service.js.map +1 -0
  184. package/build/server/services/stylelint-runtime/workspace-stylelint.service.d.ts +37 -0
  185. package/build/server/services/stylelint-runtime/workspace-stylelint.service.js +185 -0
  186. package/build/server/services/stylelint-runtime/workspace-stylelint.service.js.map +1 -0
  187. package/build/server/services/workspace/index.d.ts +2 -0
  188. package/build/server/services/workspace/index.js +3 -0
  189. package/build/server/services/workspace/index.js.map +1 -0
  190. package/build/server/services/workspace/workspace-folder.service.d.ts +18 -0
  191. package/build/server/services/workspace/workspace-folder.service.js +101 -0
  192. package/build/server/services/workspace/workspace-folder.service.js.map +1 -0
  193. package/build/server/services/workspace/workspace-options.service.d.ts +12 -0
  194. package/build/server/services/workspace/workspace-options.service.js +125 -0
  195. package/build/server/services/workspace/workspace-options.service.js.map +1 -0
  196. package/build/server/stylelint/disable-metadata-lookup-table.d.ts +20 -0
  197. package/build/server/stylelint/disable-metadata-lookup-table.js +68 -0
  198. package/build/server/stylelint/disable-metadata-lookup-table.js.map +1 -0
  199. package/build/server/stylelint/formatting-options-to-rules.d.ts +12 -0
  200. package/build/server/stylelint/formatting-options-to-rules.js +19 -0
  201. package/build/server/stylelint/formatting-options-to-rules.js.map +1 -0
  202. package/build/server/stylelint/get-disable-diagnostic-rule.d.ts +7 -0
  203. package/build/server/stylelint/get-disable-diagnostic-rule.js +22 -0
  204. package/build/server/stylelint/get-disable-diagnostic-rule.js.map +1 -0
  205. package/build/server/stylelint/index.d.ts +7 -0
  206. package/build/server/stylelint/index.js +8 -0
  207. package/build/server/stylelint/index.js.map +1 -0
  208. package/build/server/stylelint/is-disable-report-rule.d.ts +6 -0
  209. package/build/server/stylelint/is-disable-report-rule.js +17 -0
  210. package/build/server/stylelint/is-disable-report-rule.js.map +1 -0
  211. package/build/server/stylelint/load-stylelint.d.ts +23 -0
  212. package/build/server/stylelint/load-stylelint.js +173 -0
  213. package/build/server/stylelint/load-stylelint.js.map +1 -0
  214. package/build/server/stylelint/process-linter-result.d.ts +32 -0
  215. package/build/server/stylelint/process-linter-result.js +129 -0
  216. package/build/server/stylelint/process-linter-result.js.map +1 -0
  217. package/build/server/stylelint/types.d.ts +143 -0
  218. package/build/server/stylelint/types.js +47 -0
  219. package/build/server/stylelint/types.js.map +1 -0
  220. package/build/server/stylelint/warning-to-diagnostic.d.ts +46 -0
  221. package/build/server/stylelint/warning-to-diagnostic.js +143 -0
  222. package/build/server/stylelint/warning-to-diagnostic.js.map +1 -0
  223. package/build/server/tokens.d.ts +20 -0
  224. package/build/server/tokens.js +16 -0
  225. package/build/server/tokens.js.map +1 -0
  226. package/build/server/types.d.ts +74 -0
  227. package/build/server/types.js +18 -0
  228. package/build/server/types.js.map +1 -0
  229. package/build/server/utils/documents/create-text-edits.d.ts +10 -0
  230. package/build/server/utils/documents/create-text-edits.js +31 -0
  231. package/build/server/utils/documents/create-text-edits.js.map +1 -0
  232. package/build/server/utils/documents/get-disable-type.d.ts +26 -0
  233. package/build/server/utils/documents/get-disable-type.js +32 -0
  234. package/build/server/utils/documents/get-disable-type.js.map +1 -0
  235. package/build/server/utils/documents/get-edit-info.d.ts +14 -0
  236. package/build/server/utils/documents/get-edit-info.js +31 -0
  237. package/build/server/utils/documents/get-edit-info.js.map +1 -0
  238. package/build/server/utils/documents/get-fixes.d.ts +12 -0
  239. package/build/server/utils/documents/get-fixes.js +18 -0
  240. package/build/server/utils/documents/get-fixes.js.map +1 -0
  241. package/build/server/utils/documents/index.d.ts +4 -0
  242. package/build/server/utils/documents/index.js +5 -0
  243. package/build/server/utils/documents/index.js.map +1 -0
  244. package/build/server/utils/errors.d.ts +10 -0
  245. package/build/server/utils/errors.js +89 -0
  246. package/build/server/utils/errors.js.map +1 -0
  247. package/build/server/utils/fs.d.ts +4 -0
  248. package/build/server/utils/fs.js +11 -0
  249. package/build/server/utils/fs.js.map +1 -0
  250. package/build/server/utils/functions/get-first-return-value.d.ts +11 -0
  251. package/build/server/utils/functions/get-first-return-value.js +28 -0
  252. package/build/server/utils/functions/get-first-return-value.js.map +1 -0
  253. package/build/server/utils/functions/index.d.ts +2 -0
  254. package/build/server/utils/functions/index.js +3 -0
  255. package/build/server/utils/functions/index.js.map +1 -0
  256. package/build/server/utils/functions/lazy-call.d.ts +12 -0
  257. package/build/server/utils/functions/lazy-call.js +33 -0
  258. package/build/server/utils/functions/lazy-call.js.map +1 -0
  259. package/build/server/utils/index.d.ts +11 -0
  260. package/build/server/utils/index.js +12 -0
  261. package/build/server/utils/index.js.map +1 -0
  262. package/build/server/utils/iterables.d.ts +8 -0
  263. package/build/server/utils/iterables.js +15 -0
  264. package/build/server/utils/iterables.js.map +1 -0
  265. package/build/server/utils/logging/error-formatter.d.ts +7 -0
  266. package/build/server/utils/logging/error-formatter.js +14 -0
  267. package/build/server/utils/logging/error-formatter.js.map +1 -0
  268. package/build/server/utils/logging/get-log-function.d.ts +8 -0
  269. package/build/server/utils/logging/get-log-function.js +11 -0
  270. package/build/server/utils/logging/get-log-function.js.map +1 -0
  271. package/build/server/utils/logging/index.d.ts +4 -0
  272. package/build/server/utils/logging/index.js +5 -0
  273. package/build/server/utils/logging/index.js.map +1 -0
  274. package/build/server/utils/logging/language-server-formatter.d.ts +19 -0
  275. package/build/server/utils/logging/language-server-formatter.js +55 -0
  276. package/build/server/utils/logging/language-server-formatter.js.map +1 -0
  277. package/build/server/utils/logging/language-server-transport.d.ts +19 -0
  278. package/build/server/utils/logging/language-server-transport.js +39 -0
  279. package/build/server/utils/logging/language-server-transport.js.map +1 -0
  280. package/build/server/utils/lsp/create-disable-completion-item.d.ts +7 -0
  281. package/build/server/utils/lsp/create-disable-completion-item.js +32 -0
  282. package/build/server/utils/lsp/create-disable-completion-item.js.map +1 -0
  283. package/build/server/utils/lsp/display-error.d.ts +7 -0
  284. package/build/server/utils/lsp/display-error.js +24 -0
  285. package/build/server/utils/lsp/display-error.js.map +1 -0
  286. package/build/server/utils/lsp/index.d.ts +4 -0
  287. package/build/server/utils/lsp/index.js +5 -0
  288. package/build/server/utils/lsp/index.js.map +1 -0
  289. package/build/server/utils/lsp/rule-code-actions-collection.d.ts +29 -0
  290. package/build/server/utils/lsp/rule-code-actions-collection.js +61 -0
  291. package/build/server/utils/lsp/rule-code-actions-collection.js.map +1 -0
  292. package/build/server/utils/lsp/types.d.ts +22 -0
  293. package/build/server/utils/lsp/types.js +2 -0
  294. package/build/server/utils/lsp/types.js.map +1 -0
  295. package/build/server/utils/objects/index.d.ts +3 -0
  296. package/build/server/utils/objects/index.js +4 -0
  297. package/build/server/utils/objects/index.js.map +1 -0
  298. package/build/server/utils/objects/is-object.d.ts +8 -0
  299. package/build/server/utils/objects/is-object.js +13 -0
  300. package/build/server/utils/objects/is-object.js.map +1 -0
  301. package/build/server/utils/objects/merge-assign.d.ts +8 -0
  302. package/build/server/utils/objects/merge-assign.js +38 -0
  303. package/build/server/utils/objects/merge-assign.js.map +1 -0
  304. package/build/server/utils/objects/merge-options-with-defaults.d.ts +5 -0
  305. package/build/server/utils/objects/merge-options-with-defaults.js +56 -0
  306. package/build/server/utils/objects/merge-options-with-defaults.js.map +1 -0
  307. package/build/server/utils/sets.d.ts +6 -0
  308. package/build/server/utils/sets.js +22 -0
  309. package/build/server/utils/sets.js.map +1 -0
  310. package/build/server/utils/strings.d.ts +12 -0
  311. package/build/server/utils/strings.js +20 -0
  312. package/build/server/utils/strings.js.map +1 -0
  313. package/build/server/utils/types.d.ts +27 -0
  314. package/build/server/utils/types.js +2 -0
  315. package/build/server/utils/types.js.map +1 -0
  316. package/build/server/worker/types.d.ts +63 -0
  317. package/build/server/worker/types.js +2 -0
  318. package/build/server/worker/types.js.map +1 -0
  319. package/build/server/worker/worker-entry.d.ts +1 -0
  320. package/build/server/worker/worker-entry.js +320 -0
  321. package/build/server/worker/worker-entry.js.map +1 -0
  322. package/build/server/worker/worker-logging.service.d.ts +18 -0
  323. package/build/server/worker/worker-logging.service.js +61 -0
  324. package/build/server/worker/worker-logging.service.js.map +1 -0
  325. package/build/server/worker/worker-process.d.ts +54 -0
  326. package/build/server/worker/worker-process.js +266 -0
  327. package/build/server/worker/worker-process.js.map +1 -0
  328. package/build/shared/log-level.d.ts +5 -0
  329. package/build/shared/log-level.js +11 -0
  330. package/build/shared/log-level.js.map +1 -0
  331. package/build/shared/types.d.ts +9 -0
  332. package/build/shared/types.js +3 -0
  333. package/build/shared/types.js.map +1 -0
  334. package/package.json +89 -0
@@ -0,0 +1,173 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { fileURLToPath, pathToFileURL } from 'node:url';
4
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval -- Needed to access dynamic import from CommonJS modules.
5
+ const realDynamicImport = new Function('specifier', '"use strict"; return import(specifier);');
6
+ let dynamicImportImpl = realDynamicImport;
7
+ const getModulePath = (specifier, requireFn) => {
8
+ if (specifier.startsWith('file://')) {
9
+ return { modulePath: specifier, isResolved: true };
10
+ }
11
+ try {
12
+ return { modulePath: requireFn.resolve(specifier), isResolved: true };
13
+ }
14
+ catch {
15
+ return { modulePath: specifier, isResolved: false };
16
+ }
17
+ };
18
+ const isPathSpecifier = (value) => value.startsWith('file://') ||
19
+ path.isAbsolute(value) ||
20
+ value.startsWith('./') ||
21
+ value.startsWith('../');
22
+ const toFsPath = (target) => target.startsWith('file://') ? fileURLToPath(target) : target;
23
+ const normalizePackageTarget = (packageRoot, target) => {
24
+ if (target.startsWith('file://')) {
25
+ return target;
26
+ }
27
+ if (path.isAbsolute(target)) {
28
+ return target;
29
+ }
30
+ return path.join(packageRoot, target);
31
+ };
32
+ const resolveExportTarget = (value) => {
33
+ if (typeof value === 'string') {
34
+ return value;
35
+ }
36
+ if (Array.isArray(value)) {
37
+ for (const entry of value) {
38
+ const resolved = resolveExportTarget(entry);
39
+ if (resolved) {
40
+ return resolved;
41
+ }
42
+ }
43
+ return undefined;
44
+ }
45
+ if (value && typeof value === 'object') {
46
+ const record = value;
47
+ const priorityKeys = ['import', 'module', 'default'];
48
+ for (const key of priorityKeys) {
49
+ if (!(key in record)) {
50
+ continue;
51
+ }
52
+ const resolved = resolveExportTarget(record[key]);
53
+ if (resolved) {
54
+ return resolved;
55
+ }
56
+ }
57
+ for (const [key, child] of Object.entries(record)) {
58
+ if (priorityKeys.includes(key) || key === 'require' || key === 'types') {
59
+ continue;
60
+ }
61
+ const resolved = resolveExportTarget(child);
62
+ if (resolved) {
63
+ return resolved;
64
+ }
65
+ }
66
+ }
67
+ return undefined;
68
+ };
69
+ const resolvePreferredEsmEntry = async (modulePath, packageRootFinder) => {
70
+ const packageRoot = await packageRootFinder.find(path.resolve(toFsPath(modulePath)));
71
+ if (!packageRoot) {
72
+ return undefined;
73
+ }
74
+ try {
75
+ const manifestPath = path.join(packageRoot, 'package.json');
76
+ const manifest = JSON.parse(await fs.readFile(manifestPath, 'utf8'));
77
+ const rootExport = typeof manifest.exports === 'object' && !Array.isArray(manifest.exports)
78
+ ? (manifest.exports['.'] ?? manifest.exports)
79
+ : manifest.exports;
80
+ const exportTarget = resolveExportTarget(rootExport);
81
+ if (exportTarget) {
82
+ return normalizePackageTarget(packageRoot, exportTarget);
83
+ }
84
+ if (typeof manifest.module === 'string') {
85
+ return normalizePackageTarget(packageRoot, manifest.module);
86
+ }
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ return undefined;
92
+ };
93
+ const loadESMStylelint = async (target, treatAsPath = true) => {
94
+ const specifier = treatAsPath && !target.startsWith('file://')
95
+ ? pathToFileURL(path.resolve(target)).href
96
+ : target;
97
+ const namespace = (await dynamicImportImpl(specifier));
98
+ const stylelint = namespace.default ?? namespace;
99
+ if (!stylelint) {
100
+ throw new Error(`Failed to import Stylelint from ${target}.`);
101
+ }
102
+ return { stylelint, moduleType: 'esm' };
103
+ };
104
+ /**
105
+ * Loads the Stylelint module, supporting both CommonJS and ESM builds.
106
+ * @param specifier Path or specifier that can be resolved by the provided require function.
107
+ * @param requireFn Custom require implementation, defaults to the global require.
108
+ * @param resolvedPath Optional pre-resolved module path used when falling back to ESM imports.
109
+ */
110
+ export const loadStylelint = async (packageRootFinder, specifier, requireFn, resolvedPath) => {
111
+ const { modulePath, isResolved } = resolvedPath
112
+ ? { modulePath: resolvedPath, isResolved: true }
113
+ : getModulePath(specifier, requireFn);
114
+ const hasResolvedPath = isResolved || isPathSpecifier(modulePath);
115
+ const preferredEsmEntry = hasResolvedPath
116
+ ? await resolvePreferredEsmEntry(modulePath, packageRootFinder)
117
+ : undefined;
118
+ const seenTargets = new Set();
119
+ const importTargets = [];
120
+ const addImportTarget = (target, treatAsPath) => {
121
+ if (!target) {
122
+ return;
123
+ }
124
+ const key = `${treatAsPath ? 'path' : 'spec'}:${target}`;
125
+ if (seenTargets.has(key)) {
126
+ return;
127
+ }
128
+ seenTargets.add(key);
129
+ importTargets.push({ target, treatAsPath });
130
+ };
131
+ addImportTarget(preferredEsmEntry, true);
132
+ if (isPathSpecifier(specifier)) {
133
+ addImportTarget(specifier, true);
134
+ }
135
+ const resolvedImportTarget = resolvedPath ?? (hasResolvedPath ? modulePath : undefined);
136
+ addImportTarget(resolvedImportTarget, true);
137
+ let firstImportError;
138
+ for (const { target, treatAsPath } of importTargets) {
139
+ try {
140
+ return await loadESMStylelint(target, treatAsPath);
141
+ }
142
+ catch (error) {
143
+ if (!firstImportError) {
144
+ firstImportError = error;
145
+ }
146
+ }
147
+ }
148
+ try {
149
+ return {
150
+ stylelint: requireFn(specifier),
151
+ moduleType: 'cjs',
152
+ };
153
+ }
154
+ catch (requireError) {
155
+ if (firstImportError) {
156
+ // eslint-disable-next-line @typescript-eslint/only-throw-error
157
+ throw firstImportError;
158
+ }
159
+ throw requireError;
160
+ }
161
+ };
162
+ /**
163
+ * Internal hooks used by the unit tests to control the dynamic import helper.
164
+ */
165
+ export const __loadStylelintTestApi = {
166
+ setDynamicImport(mock) {
167
+ dynamicImportImpl = mock;
168
+ },
169
+ resetDynamicImport() {
170
+ dynamicImportImpl = realDynamicImport;
171
+ },
172
+ };
173
+ //# sourceMappingURL=load-stylelint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-stylelint.js","sourceRoot":"","sources":["../../../src/server/stylelint/load-stylelint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { Logger } from 'winston';
2
+ import type { RuleCustomization } from '../types.js';
3
+ import { type LintDiagnostics, type LinterResult, type MultiFileLintDiagnostics, type RuleMetadataSource } from './types.js';
4
+ /**
5
+ * Processes the results of a Stylelint lint run.
6
+ *
7
+ * If Stylelint reported any warnings, they are converted to Diagnostics and
8
+ * returned. If the lint results contain raw output in the `code` property, it
9
+ * is also returned, along with any formatted report (`report`) or any legacy
10
+ * autofixed code (`output`).
11
+ *
12
+ * Throws an `InvalidOptionError` for any invalid option warnings reported by
13
+ * Stylelint.
14
+ * @param ruleMetadataSource Rule metadata source for documentation links.
15
+ * @param linterResult The results returned by Stylelint.
16
+ * @param logger The logger to use.
17
+ * @param ruleCustomizations Optional rule customizations for severity overrides.
18
+ */
19
+ export declare function processLinterResult(ruleMetadataSource: RuleMetadataSource | undefined, linterResult: LinterResult, logger: Logger, ruleCustomizations?: RuleCustomization[]): LintDiagnostics;
20
+ /**
21
+ * Processes the results of a multi-file Stylelint lint run.
22
+ *
23
+ * Each result is expected to have a `source` property containing the absolute
24
+ * file path of the linted file. Results without a source are skipped. The
25
+ * returned map is keyed by file path.
26
+ *
27
+ * @param ruleMetadataSource Rule metadata source for documentation links.
28
+ * @param linterResult The results returned by Stylelint.
29
+ * @param logger The logger to use.
30
+ * @param ruleCustomizations Optional rule customizations for severity overrides.
31
+ */
32
+ export declare function processMultiFileLinterResult(ruleMetadataSource: RuleMetadataSource | undefined, linterResult: LinterResult, logger: Logger, ruleCustomizations?: RuleCustomization[]): MultiFileLintDiagnostics;
@@ -0,0 +1,129 @@
1
+ import * as crypto from 'crypto';
2
+ import { InvalidOptionError, } from './types.js';
3
+ import { warningToDiagnostic } from './warning-to-diagnostic.js';
4
+ /**
5
+ * Returns a unique key for a diagnostic.
6
+ * @param diagnostic The diagnostic to get a key for.
7
+ */
8
+ function getDiagnosticKey(diagnostic) {
9
+ const range = diagnostic.range;
10
+ let message = '';
11
+ if (diagnostic.message) {
12
+ const hash = crypto.createHash('sha256');
13
+ hash.update(diagnostic.message);
14
+ message = hash.digest('base64');
15
+ }
16
+ return `[${range.start.line},${range.start.character},${range.end.line},${range.end.character}]-${diagnostic.code}-${message}`;
17
+ }
18
+ /**
19
+ * Resolves the rule metadata record from a linter result, falling back to
20
+ * the built-in rule metadata source when necessary.
21
+ */
22
+ function resolveRuleMetadata(linterResult, ruleMetadataSource) {
23
+ if (linterResult.ruleMetadata) {
24
+ return linterResult.ruleMetadata;
25
+ }
26
+ if (ruleMetadataSource) {
27
+ // Create built-in rule metadata lookup for backwards compatibility.
28
+ return new Proxy({}, {
29
+ get: (_, key) => ruleMetadataSource.get(key),
30
+ });
31
+ }
32
+ return undefined;
33
+ }
34
+ /**
35
+ * Converts a single Stylelint lint result into diagnostics.
36
+ */
37
+ function processSingleLintResult(result, logger, ruleMetadata, ruleCustomizations) {
38
+ if (result.ignored) {
39
+ return { diagnostics: [] };
40
+ }
41
+ if (result.invalidOptionWarnings.length !== 0) {
42
+ throw new InvalidOptionError(result.invalidOptionWarnings);
43
+ }
44
+ const diagnostics = [];
45
+ const warningsMap = new Map();
46
+ for (const warning of result.warnings) {
47
+ const diagnostic = warningToDiagnostic(warning, logger, ruleMetadata, ruleCustomizations);
48
+ // Only add diagnostic if it wasn't suppressed.
49
+ if (diagnostic !== null) {
50
+ diagnostics.push(diagnostic);
51
+ warningsMap.set(getDiagnosticKey(diagnostic), warning);
52
+ }
53
+ }
54
+ const getWarning = (diagnostic) => {
55
+ const key = getDiagnosticKey(diagnostic);
56
+ return warningsMap.get(key) ?? null;
57
+ };
58
+ return { diagnostics, getWarning };
59
+ }
60
+ /**
61
+ * Processes the results of a Stylelint lint run.
62
+ *
63
+ * If Stylelint reported any warnings, they are converted to Diagnostics and
64
+ * returned. If the lint results contain raw output in the `code` property, it
65
+ * is also returned, along with any formatted report (`report`) or any legacy
66
+ * autofixed code (`output`).
67
+ *
68
+ * Throws an `InvalidOptionError` for any invalid option warnings reported by
69
+ * Stylelint.
70
+ * @param ruleMetadataSource Rule metadata source for documentation links.
71
+ * @param linterResult The results returned by Stylelint.
72
+ * @param logger The logger to use.
73
+ * @param ruleCustomizations Optional rule customizations for severity overrides.
74
+ */
75
+ export function processLinterResult(ruleMetadataSource, linterResult, logger, ruleCustomizations) {
76
+ const { results } = linterResult;
77
+ if (results.length === 0) {
78
+ return { diagnostics: [] };
79
+ }
80
+ const firstResult = results[0];
81
+ if (firstResult.ignored) {
82
+ return { diagnostics: [] };
83
+ }
84
+ const ruleMetadata = resolveRuleMetadata(linterResult, ruleMetadataSource);
85
+ const lintDiagnostics = processSingleLintResult(firstResult, logger, ruleMetadata, ruleCustomizations);
86
+ let hasReport = false;
87
+ if ('report' in linterResult && typeof linterResult.report === 'string') {
88
+ lintDiagnostics.report = linterResult.report;
89
+ hasReport = true;
90
+ }
91
+ let hasModernFixes = false;
92
+ if ('code' in linterResult && typeof linterResult.code === 'string') {
93
+ lintDiagnostics.code = linterResult.code;
94
+ hasModernFixes = true;
95
+ }
96
+ if (!hasModernFixes && !hasReport && 'output' in linterResult) {
97
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
98
+ const { output: legacyOutput } = linterResult;
99
+ if (typeof legacyOutput === 'string' && legacyOutput.length > 0) {
100
+ lintDiagnostics.output = legacyOutput;
101
+ }
102
+ }
103
+ return lintDiagnostics;
104
+ }
105
+ /**
106
+ * Processes the results of a multi-file Stylelint lint run.
107
+ *
108
+ * Each result is expected to have a `source` property containing the absolute
109
+ * file path of the linted file. Results without a source are skipped. The
110
+ * returned map is keyed by file path.
111
+ *
112
+ * @param ruleMetadataSource Rule metadata source for documentation links.
113
+ * @param linterResult The results returned by Stylelint.
114
+ * @param logger The logger to use.
115
+ * @param ruleCustomizations Optional rule customizations for severity overrides.
116
+ */
117
+ export function processMultiFileLinterResult(ruleMetadataSource, linterResult, logger, ruleCustomizations) {
118
+ const { results } = linterResult;
119
+ const multiFileResult = new Map();
120
+ const ruleMetadata = resolveRuleMetadata(linterResult, ruleMetadataSource);
121
+ for (const result of results) {
122
+ if (!result.source || result.ignored) {
123
+ continue;
124
+ }
125
+ multiFileResult.set(result.source, processSingleLintResult(result, logger, ruleMetadata, ruleCustomizations));
126
+ }
127
+ return multiFileResult;
128
+ }
129
+ //# sourceMappingURL=process-linter-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-linter-result.js","sourceRoot":"","sources":["../../../src/server/stylelint/process-linter-result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import type stylelint from 'stylelint';
2
+ import type LSP from 'vscode-languageserver-protocol';
3
+ import type { RuleCustomization } from '../types.js';
4
+ export type Stylelint = typeof stylelint;
5
+ export type ConfigurationError = Error & {
6
+ code: 78;
7
+ };
8
+ export type RuleMetadataSnapshot = Record<string, stylelint.RuleMeta | undefined>;
9
+ /**
10
+ * A Stylelint warning.
11
+ */
12
+ export type Warning = stylelint.Warning & {
13
+ /** URL for the rule documentation. Available in Stylelint 16.7+. */
14
+ url?: string;
15
+ };
16
+ export type RuleMetadataSource = {
17
+ get(ruleName: string): stylelint.RuleMeta | undefined;
18
+ };
19
+ /**
20
+ * Minimal subset of a Stylelint lint result required by the language server.
21
+ */
22
+ export type LintResult = {
23
+ source?: string;
24
+ warnings: Warning[];
25
+ invalidOptionWarnings: stylelint.LintResult['invalidOptionWarnings'];
26
+ ignored?: boolean;
27
+ };
28
+ /**
29
+ * Minimal subset of a Stylelint linter result required by the language server.
30
+ */
31
+ export type LinterResult = {
32
+ results: LintResult[];
33
+ report?: string;
34
+ code?: string;
35
+ output?: string;
36
+ ruleMetadata?: stylelint.LinterResult['ruleMetadata'];
37
+ };
38
+ /**
39
+ * Diagnostics for a lint run.
40
+ */
41
+ export type LintDiagnostics = {
42
+ /**
43
+ * The diagnostics, each corresponding to a warning or error emitted by
44
+ * Stylelint.
45
+ */
46
+ diagnostics: LSP.Diagnostic[];
47
+ /**
48
+ * Formatted report returned by Stylelint, if any.
49
+ */
50
+ report?: string;
51
+ /**
52
+ * Autofixed code returned by Stylelint when linting source text with `fix`
53
+ * enabled.
54
+ */
55
+ code?: string;
56
+ /**
57
+ * Raw output from Stylelint, if any. Deprecated in Stylelint 16 in favour of
58
+ * `report` and `code`.
59
+ */
60
+ output?: string;
61
+ /**
62
+ * Gets the original warning from the given diagnostic.
63
+ */
64
+ getWarning?: (diagnostic: LSP.Diagnostic) => Warning | null;
65
+ };
66
+ /**
67
+ * Diagnostics for a multi-file lint run, keyed by file URI.
68
+ */
69
+ export type MultiFileLintDiagnostics = Map<string, LintDiagnostics>;
70
+ /**
71
+ * Disable report rule names.
72
+ */
73
+ export declare enum DisableReportRuleNames {
74
+ Needless = "--report-needless-disables",
75
+ InvalidScope = "--report-invalid-scope-disables",
76
+ Descriptionless = "--report-descriptionless-disables",
77
+ Illegal = "reportDisables"
78
+ }
79
+ /**
80
+ * Stylelint runner options.
81
+ */
82
+ export type RunnerOptions = {
83
+ config?: stylelint.Config | null;
84
+ configBasedir?: string;
85
+ configFile?: string;
86
+ customSyntax?: string;
87
+ ignoreDisables?: boolean;
88
+ ignorePath?: string;
89
+ packageManager?: PackageManager;
90
+ reportDescriptionlessDisables?: boolean;
91
+ reportInvalidScopeDisables?: boolean;
92
+ reportNeedlessDisables?: boolean;
93
+ snippet?: string[];
94
+ stylelintPath?: string;
95
+ validate?: string[];
96
+ rules?: {
97
+ customizations?: RuleCustomization[];
98
+ };
99
+ lintFilesGlob?: string;
100
+ };
101
+ /**
102
+ * Error thrown when a rule's option is invalid.
103
+ */
104
+ export declare class InvalidOptionError extends Error {
105
+ reasons: string[];
106
+ constructor(warnings: {
107
+ text: string;
108
+ }[]);
109
+ }
110
+ /**
111
+ * Creates a rule metadata source from a Stylelint instance.
112
+ */
113
+ export declare function createRuleMetadataSourceFromStylelint(stylelintInstance?: Stylelint): RuleMetadataSource | undefined;
114
+ /**
115
+ * Creates a rule metadata source from a snapshot.
116
+ */
117
+ export declare function createRuleMetadataSourceFromSnapshot(snapshot?: RuleMetadataSnapshot): RuleMetadataSource | undefined;
118
+ /**
119
+ * Package manager identifiers.
120
+ */
121
+ export type PackageManager = 'npm' | 'yarn' | 'pnpm';
122
+ /**
123
+ * Options for resolving the Stylelint package.
124
+ */
125
+ export type ResolverOptions = {
126
+ packageManager?: PackageManager;
127
+ stylelintPath?: string;
128
+ };
129
+ /**
130
+ * Stylelint package resolution result.
131
+ */
132
+ export type StylelintResolutionResult = {
133
+ /** Absolute path to the resolved Stylelint entry file or package directory. */
134
+ entryPath: string;
135
+ /** Absolute path to the Stylelint package root (falls back to entryPath when unknown). */
136
+ resolvedPath: string;
137
+ /** Package version if known. */
138
+ version?: string;
139
+ };
140
+ /**
141
+ * A tracer function that can be used to log messages.
142
+ */
143
+ export type TracerFn = (message: string, verbose?: string) => void;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Disable report rule names.
3
+ */
4
+ export var DisableReportRuleNames;
5
+ (function (DisableReportRuleNames) {
6
+ DisableReportRuleNames["Needless"] = "--report-needless-disables";
7
+ DisableReportRuleNames["InvalidScope"] = "--report-invalid-scope-disables";
8
+ DisableReportRuleNames["Descriptionless"] = "--report-descriptionless-disables";
9
+ DisableReportRuleNames["Illegal"] = "reportDisables";
10
+ })(DisableReportRuleNames || (DisableReportRuleNames = {}));
11
+ /**
12
+ * Error thrown when a rule's option is invalid.
13
+ */
14
+ export class InvalidOptionError extends Error {
15
+ reasons;
16
+ constructor(warnings) {
17
+ const reasons = warnings.map((warning) => warning.text);
18
+ super(reasons.join('\n'));
19
+ this.reasons = reasons;
20
+ }
21
+ }
22
+ /**
23
+ * Creates a rule metadata source from a Stylelint instance.
24
+ */
25
+ export function createRuleMetadataSourceFromStylelint(stylelintInstance) {
26
+ if (!stylelintInstance) {
27
+ return undefined;
28
+ }
29
+ return {
30
+ get: (ruleName) => {
31
+ const rules = stylelintInstance.rules;
32
+ return rules?.[ruleName]?.meta;
33
+ },
34
+ };
35
+ }
36
+ /**
37
+ * Creates a rule metadata source from a snapshot.
38
+ */
39
+ export function createRuleMetadataSourceFromSnapshot(snapshot) {
40
+ if (!snapshot) {
41
+ return undefined;
42
+ }
43
+ return {
44
+ get: (ruleName) => snapshot[ruleName],
45
+ };
46
+ }
47
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/stylelint/types.ts"],"names":[],"mappings":"AA+EA;;GAEG;AACH,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IACjC,iEAAuC,CAAA;IACvC,0EAAgD,CAAA;IAChD,+EAAqD,CAAA;IACrD,oDAA0B,CAAA;AAC3B,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AAyBD;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC5C,OAAO,CAAW;IAElB,YAAY,QAA4B;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAExD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD;AAED;;GAEG;AACH,MAAM,UAAU,qCAAqC,CACpD,iBAA6B;IAE7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO;QACN,GAAG,EAAE,CAAC,QAAgB,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAEpB,CAAC;YAEb,OAAO,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChC,CAAC;KACD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC,CACnD,QAA+B;IAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO;QACN,GAAG,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC7C,CAAC;AACH,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type stylelint from 'stylelint';
2
+ import { Diagnostic } from 'vscode-languageserver-types';
3
+ import type { RuleCustomization } from '../types.js';
4
+ import type { Logger } from 'winston';
5
+ import type { Warning } from './types.js';
6
+ /**
7
+ * Converts a Stylelint warning to an LSP Diagnostic.
8
+ *
9
+ * @example
10
+ * ```js
11
+ * const [result] = await stylelint.lint({
12
+ * code: 'a { color: red; }',
13
+ * config: { rules: { 'color-named': 'never' } }
14
+ * });
15
+ *
16
+ * const [warning] = result.warnings;
17
+ * // {
18
+ * // rule: 'color-named',
19
+ * // text: 'Unexpected named color "red" (color-named)',
20
+ * // severity: 'error',
21
+ * // line: 1,
22
+ * // column: 12
23
+ * // }
24
+ *
25
+ * const diagnostic = warningToDiagnostic(warning);
26
+ * // {
27
+ * // message: 'Unexpected named color "red" (color-named)',
28
+ * // severity: 1,
29
+ * // source: 'Stylelint',
30
+ * // range: {
31
+ * // start: {
32
+ * // line: 0,
33
+ * // character: 11
34
+ * // },
35
+ * // end: {
36
+ * // line: 0,
37
+ * // character: 11
38
+ * // }
39
+ * // }
40
+ * // }
41
+ * ```
42
+ * @param warning The warning to convert.
43
+ * @param ruleMetadata Available Stylelint rules.
44
+ * @param ruleCustomizations Optional rule customizations for severity overrides.
45
+ */
46
+ export declare function warningToDiagnostic(warning: Warning, logger: Logger, ruleMetadata?: stylelint.LinterResult['ruleMetadata'], ruleCustomizations?: RuleCustomization[]): Diagnostic | null;