@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/utils/objects/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Returns true if the value is a true object (i.e. not a primitive type).
3
+ */
4
+ export declare function isObject(value: unknown): value is object;
5
+ /**
6
+ * Returns true if the value is a plain object with no own enumerable properties.
7
+ */
8
+ export declare function isEmptyObject(value: unknown): boolean;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Returns true if the value is a true object (i.e. not a primitive type).
3
+ */
4
+ export function isObject(value) {
5
+ return typeof value === 'object' && value !== null;
6
+ }
7
+ /**
8
+ * Returns true if the value is a plain object with no own enumerable properties.
9
+ */
10
+ export function isEmptyObject(value) {
11
+ return isObject(value) && !Array.isArray(value) && Object.keys(value).length === 0;
12
+ }
13
+ //# sourceMappingURL=is-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../../src/server/utils/objects/is-object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACpF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copies all enumerable properties from one or two source objects to a target
3
+ * object, recursing for nested objects. Merges arrays by concatenating them.
4
+ * @param target The target object to assign to.
5
+ * @param source1 The first source object from which to copy properties.
6
+ * @param source2 The second source object from which to copy properties.
7
+ */
8
+ export declare function mergeAssign<T extends object, U extends object, V extends object>(target: T, source1: U | undefined, source2?: V): T & U & V;
@@ -0,0 +1,38 @@
1
+ import { isObject } from './is-object.js';
2
+ /**
3
+ * Copies all enumerable properties from one or two source objects to a target
4
+ * object, recursing for nested objects. Merges arrays by concatenating them.
5
+ * @param target The target object to assign to.
6
+ * @param source1 The first source object from which to copy properties.
7
+ * @param source2 The second source object from which to copy properties.
8
+ */
9
+ export function mergeAssign(target, source1, source2) {
10
+ const targetAsUnion = target;
11
+ for (const object of [source1, source2]) {
12
+ if (!object) {
13
+ continue;
14
+ }
15
+ for (const key of Object.getOwnPropertyNames(object)) {
16
+ if (key === '__proto__' || key === 'constructor') {
17
+ continue;
18
+ }
19
+ const value = object[key];
20
+ if (isObject(value)) {
21
+ if (Array.isArray(value)) {
22
+ const existing = targetAsUnion[key];
23
+ targetAsUnion[key] = (Array.isArray(existing) ? existing.concat(value) : value);
24
+ continue;
25
+ }
26
+ if (!targetAsUnion[key]) {
27
+ targetAsUnion[key] = {};
28
+ }
29
+ targetAsUnion[key] = mergeAssign(targetAsUnion[key], value);
30
+ }
31
+ else {
32
+ targetAsUnion[key] = value;
33
+ }
34
+ }
35
+ }
36
+ return targetAsUnion;
37
+ }
38
+ //# sourceMappingURL=merge-assign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-assign.js","sourceRoot":"","sources":["../../../../src/server/utils/objects/merge-assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAC1B,MAAS,EACT,OAAsB,EACtB,OAAW;IAEX,MAAM,aAAa,GAAG,MAAmB,CAAC;IAE1C,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,SAAS;QACV,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAA4B,EAAE,CAAC;YACjF,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBAClD,SAAS;YACV,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAE1B,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;oBAEpC,aAAa,CAAC,GAAG,CAAC,GAAG,CACpB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiB,CAC1C,CAAC;oBAE7B,SAAS;gBACV,CAAC;gBAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,aAAa,CAAC,GAAG,CAAC,GAAG,EAA6B,CAAC;gBACpD,CAAC;gBAED,aAAa,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAW,EAAE,KAAK,CAErD,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACP,aAAa,CAAC,GAAG,CAAC,GAAG,KAAgC,CAAC;YACvD,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,aAAa,CAAC;AACtB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Merges options with default values and returns a new object. Nested objects
3
+ * are also merged. Properties not present in the defaults are not copied.
4
+ */
5
+ export declare function mergeOptionsWithDefaults<T extends object>(options: unknown, defaults: T): T;
@@ -0,0 +1,56 @@
1
+ import rfdc from 'rfdc';
2
+ import { isObject } from './is-object.js';
3
+ const deepClone = rfdc();
4
+ /**
5
+ * Merges options with default values and returns a new object. Nested objects
6
+ * are also merged. Properties not present in the defaults are not copied.
7
+ */
8
+ function mergeOptionsWithDefaultsInner(options, defaults, seen, mapped,
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ circulars) {
11
+ if (!isObject(options)) {
12
+ return deepClone(defaults);
13
+ }
14
+ const result = {};
15
+ for (const key of Object.keys(defaults)) {
16
+ const fromDefaults = defaults[key];
17
+ const fromOptions = options[key];
18
+ if (fromOptions !== undefined) {
19
+ if (isObject(fromOptions)) {
20
+ if (seen.has(fromOptions)) {
21
+ circulars.add([fromOptions, result, key]);
22
+ continue;
23
+ }
24
+ seen.add(fromOptions);
25
+ const value = Array.isArray(fromOptions)
26
+ ? fromOptions.map((item) => deepClone(item))
27
+ : isObject(fromDefaults) && !Array.isArray(fromDefaults)
28
+ ? mergeOptionsWithDefaultsInner(fromOptions, fromDefaults, seen, mapped, circulars)
29
+ : deepClone(fromOptions);
30
+ mapped.set(fromOptions, value);
31
+ result[key] = value;
32
+ continue;
33
+ }
34
+ result[key] = fromOptions;
35
+ continue;
36
+ }
37
+ result[key] = deepClone(fromDefaults);
38
+ }
39
+ return result;
40
+ }
41
+ /**
42
+ * Merges options with default values and returns a new object. Nested objects
43
+ * are also merged. Properties not present in the defaults are not copied.
44
+ */
45
+ export function mergeOptionsWithDefaults(options, defaults) {
46
+ // Track references to avoid circular infinite recursion.
47
+ const seen = new WeakSet();
48
+ const mapped = new WeakMap();
49
+ const circulars = new Set();
50
+ const result = mergeOptionsWithDefaultsInner(options, defaults, seen, mapped, circulars);
51
+ for (const [circular, obj, key] of circulars) {
52
+ obj[key] = mapped.get(circular);
53
+ }
54
+ return result;
55
+ }
56
+ //# sourceMappingURL=merge-options-with-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-options-with-defaults.js","sourceRoot":"","sources":["../../../../src/server/utils/objects/merge-options-with-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC;AAIzB;;;GAGG;AACH,SAAS,6BAA6B,CACrC,OAAgB,EAChB,QAAW,EACX,IAAqB,EACrB,MAAgC;AAChC,8DAA8D;AAC9D,SAA6B;IAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,EAAO,CAAC;IAEvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAgB,EAAE,CAAC;QACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEnC,MAAM,WAAW,GAAY,OAAO,CAAC,GAA2B,CAAC,CAAC;QAElE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC3B,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;oBAE1C,SAAS;gBACV,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAEtB,MAAM,KAAK,GAAY,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;oBAChD,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrD,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;wBACvD,CAAC,CAAC,6BAA6B,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC;wBACnF,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAE3B,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBAE/B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAmB,CAAC;gBAElC,SAAS;YACV,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,WAAyB,CAAC;YAExC,SAAS;QACV,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAmB,OAAgB,EAAE,QAAW;IACvF,yDAAyD;IACzD,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,OAAO,EAAiC,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuD,CAAC;IAEjF,MAAM,MAAM,GAAG,6BAA6B,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzF,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;QAC9C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Returns the intersection of the given sets. If one of the sets is
3
+ * `undefined`, the other set is returned. If both sets are `undefined`,
4
+ * returns `undefined`.
5
+ */
6
+ export declare function intersect<T>(set1: Set<T> | undefined, set2: Set<T> | undefined): Set<T> | undefined;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Returns the intersection of the given sets. If one of the sets is
3
+ * `undefined`, the other set is returned. If both sets are `undefined`,
4
+ * returns `undefined`.
5
+ */
6
+ export function intersect(set1, set2) {
7
+ if (!set1) {
8
+ return set2;
9
+ }
10
+ if (!set2) {
11
+ return set1;
12
+ }
13
+ const [smallerSet, largerSet] = set1.size < set2.size ? [set1, set2] : [set2, set1];
14
+ const result = new Set();
15
+ for (const item of smallerSet) {
16
+ if (largerSet.has(item)) {
17
+ result.add(item);
18
+ }
19
+ }
20
+ return result;
21
+ }
22
+ //# sourceMappingURL=sets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sets.js","sourceRoot":"","sources":["../../../src/server/utils/sets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACxB,IAAwB,EACxB,IAAwB;IAExB,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEpF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAK,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Upper-cases the first letter of a string.
3
+ */
4
+ export declare const upperCaseFirstChar: (str: string) => string;
5
+ /**
6
+ * Pads a string to a certain length with spaces.
7
+ */
8
+ export declare const padString: (str: string, length: number) => string;
9
+ /**
10
+ * Pads a number to a certain length with zeros.
11
+ */
12
+ export declare const padNumber: (number: number, length: number) => string;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Upper-cases the first letter of a string.
3
+ */
4
+ export const upperCaseFirstChar = (str) => {
5
+ return str.charAt(0).toUpperCase() + str.slice(1);
6
+ };
7
+ /**
8
+ * Pads a string to a certain length with spaces.
9
+ */
10
+ export const padString = (str, length) => {
11
+ return str + ' '.repeat(length - str.length);
12
+ };
13
+ /**
14
+ * Pads a number to a certain length with zeros.
15
+ */
16
+ export const padNumber = (number, length) => {
17
+ const str = String(number);
18
+ return '0'.repeat(length - str.length) + str;
19
+ };
20
+ //# sourceMappingURL=strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/server/utils/strings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAU,EAAE;IACzD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,MAAc,EAAU,EAAE;IAChE,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,MAAc,EAAU,EAAE;IACnE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAE3B,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAC9C,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Makes all properties of type `T` optional except for those in `K`.
3
+ */
4
+ export type OptionalExcept<T extends Record<never, never>, K extends keyof T> = Pick<T, K> & Partial<Pick<T, K>>;
5
+ /**
6
+ * Makes all properties of type `T` required except for those in `K`.
7
+ */
8
+ export type RequiredExcept<T extends Record<never, never>, K extends keyof T> = Pick<T, Exclude<keyof T, K>> & Required<Pick<T, K>>;
9
+ /**
10
+ * Extracts keys from a type `T` the values of which are type `V`.
11
+ */
12
+ export type ExtractKeysOfValueType<T, V> = {
13
+ [K in keyof T]-?: T[K] extends V ? K : never;
14
+ }[keyof T];
15
+ /**
16
+ * Given a function `T`, returns a function type with the same parameters, but
17
+ * with the return type `Promise<R> | R` where `R` is the return type of `T`.
18
+ */
19
+ export type MaybeAsync<T extends (...args: any[]) => any> = (...args: Parameters<T>) => Promise<ReturnType<T>> | ReturnType<T>;
20
+ export type { PublicOnly, PublicOnlyIfObject } from '../../shared/types.js';
21
+ /**
22
+ * Given a type `T`, returns a type with only the public properties of `T` and
23
+ * its descendants.
24
+ */
25
+ export type PublicOnlyDeep<T> = {
26
+ [K in keyof T]: T[K] extends Function ? T[K] : T[K] extends object ? PublicOnlyDeep<T[K]> : T[K];
27
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/utils/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import type stylelint from 'stylelint';
2
+ import type { LinterResult, RuleMetadataSnapshot, RunnerOptions } from '../stylelint/types.js';
3
+ export declare const stylelintNotFoundError = "STYLELINT_NOT_FOUND";
4
+ export type WorkerLintPayload = {
5
+ options: stylelint.LinterOptions;
6
+ stylelintPath?: string;
7
+ runnerOptions?: RunnerOptions;
8
+ };
9
+ export type WorkerResolvePayload = {
10
+ stylelintPath?: string;
11
+ codeFilename?: string;
12
+ runnerOptions?: RunnerOptions;
13
+ };
14
+ export type WorkerResolveConfigPayload = {
15
+ filePath: string;
16
+ stylelintPath?: string;
17
+ runnerOptions?: RunnerOptions;
18
+ };
19
+ export type WorkerLintResult = {
20
+ resolvedPath: string;
21
+ linterResult: LinterResult;
22
+ ruleMetadata?: RuleMetadataSnapshot;
23
+ };
24
+ export type WorkerResolveResult = {
25
+ resolvedPath: string;
26
+ entryPath: string;
27
+ version?: string;
28
+ };
29
+ export type WorkerResolveConfigResult = {
30
+ resolvedPath: string;
31
+ config: stylelint.Config | undefined;
32
+ };
33
+ export type WorkerRequest = {
34
+ id: string;
35
+ type: 'lint';
36
+ payload: WorkerLintPayload;
37
+ } | {
38
+ id: string;
39
+ type: 'resolve';
40
+ payload: WorkerResolvePayload;
41
+ } | {
42
+ id: string;
43
+ type: 'resolveConfig';
44
+ payload: WorkerResolveConfigPayload;
45
+ } | {
46
+ id: string;
47
+ type: 'shutdown';
48
+ };
49
+ export type SerializedWorkerError = {
50
+ name?: string;
51
+ message: string;
52
+ stack?: string;
53
+ code?: string;
54
+ };
55
+ export type WorkerResponse = {
56
+ id: string;
57
+ success: true;
58
+ result?: WorkerLintResult | WorkerResolveResult | WorkerResolveConfigResult | undefined;
59
+ } | {
60
+ id: string;
61
+ success: false;
62
+ error: SerializedWorkerError;
63
+ };
@@ -0,0 +1,2 @@
1
+ export const stylelintNotFoundError = 'STYLELINT_NOT_FOUND';
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/server/worker/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,320 @@
1
+ // @no-unit-test -- This is an entry point that cannot feasibly be unit tested.
2
+ import fs from 'node:fs/promises';
3
+ import { createRequire } from 'node:module';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import process from 'node:process';
7
+ import { GlobalPathResolverService } from '../services/stylelint-runtime/global-path-resolver.service.js';
8
+ import { PackageRootService } from '../services/stylelint-runtime/package-root.service.js';
9
+ import { ProcessRunnerService } from '../services/stylelint-runtime/process-runner.service.js';
10
+ import { loadStylelint } from '../stylelint/load-stylelint.js';
11
+ import { stylelintNotFoundError, } from './types.js';
12
+ import { createWorkerLoggingService } from './worker-logging.service.js';
13
+ const toAbsoluteDir = (dir) => path.isAbsolute(dir) ? dir : path.resolve(process.cwd(), dir);
14
+ const workspaceRequire = createRequire(path.join(process.cwd(), '__stylelint_worker_index__.js'));
15
+ const workerLoggingService = createWorkerLoggingService();
16
+ const globalPathResolver = new GlobalPathResolverService(os, path, new ProcessRunnerService(), workerLoggingService);
17
+ const packageRootFinder = new PackageRootService();
18
+ const state = {};
19
+ const createLinterResultSubset = (linterResult) => {
20
+ const subset = {
21
+ results: (Array.isArray(linterResult.results) ? linterResult.results : []).map(({ source, warnings, invalidOptionWarnings, ignored }) => ({
22
+ source,
23
+ warnings: warnings ?? [],
24
+ invalidOptionWarnings: invalidOptionWarnings ?? [],
25
+ ignored,
26
+ })),
27
+ };
28
+ const report = linterResult.report;
29
+ if (typeof report === 'string') {
30
+ subset.report = report;
31
+ }
32
+ const code = linterResult.code;
33
+ if (typeof code === 'string') {
34
+ subset.code = code;
35
+ }
36
+ if (!report && !code) {
37
+ const output = linterResult.output;
38
+ if (typeof output === 'string') {
39
+ subset.output = output;
40
+ }
41
+ }
42
+ if (linterResult.ruleMetadata) {
43
+ subset.ruleMetadata = linterResult.ruleMetadata;
44
+ }
45
+ return subset;
46
+ };
47
+ const isPromiseLike = (value) => typeof value === 'object' && value !== null && 'then' in value;
48
+ const sendMessage = (message) => {
49
+ if (typeof process.send === 'function') {
50
+ process.send(message);
51
+ }
52
+ };
53
+ const serializeError = (error) => {
54
+ if (error instanceof Error) {
55
+ const rawCode = error.code;
56
+ const serialized = {
57
+ name: error.name,
58
+ message: error.message,
59
+ stack: error.stack,
60
+ code: typeof rawCode === 'number' ? String(rawCode) : rawCode,
61
+ };
62
+ return serialized;
63
+ }
64
+ return {
65
+ name: 'Error',
66
+ message: typeof error === 'string' ? error : 'Unknown error',
67
+ };
68
+ };
69
+ const createNotFoundError = () => {
70
+ const error = new Error('Stylelint could not be resolved from the current workspace.');
71
+ error.code = stylelintNotFoundError;
72
+ return error;
73
+ };
74
+ /**
75
+ * Creates a snapshot of the rule metadata from the provided Stylelint module.
76
+ */
77
+ async function snapshotRuleMetadata(stylelintModule) {
78
+ const rulesSource = stylelintModule.rules;
79
+ if (!rulesSource) {
80
+ return undefined;
81
+ }
82
+ let resolvedRules;
83
+ if (typeof rulesSource === 'function') {
84
+ resolvedRules = await rulesSource();
85
+ }
86
+ else if (isPromiseLike(rulesSource)) {
87
+ resolvedRules = await rulesSource;
88
+ }
89
+ else {
90
+ resolvedRules = rulesSource;
91
+ }
92
+ if (!resolvedRules || typeof resolvedRules !== 'object') {
93
+ return undefined;
94
+ }
95
+ const metadata = {};
96
+ for (const [name, ruleOrPromise] of Object.entries(resolvedRules)) {
97
+ const rulePromise = isPromiseLike(ruleOrPromise)
98
+ ? ruleOrPromise
99
+ : Promise.resolve(ruleOrPromise);
100
+ const rule = await rulePromise;
101
+ const meta = rule?.meta;
102
+ if (meta) {
103
+ metadata[name] = meta;
104
+ }
105
+ }
106
+ return Object.keys(metadata).length ? metadata : undefined;
107
+ }
108
+ /**
109
+ * Reads the version of the Stylelint package from its package.json.
110
+ */
111
+ async function readPackageVersion(packageRoot) {
112
+ if (!packageRoot) {
113
+ return undefined;
114
+ }
115
+ try {
116
+ const manifestPath = path.join(packageRoot, 'package.json');
117
+ const rawManifest = await fs.readFile(manifestPath, 'utf8');
118
+ const manifest = JSON.parse(rawManifest);
119
+ return manifest.version;
120
+ }
121
+ catch {
122
+ return undefined;
123
+ }
124
+ }
125
+ /**
126
+ * Attempts to resolve Stylelint from the global modules path for the specified package manager.
127
+ */
128
+ async function resolveFromGlobal(packageManager, resolver) {
129
+ if (!packageManager) {
130
+ return undefined;
131
+ }
132
+ const globalModulesPath = await globalPathResolver.resolve(packageManager);
133
+ if (!globalModulesPath) {
134
+ return undefined;
135
+ }
136
+ return await resolver(globalModulesPath);
137
+ }
138
+ /**
139
+ * Determines how the worker should resolve the Stylelint module for linting requests.
140
+ * @param stylelintPath Optional explicit path provided by the caller.
141
+ * @param codeFilename Optional file currently being linted to guide module resolution.
142
+ */
143
+ async function resolveStylelintTarget(stylelintPath, codeFilename, runnerOptions) {
144
+ if (stylelintPath) {
145
+ const normalizedPath = path.isAbsolute(stylelintPath)
146
+ ? stylelintPath
147
+ : path.resolve(process.cwd(), stylelintPath);
148
+ const resolvedPath = (await packageRootFinder.find(normalizedPath)) ?? normalizedPath;
149
+ return {
150
+ specifier: normalizedPath,
151
+ entryPath: normalizedPath,
152
+ requireFn: workspaceRequire,
153
+ resolvedPath,
154
+ };
155
+ }
156
+ const candidateDirs = new Set();
157
+ if (codeFilename) {
158
+ candidateDirs.add(path.dirname(codeFilename));
159
+ }
160
+ candidateDirs.add(process.cwd());
161
+ const tryResolveFromDir = async (dir) => {
162
+ const baseDir = toAbsoluteDir(dir);
163
+ const requireFn = createRequire(path.join(baseDir, '__stylelint_worker_index__.js'));
164
+ try {
165
+ const entryPath = requireFn.resolve('stylelint');
166
+ const resolvedPath = (await packageRootFinder.find(entryPath)) ?? entryPath;
167
+ return {
168
+ specifier: 'stylelint',
169
+ entryPath,
170
+ requireFn,
171
+ resolvedPath,
172
+ };
173
+ }
174
+ catch (error) {
175
+ if (error.code !== 'MODULE_NOT_FOUND') {
176
+ throw error;
177
+ }
178
+ return undefined;
179
+ }
180
+ };
181
+ for (const dir of candidateDirs) {
182
+ const resolved = await tryResolveFromDir(dir);
183
+ if (resolved) {
184
+ return resolved;
185
+ }
186
+ }
187
+ const globalResolved = await resolveFromGlobal(runnerOptions?.packageManager, tryResolveFromDir);
188
+ if (globalResolved) {
189
+ return globalResolved;
190
+ }
191
+ throw createNotFoundError();
192
+ }
193
+ /**
194
+ * Ensures that the Stylelint module is loaded and ready for use.
195
+ */
196
+ async function ensureStylelint(stylelintPath, codeFilename, runnerOptions) {
197
+ const target = await resolveStylelintTarget(stylelintPath, codeFilename, runnerOptions);
198
+ if (state.stylelint && state.resolvedPath === target.resolvedPath) {
199
+ return;
200
+ }
201
+ try {
202
+ const { stylelint: loaded } = await loadStylelint(packageRootFinder, target.specifier, target.requireFn, target.entryPath);
203
+ state.stylelint = loaded;
204
+ state.entryPath = target.entryPath;
205
+ state.resolvedPath = target.resolvedPath;
206
+ state.ruleMetadata = await snapshotRuleMetadata(loaded);
207
+ state.version = await readPackageVersion(target.resolvedPath);
208
+ }
209
+ catch (error) {
210
+ const code = error.code;
211
+ const isModuleNotFound = code === 'MODULE_NOT_FOUND' || code === stylelintNotFoundError;
212
+ if (isModuleNotFound) {
213
+ throw createNotFoundError();
214
+ }
215
+ throw error;
216
+ }
217
+ }
218
+ /**
219
+ * Handles a resolve request from the parent process.
220
+ */
221
+ async function handleResolve(request) {
222
+ await ensureStylelint(request.payload.stylelintPath, request.payload.codeFilename, request.payload.runnerOptions);
223
+ if (!state.resolvedPath || !state.entryPath) {
224
+ throw createNotFoundError();
225
+ }
226
+ sendMessage({
227
+ id: request.id,
228
+ success: true,
229
+ result: {
230
+ resolvedPath: state.resolvedPath,
231
+ entryPath: state.entryPath,
232
+ version: state.version,
233
+ },
234
+ });
235
+ }
236
+ /**
237
+ * Handles a lint request from the parent process.
238
+ */
239
+ async function handleLint(request) {
240
+ await ensureStylelint(request.payload.stylelintPath, request.payload.options.codeFilename, request.payload.runnerOptions);
241
+ if (!state.stylelint || !state.resolvedPath) {
242
+ throw createNotFoundError();
243
+ }
244
+ const linterResult = await state.stylelint.lint(request.payload.options);
245
+ const subsetResult = createLinterResultSubset(linterResult);
246
+ sendMessage({
247
+ id: request.id,
248
+ success: true,
249
+ result: {
250
+ resolvedPath: state.resolvedPath,
251
+ linterResult: subsetResult,
252
+ ruleMetadata: state.ruleMetadata,
253
+ },
254
+ });
255
+ }
256
+ /**
257
+ * Handles a resolveConfig request from the parent process.
258
+ */
259
+ async function handleResolveConfig(request) {
260
+ await ensureStylelint(request.payload.stylelintPath, request.payload.filePath, request.payload.runnerOptions);
261
+ if (!state.stylelint || !state.resolvedPath) {
262
+ throw createNotFoundError();
263
+ }
264
+ // resolveConfig was added in Stylelint 14.2.0.
265
+ const resolveConfigFn = state.stylelint.resolveConfig;
266
+ let config;
267
+ if (typeof resolveConfigFn === 'function') {
268
+ config = await resolveConfigFn(request.payload.filePath);
269
+ }
270
+ sendMessage({
271
+ id: request.id,
272
+ success: true,
273
+ result: {
274
+ resolvedPath: state.resolvedPath,
275
+ config,
276
+ },
277
+ });
278
+ }
279
+ const handleMessage = async (request) => {
280
+ if (!request) {
281
+ return;
282
+ }
283
+ try {
284
+ switch (request.type) {
285
+ case 'resolve': {
286
+ await handleResolve(request);
287
+ break;
288
+ }
289
+ case 'resolveConfig': {
290
+ await handleResolveConfig(request);
291
+ break;
292
+ }
293
+ case 'lint': {
294
+ await handleLint(request);
295
+ break;
296
+ }
297
+ case 'shutdown': {
298
+ sendMessage({ id: request.id, success: true });
299
+ process.exitCode = 0;
300
+ return;
301
+ }
302
+ default:
303
+ throw new Error(`Unknown worker request type: ${request.type}`);
304
+ }
305
+ }
306
+ catch (error) {
307
+ sendMessage({
308
+ id: request.id,
309
+ success: false,
310
+ error: serializeError(error),
311
+ });
312
+ }
313
+ };
314
+ process.on('message', (request) => {
315
+ void handleMessage(request);
316
+ });
317
+ process.on('disconnect', () => {
318
+ process.exitCode = 0;
319
+ });
320
+ //# sourceMappingURL=worker-entry.js.map