css-variable-lsp 1.0.0 → 1.0.1

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 (450) hide show
  1. package/README.md +5 -9
  2. package/package.json +2 -2
  3. package/server/out/cascadeAndInline.test.js +67 -0
  4. package/server/out/cascadeAndInline.test.js.map +1 -0
  5. package/server/out/cssVariableManager.js +390 -0
  6. package/server/out/cssVariableManager.js.map +1 -0
  7. package/server/out/domTree.js +115 -0
  8. package/server/out/domTree.js.map +1 -0
  9. package/server/out/domTree.test.js +77 -0
  10. package/server/out/domTree.test.js.map +1 -0
  11. package/server/out/fileLifecycle.test.js +163 -0
  12. package/server/out/fileLifecycle.test.js.map +1 -0
  13. package/server/out/fileTypesAndUpdates.test.js +78 -0
  14. package/server/out/fileTypesAndUpdates.test.js.map +1 -0
  15. package/server/out/htmlComments.test.js +180 -0
  16. package/server/out/htmlComments.test.js.map +1 -0
  17. package/server/out/server.js +457 -0
  18. package/server/out/server.js.map +1 -0
  19. package/server/out/specificity.js +138 -0
  20. package/server/out/specificity.js.map +1 -0
  21. package/server/out/specificity.test.js +66 -0
  22. package/server/out/specificity.test.js.map +1 -0
  23. package/server/out/test.js +112 -0
  24. package/server/out/test.js.map +1 -0
  25. package/server/tsconfig.tsbuildinfo +1 -0
  26. package/client/node_modules/.package-lock.json +0 -110
  27. package/client/node_modules/@types/node/LICENSE +0 -21
  28. package/client/node_modules/@types/node/README.md +0 -15
  29. package/client/node_modules/@types/node/assert/strict.d.ts +0 -8
  30. package/client/node_modules/@types/node/assert.d.ts +0 -1005
  31. package/client/node_modules/@types/node/async_hooks.d.ts +0 -586
  32. package/client/node_modules/@types/node/buffer.buffer.d.ts +0 -457
  33. package/client/node_modules/@types/node/buffer.d.ts +0 -1901
  34. package/client/node_modules/@types/node/child_process.d.ts +0 -1453
  35. package/client/node_modules/@types/node/cluster.d.ts +0 -578
  36. package/client/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  37. package/client/node_modules/@types/node/compatibility/index.d.ts +0 -9
  38. package/client/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  39. package/client/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
  40. package/client/node_modules/@types/node/console.d.ts +0 -452
  41. package/client/node_modules/@types/node/constants.d.ts +0 -21
  42. package/client/node_modules/@types/node/crypto.d.ts +0 -4504
  43. package/client/node_modules/@types/node/dgram.d.ts +0 -596
  44. package/client/node_modules/@types/node/diagnostics_channel.d.ts +0 -551
  45. package/client/node_modules/@types/node/dns/promises.d.ts +0 -477
  46. package/client/node_modules/@types/node/dns.d.ts +0 -860
  47. package/client/node_modules/@types/node/domain.d.ts +0 -170
  48. package/client/node_modules/@types/node/events.d.ts +0 -863
  49. package/client/node_modules/@types/node/fs/promises.d.ts +0 -1208
  50. package/client/node_modules/@types/node/fs.d.ts +0 -4332
  51. package/client/node_modules/@types/node/globals.d.ts +0 -170
  52. package/client/node_modules/@types/node/globals.typedarray.d.ts +0 -21
  53. package/client/node_modules/@types/node/http.d.ts +0 -1919
  54. package/client/node_modules/@types/node/http2.d.ts +0 -2580
  55. package/client/node_modules/@types/node/https.d.ts +0 -549
  56. package/client/node_modules/@types/node/index.d.ts +0 -92
  57. package/client/node_modules/@types/node/inspector.generated.d.ts +0 -2775
  58. package/client/node_modules/@types/node/module.d.ts +0 -503
  59. package/client/node_modules/@types/node/net.d.ts +0 -924
  60. package/client/node_modules/@types/node/os.d.ts +0 -480
  61. package/client/node_modules/@types/node/package.json +0 -145
  62. package/client/node_modules/@types/node/path.d.ts +0 -191
  63. package/client/node_modules/@types/node/perf_hooks.d.ts +0 -860
  64. package/client/node_modules/@types/node/process.d.ts +0 -1632
  65. package/client/node_modules/@types/node/punycode.d.ts +0 -117
  66. package/client/node_modules/@types/node/querystring.d.ts +0 -140
  67. package/client/node_modules/@types/node/readline/promises.d.ts +0 -154
  68. package/client/node_modules/@types/node/readline.d.ts +0 -715
  69. package/client/node_modules/@types/node/repl.d.ts +0 -430
  70. package/client/node_modules/@types/node/stream/consumers.d.ts +0 -38
  71. package/client/node_modules/@types/node/stream/promises.d.ts +0 -90
  72. package/client/node_modules/@types/node/stream/web.d.ts +0 -527
  73. package/client/node_modules/@types/node/stream.d.ts +0 -1680
  74. package/client/node_modules/@types/node/string_decoder.d.ts +0 -67
  75. package/client/node_modules/@types/node/test.d.ts +0 -1208
  76. package/client/node_modules/@types/node/timers/promises.d.ts +0 -108
  77. package/client/node_modules/@types/node/timers.d.ts +0 -286
  78. package/client/node_modules/@types/node/tls.d.ts +0 -1204
  79. package/client/node_modules/@types/node/trace_events.d.ts +0 -171
  80. package/client/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -455
  81. package/client/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -19
  82. package/client/node_modules/@types/node/ts5.6/index.d.ts +0 -92
  83. package/client/node_modules/@types/node/tty.d.ts +0 -206
  84. package/client/node_modules/@types/node/url.d.ts +0 -957
  85. package/client/node_modules/@types/node/util.d.ts +0 -2083
  86. package/client/node_modules/@types/node/v8.d.ts +0 -753
  87. package/client/node_modules/@types/node/vm.d.ts +0 -704
  88. package/client/node_modules/@types/node/wasi.d.ts +0 -160
  89. package/client/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  90. package/client/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  91. package/client/node_modules/@types/node/web-globals/events.d.ts +0 -81
  92. package/client/node_modules/@types/node/web-globals/fetch.d.ts +0 -38
  93. package/client/node_modules/@types/node/worker_threads.d.ts +0 -698
  94. package/client/node_modules/@types/node/zlib.d.ts +0 -517
  95. package/client/node_modules/@types/vscode/LICENSE +0 -21
  96. package/client/node_modules/@types/vscode/README.md +0 -15
  97. package/client/node_modules/@types/vscode/index.d.ts +0 -21145
  98. package/client/node_modules/@types/vscode/package.json +0 -26
  99. package/client/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  100. package/client/node_modules/balanced-match/LICENSE.md +0 -21
  101. package/client/node_modules/balanced-match/README.md +0 -97
  102. package/client/node_modules/balanced-match/index.js +0 -62
  103. package/client/node_modules/balanced-match/package.json +0 -48
  104. package/client/node_modules/brace-expansion/.github/FUNDING.yml +0 -2
  105. package/client/node_modules/brace-expansion/LICENSE +0 -21
  106. package/client/node_modules/brace-expansion/README.md +0 -135
  107. package/client/node_modules/brace-expansion/index.js +0 -203
  108. package/client/node_modules/brace-expansion/package.json +0 -49
  109. package/client/node_modules/minimatch/LICENSE +0 -15
  110. package/client/node_modules/minimatch/README.md +0 -259
  111. package/client/node_modules/minimatch/lib/path.js +0 -4
  112. package/client/node_modules/minimatch/minimatch.js +0 -944
  113. package/client/node_modules/minimatch/package.json +0 -35
  114. package/client/node_modules/semver/LICENSE +0 -15
  115. package/client/node_modules/semver/README.md +0 -664
  116. package/client/node_modules/semver/bin/semver.js +0 -191
  117. package/client/node_modules/semver/classes/comparator.js +0 -143
  118. package/client/node_modules/semver/classes/index.js +0 -7
  119. package/client/node_modules/semver/classes/range.js +0 -557
  120. package/client/node_modules/semver/classes/semver.js +0 -333
  121. package/client/node_modules/semver/functions/clean.js +0 -8
  122. package/client/node_modules/semver/functions/cmp.js +0 -54
  123. package/client/node_modules/semver/functions/coerce.js +0 -62
  124. package/client/node_modules/semver/functions/compare-build.js +0 -9
  125. package/client/node_modules/semver/functions/compare-loose.js +0 -5
  126. package/client/node_modules/semver/functions/compare.js +0 -7
  127. package/client/node_modules/semver/functions/diff.js +0 -60
  128. package/client/node_modules/semver/functions/eq.js +0 -5
  129. package/client/node_modules/semver/functions/gt.js +0 -5
  130. package/client/node_modules/semver/functions/gte.js +0 -5
  131. package/client/node_modules/semver/functions/inc.js +0 -21
  132. package/client/node_modules/semver/functions/lt.js +0 -5
  133. package/client/node_modules/semver/functions/lte.js +0 -5
  134. package/client/node_modules/semver/functions/major.js +0 -5
  135. package/client/node_modules/semver/functions/minor.js +0 -5
  136. package/client/node_modules/semver/functions/neq.js +0 -5
  137. package/client/node_modules/semver/functions/parse.js +0 -18
  138. package/client/node_modules/semver/functions/patch.js +0 -5
  139. package/client/node_modules/semver/functions/prerelease.js +0 -8
  140. package/client/node_modules/semver/functions/rcompare.js +0 -5
  141. package/client/node_modules/semver/functions/rsort.js +0 -5
  142. package/client/node_modules/semver/functions/satisfies.js +0 -12
  143. package/client/node_modules/semver/functions/sort.js +0 -5
  144. package/client/node_modules/semver/functions/valid.js +0 -8
  145. package/client/node_modules/semver/index.js +0 -91
  146. package/client/node_modules/semver/internal/constants.js +0 -37
  147. package/client/node_modules/semver/internal/debug.js +0 -11
  148. package/client/node_modules/semver/internal/identifiers.js +0 -29
  149. package/client/node_modules/semver/internal/lrucache.js +0 -42
  150. package/client/node_modules/semver/internal/parse-options.js +0 -17
  151. package/client/node_modules/semver/internal/re.js +0 -223
  152. package/client/node_modules/semver/package.json +0 -78
  153. package/client/node_modules/semver/preload.js +0 -4
  154. package/client/node_modules/semver/range.bnf +0 -16
  155. package/client/node_modules/semver/ranges/gtr.js +0 -6
  156. package/client/node_modules/semver/ranges/intersects.js +0 -9
  157. package/client/node_modules/semver/ranges/ltr.js +0 -6
  158. package/client/node_modules/semver/ranges/max-satisfying.js +0 -27
  159. package/client/node_modules/semver/ranges/min-satisfying.js +0 -26
  160. package/client/node_modules/semver/ranges/min-version.js +0 -63
  161. package/client/node_modules/semver/ranges/outside.js +0 -82
  162. package/client/node_modules/semver/ranges/simplify.js +0 -49
  163. package/client/node_modules/semver/ranges/subset.js +0 -249
  164. package/client/node_modules/semver/ranges/to-comparators.js +0 -10
  165. package/client/node_modules/semver/ranges/valid.js +0 -13
  166. package/client/node_modules/undici-types/README.md +0 -6
  167. package/client/node_modules/undici-types/agent.d.ts +0 -31
  168. package/client/node_modules/undici-types/api.d.ts +0 -43
  169. package/client/node_modules/undici-types/balanced-pool.d.ts +0 -18
  170. package/client/node_modules/undici-types/cache.d.ts +0 -36
  171. package/client/node_modules/undici-types/client.d.ts +0 -97
  172. package/client/node_modules/undici-types/connector.d.ts +0 -34
  173. package/client/node_modules/undici-types/content-type.d.ts +0 -21
  174. package/client/node_modules/undici-types/cookies.d.ts +0 -28
  175. package/client/node_modules/undici-types/diagnostics-channel.d.ts +0 -67
  176. package/client/node_modules/undici-types/dispatcher.d.ts +0 -241
  177. package/client/node_modules/undici-types/errors.d.ts +0 -128
  178. package/client/node_modules/undici-types/fetch.d.ts +0 -209
  179. package/client/node_modules/undici-types/file.d.ts +0 -39
  180. package/client/node_modules/undici-types/filereader.d.ts +0 -54
  181. package/client/node_modules/undici-types/formdata.d.ts +0 -108
  182. package/client/node_modules/undici-types/global-dispatcher.d.ts +0 -9
  183. package/client/node_modules/undici-types/global-origin.d.ts +0 -7
  184. package/client/node_modules/undici-types/handlers.d.ts +0 -9
  185. package/client/node_modules/undici-types/header.d.ts +0 -4
  186. package/client/node_modules/undici-types/index.d.ts +0 -63
  187. package/client/node_modules/undici-types/interceptors.d.ts +0 -5
  188. package/client/node_modules/undici-types/mock-agent.d.ts +0 -50
  189. package/client/node_modules/undici-types/mock-client.d.ts +0 -25
  190. package/client/node_modules/undici-types/mock-errors.d.ts +0 -12
  191. package/client/node_modules/undici-types/mock-interceptor.d.ts +0 -93
  192. package/client/node_modules/undici-types/mock-pool.d.ts +0 -25
  193. package/client/node_modules/undici-types/package.json +0 -55
  194. package/client/node_modules/undici-types/patch.d.ts +0 -71
  195. package/client/node_modules/undici-types/pool-stats.d.ts +0 -19
  196. package/client/node_modules/undici-types/pool.d.ts +0 -28
  197. package/client/node_modules/undici-types/proxy-agent.d.ts +0 -30
  198. package/client/node_modules/undici-types/readable.d.ts +0 -61
  199. package/client/node_modules/undici-types/webidl.d.ts +0 -220
  200. package/client/node_modules/undici-types/websocket.d.ts +0 -131
  201. package/client/node_modules/vscode-jsonrpc/License.txt +0 -11
  202. package/client/node_modules/vscode-jsonrpc/README.md +0 -69
  203. package/client/node_modules/vscode-jsonrpc/browser.d.ts +0 -6
  204. package/client/node_modules/vscode-jsonrpc/browser.js +0 -7
  205. package/client/node_modules/vscode-jsonrpc/lib/browser/main.d.ts +0 -17
  206. package/client/node_modules/vscode-jsonrpc/lib/browser/main.js +0 -76
  207. package/client/node_modules/vscode-jsonrpc/lib/browser/ril.d.ts +0 -12
  208. package/client/node_modules/vscode-jsonrpc/lib/browser/ril.js +0 -156
  209. package/client/node_modules/vscode-jsonrpc/lib/common/api.d.ts +0 -14
  210. package/client/node_modules/vscode-jsonrpc/lib/common/api.js +0 -81
  211. package/client/node_modules/vscode-jsonrpc/lib/common/cancellation.d.ts +0 -32
  212. package/client/node_modules/vscode-jsonrpc/lib/common/cancellation.js +0 -96
  213. package/client/node_modules/vscode-jsonrpc/lib/common/connection.d.ts +0 -358
  214. package/client/node_modules/vscode-jsonrpc/lib/common/connection.js +0 -1212
  215. package/client/node_modules/vscode-jsonrpc/lib/common/disposable.d.ts +0 -9
  216. package/client/node_modules/vscode-jsonrpc/lib/common/disposable.js +0 -16
  217. package/client/node_modules/vscode-jsonrpc/lib/common/encoding.d.ts +0 -52
  218. package/client/node_modules/vscode-jsonrpc/lib/common/encoding.js +0 -70
  219. package/client/node_modules/vscode-jsonrpc/lib/common/events.d.ts +0 -39
  220. package/client/node_modules/vscode-jsonrpc/lib/common/events.js +0 -128
  221. package/client/node_modules/vscode-jsonrpc/lib/common/is.d.ts +0 -7
  222. package/client/node_modules/vscode-jsonrpc/lib/common/is.js +0 -35
  223. package/client/node_modules/vscode-jsonrpc/lib/common/linkedMap.d.ts +0 -53
  224. package/client/node_modules/vscode-jsonrpc/lib/common/linkedMap.js +0 -398
  225. package/client/node_modules/vscode-jsonrpc/lib/common/messageBuffer.d.ts +0 -18
  226. package/client/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +0 -152
  227. package/client/node_modules/vscode-jsonrpc/lib/common/messageReader.d.ts +0 -77
  228. package/client/node_modules/vscode-jsonrpc/lib/common/messageReader.js +0 -197
  229. package/client/node_modules/vscode-jsonrpc/lib/common/messageWriter.d.ts +0 -60
  230. package/client/node_modules/vscode-jsonrpc/lib/common/messageWriter.js +0 -115
  231. package/client/node_modules/vscode-jsonrpc/lib/common/messages.d.ts +0 -369
  232. package/client/node_modules/vscode-jsonrpc/lib/common/messages.js +0 -306
  233. package/client/node_modules/vscode-jsonrpc/lib/common/ral.d.ts +0 -74
  234. package/client/node_modules/vscode-jsonrpc/lib/common/ral.js +0 -23
  235. package/client/node_modules/vscode-jsonrpc/lib/common/semaphore.d.ts +0 -10
  236. package/client/node_modules/vscode-jsonrpc/lib/common/semaphore.js +0 -68
  237. package/client/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +0 -15
  238. package/client/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +0 -76
  239. package/client/node_modules/vscode-jsonrpc/lib/node/main.d.ts +0 -63
  240. package/client/node_modules/vscode-jsonrpc/lib/node/main.js +0 -257
  241. package/client/node_modules/vscode-jsonrpc/lib/node/ril.d.ts +0 -13
  242. package/client/node_modules/vscode-jsonrpc/lib/node/ril.js +0 -161
  243. package/client/node_modules/vscode-jsonrpc/node.cmd +0 -5
  244. package/client/node_modules/vscode-jsonrpc/node.d.ts +0 -6
  245. package/client/node_modules/vscode-jsonrpc/node.js +0 -7
  246. package/client/node_modules/vscode-jsonrpc/package.json +0 -45
  247. package/client/node_modules/vscode-jsonrpc/thirdpartynotices.txt +0 -16
  248. package/client/node_modules/vscode-jsonrpc/typings/thenable.d.ts +0 -5
  249. package/client/node_modules/vscode-languageclient/License.txt +0 -11
  250. package/client/node_modules/vscode-languageclient/README.md +0 -17
  251. package/client/node_modules/vscode-languageclient/browser.d.ts +0 -6
  252. package/client/node_modules/vscode-languageclient/browser.js +0 -7
  253. package/client/node_modules/vscode-languageclient/lib/browser/main.d.ts +0 -8
  254. package/client/node_modules/vscode-languageclient/lib/browser/main.js +0 -37
  255. package/client/node_modules/vscode-languageclient/lib/common/api.d.ts +0 -36
  256. package/client/node_modules/vscode-languageclient/lib/common/api.js +0 -27
  257. package/client/node_modules/vscode-languageclient/lib/common/callHierarchy.d.ts +0 -37
  258. package/client/node_modules/vscode-languageclient/lib/common/callHierarchy.js +0 -97
  259. package/client/node_modules/vscode-languageclient/lib/common/client.d.ts +0 -476
  260. package/client/node_modules/vscode-languageclient/lib/common/client.js +0 -1600
  261. package/client/node_modules/vscode-languageclient/lib/common/codeAction.d.ts +0 -19
  262. package/client/node_modules/vscode-languageclient/lib/common/codeAction.js +0 -99
  263. package/client/node_modules/vscode-languageclient/lib/common/codeConverter.d.ts +0 -78
  264. package/client/node_modules/vscode-languageclient/lib/common/codeConverter.js +0 -876
  265. package/client/node_modules/vscode-languageclient/lib/common/codeLens.d.ts +0 -23
  266. package/client/node_modules/vscode-languageclient/lib/common/codeLens.js +0 -78
  267. package/client/node_modules/vscode-languageclient/lib/common/colorProvider.d.ts +0 -25
  268. package/client/node_modules/vscode-languageclient/lib/common/colorProvider.js +0 -74
  269. package/client/node_modules/vscode-languageclient/lib/common/completion.d.ts +0 -20
  270. package/client/node_modules/vscode-languageclient/lib/common/completion.js +0 -126
  271. package/client/node_modules/vscode-languageclient/lib/common/configuration.d.ts +0 -69
  272. package/client/node_modules/vscode-languageclient/lib/common/configuration.js +0 -209
  273. package/client/node_modules/vscode-languageclient/lib/common/declaration.d.ts +0 -16
  274. package/client/node_modules/vscode-languageclient/lib/common/declaration.js +0 -54
  275. package/client/node_modules/vscode-languageclient/lib/common/definition.d.ts +0 -16
  276. package/client/node_modules/vscode-languageclient/lib/common/definition.js +0 -55
  277. package/client/node_modules/vscode-languageclient/lib/common/diagnostic.d.ts +0 -122
  278. package/client/node_modules/vscode-languageclient/lib/common/diagnostic.js +0 -814
  279. package/client/node_modules/vscode-languageclient/lib/common/documentHighlight.d.ts +0 -15
  280. package/client/node_modules/vscode-languageclient/lib/common/documentHighlight.js +0 -50
  281. package/client/node_modules/vscode-languageclient/lib/common/documentLink.d.ts +0 -19
  282. package/client/node_modules/vscode-languageclient/lib/common/documentLink.js +0 -71
  283. package/client/node_modules/vscode-languageclient/lib/common/documentSymbol.d.ts +0 -17
  284. package/client/node_modules/vscode-languageclient/lib/common/documentSymbol.js +0 -104
  285. package/client/node_modules/vscode-languageclient/lib/common/executeCommand.d.ts +0 -21
  286. package/client/node_modules/vscode-languageclient/lib/common/executeCommand.js +0 -72
  287. package/client/node_modules/vscode-languageclient/lib/common/features.d.ts +0 -418
  288. package/client/node_modules/vscode-languageclient/lib/common/features.js +0 -291
  289. package/client/node_modules/vscode-languageclient/lib/common/fileOperations.d.ts +0 -116
  290. package/client/node_modules/vscode-languageclient/lib/common/fileOperations.js +0 -333
  291. package/client/node_modules/vscode-languageclient/lib/common/fileSystemWatcher.d.ts +0 -18
  292. package/client/node_modules/vscode-languageclient/lib/common/fileSystemWatcher.js +0 -95
  293. package/client/node_modules/vscode-languageclient/lib/common/foldingRange.d.ts +0 -19
  294. package/client/node_modules/vscode-languageclient/lib/common/foldingRange.js +0 -65
  295. package/client/node_modules/vscode-languageclient/lib/common/formatting.d.ts +0 -39
  296. package/client/node_modules/vscode-languageclient/lib/common/formatting.js +0 -182
  297. package/client/node_modules/vscode-languageclient/lib/common/hover.d.ts +0 -16
  298. package/client/node_modules/vscode-languageclient/lib/common/hover.js +0 -58
  299. package/client/node_modules/vscode-languageclient/lib/common/implementation.d.ts +0 -16
  300. package/client/node_modules/vscode-languageclient/lib/common/implementation.js +0 -54
  301. package/client/node_modules/vscode-languageclient/lib/common/inlayHint.d.ts +0 -20
  302. package/client/node_modules/vscode-languageclient/lib/common/inlayHint.js +0 -92
  303. package/client/node_modules/vscode-languageclient/lib/common/inlineCompletion.d.ts +0 -18
  304. package/client/node_modules/vscode-languageclient/lib/common/inlineCompletion.js +0 -54
  305. package/client/node_modules/vscode-languageclient/lib/common/inlineValue.d.ts +0 -18
  306. package/client/node_modules/vscode-languageclient/lib/common/inlineValue.js +0 -65
  307. package/client/node_modules/vscode-languageclient/lib/common/linkedEditingRange.d.ts +0 -21
  308. package/client/node_modules/vscode-languageclient/lib/common/linkedEditingRange.js +0 -53
  309. package/client/node_modules/vscode-languageclient/lib/common/notebook.d.ts +0 -96
  310. package/client/node_modules/vscode-languageclient/lib/common/notebook.js +0 -851
  311. package/client/node_modules/vscode-languageclient/lib/common/progress.d.ts +0 -11
  312. package/client/node_modules/vscode-languageclient/lib/common/progress.js +0 -44
  313. package/client/node_modules/vscode-languageclient/lib/common/progressPart.d.ts +0 -24
  314. package/client/node_modules/vscode-languageclient/lib/common/progressPart.js +0 -96
  315. package/client/node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.d.ts +0 -6
  316. package/client/node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.js +0 -16
  317. package/client/node_modules/vscode-languageclient/lib/common/protocolCodeAction.d.ts +0 -6
  318. package/client/node_modules/vscode-languageclient/lib/common/protocolCodeAction.js +0 -14
  319. package/client/node_modules/vscode-languageclient/lib/common/protocolCodeLens.d.ts +0 -5
  320. package/client/node_modules/vscode-languageclient/lib/common/protocolCodeLens.js +0 -13
  321. package/client/node_modules/vscode-languageclient/lib/common/protocolCompletionItem.d.ts +0 -11
  322. package/client/node_modules/vscode-languageclient/lib/common/protocolCompletionItem.js +0 -13
  323. package/client/node_modules/vscode-languageclient/lib/common/protocolConverter.d.ts +0 -167
  324. package/client/node_modules/vscode-languageclient/lib/common/protocolConverter.js +0 -1134
  325. package/client/node_modules/vscode-languageclient/lib/common/protocolDiagnostic.d.ts +0 -18
  326. package/client/node_modules/vscode-languageclient/lib/common/protocolDiagnostic.js +0 -25
  327. package/client/node_modules/vscode-languageclient/lib/common/protocolDocumentLink.d.ts +0 -5
  328. package/client/node_modules/vscode-languageclient/lib/common/protocolDocumentLink.js +0 -13
  329. package/client/node_modules/vscode-languageclient/lib/common/protocolInlayHint.d.ts +0 -5
  330. package/client/node_modules/vscode-languageclient/lib/common/protocolInlayHint.js +0 -13
  331. package/client/node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.d.ts +0 -6
  332. package/client/node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.js +0 -16
  333. package/client/node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.d.ts +0 -7
  334. package/client/node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.js +0 -18
  335. package/client/node_modules/vscode-languageclient/lib/common/reference.d.ts +0 -20
  336. package/client/node_modules/vscode-languageclient/lib/common/reference.js +0 -53
  337. package/client/node_modules/vscode-languageclient/lib/common/rename.d.ts +0 -27
  338. package/client/node_modules/vscode-languageclient/lib/common/rename.js +0 -113
  339. package/client/node_modules/vscode-languageclient/lib/common/selectionRange.d.ts +0 -16
  340. package/client/node_modules/vscode-languageclient/lib/common/selectionRange.js +0 -57
  341. package/client/node_modules/vscode-languageclient/lib/common/semanticTokens.d.ts +0 -33
  342. package/client/node_modules/vscode-languageclient/lib/common/semanticTokens.js +0 -179
  343. package/client/node_modules/vscode-languageclient/lib/common/signatureHelp.d.ts +0 -16
  344. package/client/node_modules/vscode-languageclient/lib/common/signatureHelp.js +0 -71
  345. package/client/node_modules/vscode-languageclient/lib/common/textSynchronization.d.ts +0 -101
  346. package/client/node_modules/vscode-languageclient/lib/common/textSynchronization.js +0 -402
  347. package/client/node_modules/vscode-languageclient/lib/common/typeDefinition.d.ts +0 -16
  348. package/client/node_modules/vscode-languageclient/lib/common/typeDefinition.js +0 -55
  349. package/client/node_modules/vscode-languageclient/lib/common/typeHierarchy.d.ts +0 -31
  350. package/client/node_modules/vscode-languageclient/lib/common/typeHierarchy.js +0 -96
  351. package/client/node_modules/vscode-languageclient/lib/common/utils/async.d.ts +0 -41
  352. package/client/node_modules/vscode-languageclient/lib/common/utils/async.js +0 -276
  353. package/client/node_modules/vscode-languageclient/lib/common/utils/is.d.ts +0 -12
  354. package/client/node_modules/vscode-languageclient/lib/common/utils/is.js +0 -57
  355. package/client/node_modules/vscode-languageclient/lib/common/utils/uuid.d.ts +0 -22
  356. package/client/node_modules/vscode-languageclient/lib/common/utils/uuid.js +0 -97
  357. package/client/node_modules/vscode-languageclient/lib/common/workspaceFolder.d.ts +0 -30
  358. package/client/node_modules/vscode-languageclient/lib/common/workspaceFolder.js +0 -148
  359. package/client/node_modules/vscode-languageclient/lib/common/workspaceSymbol.d.ts +0 -19
  360. package/client/node_modules/vscode-languageclient/lib/common/workspaceSymbol.js +0 -79
  361. package/client/node_modules/vscode-languageclient/lib/node/main.d.ts +0 -100
  362. package/client/node_modules/vscode-languageclient/lib/node/main.js +0 -570
  363. package/client/node_modules/vscode-languageclient/lib/node/processes.d.ts +0 -6
  364. package/client/node_modules/vscode-languageclient/lib/node/processes.js +0 -47
  365. package/client/node_modules/vscode-languageclient/lib/node/terminateProcess.sh +0 -16
  366. package/client/node_modules/vscode-languageclient/node.cmd +0 -5
  367. package/client/node_modules/vscode-languageclient/node.d.ts +0 -6
  368. package/client/node_modules/vscode-languageclient/node.js +0 -7
  369. package/client/node_modules/vscode-languageclient/package.json +0 -50
  370. package/client/node_modules/vscode-languageserver-protocol/License.txt +0 -11
  371. package/client/node_modules/vscode-languageserver-protocol/README.md +0 -16
  372. package/client/node_modules/vscode-languageserver-protocol/browser.d.ts +0 -6
  373. package/client/node_modules/vscode-languageserver-protocol/browser.js +0 -7
  374. package/client/node_modules/vscode-languageserver-protocol/lib/browser/main.d.ts +0 -4
  375. package/client/node_modules/vscode-languageserver-protocol/lib/browser/main.js +0 -28
  376. package/client/node_modules/vscode-languageserver-protocol/lib/common/api.d.ts +0 -58
  377. package/client/node_modules/vscode-languageserver-protocol/lib/common/api.js +0 -77
  378. package/client/node_modules/vscode-languageserver-protocol/lib/common/connection.d.ts +0 -187
  379. package/client/node_modules/vscode-languageserver-protocol/lib/common/connection.js +0 -15
  380. package/client/node_modules/vscode-languageserver-protocol/lib/common/messages.d.ts +0 -51
  381. package/client/node_modules/vscode-languageserver-protocol/lib/common/messages.js +0 -44
  382. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.d.ts +0 -1
  383. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.$.js +0 -43
  384. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.d.ts +0 -86
  385. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +0 -42
  386. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +0 -66
  387. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js +0 -32
  388. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.d.ts +0 -35
  389. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js +0 -24
  390. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +0 -3252
  391. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.d.ts +0 -37
  392. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js +0 -22
  393. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.d.ts +0 -341
  394. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js +0 -74
  395. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +0 -306
  396. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +0 -101
  397. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.d.ts +0 -109
  398. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js +0 -30
  399. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.d.ts +0 -38
  400. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js +0 -21
  401. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.d.ts +0 -110
  402. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js +0 -43
  403. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.d.ts +0 -57
  404. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js +0 -22
  405. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.d.ts +0 -86
  406. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js +0 -30
  407. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.js +0 -943
  408. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.d.ts +0 -52
  409. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +0 -19
  410. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.d.ts +0 -106
  411. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +0 -68
  412. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.d.ts +0 -400
  413. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js +0 -214
  414. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.d.ts +0 -107
  415. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js +0 -37
  416. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.d.ts +0 -41
  417. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js +0 -20
  418. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.d.ts +0 -223
  419. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +0 -57
  420. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.d.ts +0 -72
  421. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +0 -22
  422. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.d.ts +0 -38
  423. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js +0 -21
  424. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.d.ts +0 -83
  425. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js +0 -42
  426. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.d.ts +0 -74
  427. package/client/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js +0 -27
  428. package/client/node_modules/vscode-languageserver-protocol/lib/common/utils/is.d.ts +0 -9
  429. package/client/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js +0 -46
  430. package/client/node_modules/vscode-languageserver-protocol/lib/node/main.d.ts +0 -6
  431. package/client/node_modules/vscode-languageserver-protocol/lib/node/main.js +0 -28
  432. package/client/node_modules/vscode-languageserver-protocol/metaModel.schema.json +0 -783
  433. package/client/node_modules/vscode-languageserver-protocol/node.cmd +0 -5
  434. package/client/node_modules/vscode-languageserver-protocol/node.d.ts +0 -6
  435. package/client/node_modules/vscode-languageserver-protocol/node.js +0 -7
  436. package/client/node_modules/vscode-languageserver-protocol/package.json +0 -45
  437. package/client/node_modules/vscode-languageserver-protocol/thirdpartynotices.txt +0 -31
  438. package/client/node_modules/vscode-languageserver-types/License.txt +0 -11
  439. package/client/node_modules/vscode-languageserver-types/README.md +0 -17
  440. package/client/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +0 -3139
  441. package/client/node_modules/vscode-languageserver-types/lib/esm/main.js +0 -2222
  442. package/client/node_modules/vscode-languageserver-types/lib/esm/package.json +0 -3
  443. package/client/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +0 -3139
  444. package/client/node_modules/vscode-languageserver-types/lib/umd/main.js +0 -2272
  445. package/client/node_modules/vscode-languageserver-types/package.json +0 -38
  446. package/client/node_modules/vscode-languageserver-types/thirdpartynotices.txt +0 -16
  447. package/client/package-lock.json +0 -125
  448. package/client/package.json +0 -42
  449. package/client/src/extension.ts +0 -56
  450. package/client/tsconfig.json +0 -12
@@ -0,0 +1,457 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_1 = require("vscode-languageserver/node");
4
+ const fs = require("fs");
5
+ const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
6
+ const cssVariableManager_1 = require("./cssVariableManager");
7
+ const specificity_1 = require("./specificity");
8
+ // Write startup log immediately
9
+ try {
10
+ const startupMsg = `[STARTUP] ${new Date().toISOString()} CSS LSP Server starting\n`;
11
+ fs.appendFileSync('/tmp/css.log', startupMsg);
12
+ }
13
+ catch (e) {
14
+ // Ignore
15
+ }
16
+ // Create a connection for the server, using Node's IPC as a transport.
17
+ // Also include all preview / proposed LSP features.
18
+ const connection = (0, node_1.createConnection)(node_1.ProposedFeatures.all);
19
+ fs.writeFile('/tmp/css2.log', 'asdf', { encoding: 'utf-8' }, () => { });
20
+ function logDebug(label, payload) {
21
+ // eslint-disable-next-line no-console
22
+ const message = `[css-lsp] ${label} ${JSON.stringify(payload)}`;
23
+ console.error(message);
24
+ try {
25
+ fs.appendFileSync('/tmp/css.log', `[DEBUG] ${new Date().toISOString()} ${message}\n`);
26
+ }
27
+ catch (e) {
28
+ // Ignore file write errors
29
+ }
30
+ }
31
+ // Create a simple text document manager.
32
+ const documents = new node_1.TextDocuments(vscode_languageserver_textdocument_1.TextDocument);
33
+ const cssVariableManager = new cssVariableManager_1.CssVariableManager(connection.console);
34
+ let hasConfigurationCapability = false;
35
+ let hasWorkspaceFolderCapability = false;
36
+ let hasDiagnosticRelatedInformationCapability = false;
37
+ connection.onInitialize((params) => {
38
+ logDebug('initialize', {
39
+ rootUri: params.rootUri,
40
+ rootPath: params.rootPath,
41
+ workspaceFolders: params.workspaceFolders,
42
+ capabilities: params.capabilities,
43
+ });
44
+ const capabilities = params.capabilities;
45
+ // Does the client support the `workspace/configuration` request?
46
+ // If not, we fall back using global settings.
47
+ hasConfigurationCapability = !!(capabilities.workspace && !!capabilities.workspace.configuration);
48
+ hasWorkspaceFolderCapability = !!(capabilities.workspace && !!capabilities.workspace.workspaceFolders);
49
+ hasDiagnosticRelatedInformationCapability = !!(capabilities.textDocument &&
50
+ capabilities.textDocument.publishDiagnostics &&
51
+ capabilities.textDocument.publishDiagnostics.relatedInformation);
52
+ const result = {
53
+ capabilities: {
54
+ textDocumentSync: node_1.TextDocumentSyncKind.Incremental,
55
+ // Tell the client that this server supports code completion.
56
+ completionProvider: {
57
+ resolveProvider: true,
58
+ triggerCharacters: ['-']
59
+ },
60
+ definitionProvider: true,
61
+ hoverProvider: true,
62
+ referencesProvider: true,
63
+ renameProvider: true,
64
+ documentSymbolProvider: true,
65
+ workspaceSymbolProvider: true
66
+ }
67
+ };
68
+ if (hasWorkspaceFolderCapability) {
69
+ result.capabilities.workspace = {
70
+ workspaceFolders: {
71
+ supported: true
72
+ }
73
+ };
74
+ }
75
+ return result;
76
+ });
77
+ connection.onInitialized(async () => {
78
+ if (hasConfigurationCapability) {
79
+ // Register for all configuration changes.
80
+ connection.client.register(node_1.DidChangeConfigurationNotification.type, undefined);
81
+ }
82
+ if (hasWorkspaceFolderCapability) {
83
+ connection.workspace.onDidChangeWorkspaceFolders(_event => {
84
+ connection.console.log('Workspace folder change event received.');
85
+ });
86
+ }
87
+ // Scan workspace for CSS variables on initialization
88
+ const workspaceFolders = await connection.workspace.getWorkspaceFolders();
89
+ if (workspaceFolders) {
90
+ connection.console.log('Scanning workspace for CSS variables...');
91
+ const folderUris = workspaceFolders.map(f => f.uri);
92
+ await cssVariableManager.scanWorkspace(folderUris);
93
+ connection.console.log(`Workspace scan complete. Found ${cssVariableManager.getAllVariables().length} variables.`);
94
+ // Validate all open documents after workspace scan
95
+ documents.all().forEach(validateTextDocument);
96
+ }
97
+ });
98
+ const defaultSettings = { maxNumberOfProblems: 1000 };
99
+ let globalSettings = defaultSettings;
100
+ // Cache the settings of all open documents
101
+ const documentSettings = new Map();
102
+ connection.onDidChangeConfiguration(change => {
103
+ if (hasConfigurationCapability) {
104
+ // Reset all cached document settings
105
+ documentSettings.clear();
106
+ }
107
+ else {
108
+ globalSettings = ((change.settings.cssVariableLsp || defaultSettings));
109
+ }
110
+ // Revalidate all open text documents
111
+ documents.all().forEach(validateTextDocument);
112
+ });
113
+ function getDocumentSettings(resource) {
114
+ if (!hasConfigurationCapability) {
115
+ return Promise.resolve(globalSettings);
116
+ }
117
+ let result = documentSettings.get(resource);
118
+ if (!result) {
119
+ result = connection.workspace.getConfiguration({
120
+ scopeUri: resource,
121
+ section: 'cssVariableLsp'
122
+ });
123
+ documentSettings.set(resource, result);
124
+ }
125
+ return result;
126
+ }
127
+ // Only keep settings for open documents
128
+ documents.onDidClose(async (e) => {
129
+ connection.console.log(`[css-lsp] Document closed: ${e.document.uri}`);
130
+ documentSettings.delete(e.document.uri);
131
+ // When a document is closed, we need to revert to the file system version
132
+ // instead of removing it completely (which would break workspace files).
133
+ // This handles cases where the editor had unsaved changes.
134
+ await cssVariableManager.updateFile(e.document.uri);
135
+ });
136
+ // The content of a text document has changed. This event is emitted
137
+ // when the text document first opened or when its content has changed.
138
+ // Note: We don't need a separate onDidOpen handler because onDidChangeContent
139
+ // already fires when a document is first opened, avoiding double-parsing.
140
+ documents.onDidChangeContent(change => {
141
+ cssVariableManager.parseDocument(change.document);
142
+ validateTextDocument(change.document);
143
+ });
144
+ async function validateTextDocument(textDocument) {
145
+ const settings = await getDocumentSettings(textDocument.uri);
146
+ const text = textDocument.getText();
147
+ const diagnostics = [];
148
+ // Find all var(--variable) usages
149
+ const usageRegex = /var\((--[\w-]+)(?:\s*,\s*[^)]+)?\)/g;
150
+ let match;
151
+ while ((match = usageRegex.exec(text)) !== null) {
152
+ const variableName = match[1];
153
+ const definitions = cssVariableManager.getVariables(variableName);
154
+ if (definitions.length === 0) {
155
+ // Variable is used but not defined
156
+ const startPos = textDocument.positionAt(match.index);
157
+ const endPos = textDocument.positionAt(match.index + match[0].length);
158
+ const diagnostic = {
159
+ severity: node_1.DiagnosticSeverity.Warning,
160
+ range: {
161
+ start: startPos,
162
+ end: endPos
163
+ },
164
+ message: `CSS variable '${variableName}' is not defined in the workspace`,
165
+ source: 'css-variable-lsp'
166
+ };
167
+ if (hasDiagnosticRelatedInformationCapability) {
168
+ diagnostic.relatedInformation = [];
169
+ }
170
+ diagnostics.push(diagnostic);
171
+ }
172
+ }
173
+ // Send diagnostics to the client
174
+ connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
175
+ }
176
+ connection.onDidChangeWatchedFiles(async (change) => {
177
+ // Monitored files have changed in the client
178
+ connection.console.log('Received file change event');
179
+ logDebug('didChangeWatchedFiles', change);
180
+ for (const fileEvent of change.changes) {
181
+ if (fileEvent.type === node_1.FileChangeType.Deleted) {
182
+ cssVariableManager.removeFile(fileEvent.uri);
183
+ }
184
+ else {
185
+ // Created or Changed
186
+ // If the document is open, we skip because onDidChangeContent handles it.
187
+ if (!documents.get(fileEvent.uri)) {
188
+ await cssVariableManager.updateFile(fileEvent.uri);
189
+ }
190
+ }
191
+ }
192
+ // Revalidate all open documents
193
+ documents.all().forEach(validateTextDocument);
194
+ });
195
+ // This handler provides the initial list of the completion items.
196
+ connection.onCompletion((_textDocumentPosition) => {
197
+ const variables = cssVariableManager.getAllVariables();
198
+ // Deduplicate by name
199
+ const uniqueVars = new Map();
200
+ variables.forEach(v => {
201
+ if (!uniqueVars.has(v.name)) {
202
+ uniqueVars.set(v.name, v);
203
+ }
204
+ });
205
+ return Array.from(uniqueVars.values()).map(v => ({
206
+ label: v.name,
207
+ kind: node_1.CompletionItemKind.Variable,
208
+ detail: v.value,
209
+ documentation: `Defined in ${v.uri}`
210
+ }));
211
+ });
212
+ // This handler resolves additional information for the item selected in
213
+ // the completion list.
214
+ connection.onCompletionResolve((item) => {
215
+ return item;
216
+ });
217
+ connection.onHover((params) => {
218
+ const document = documents.get(params.textDocument.uri);
219
+ if (!document) {
220
+ return undefined;
221
+ }
222
+ const text = document.getText();
223
+ const offset = document.offsetAt(params.position);
224
+ // Simple regex to find the word at the cursor
225
+ // We look backwards and forwards for valid variable characters
226
+ const left = text.slice(0, offset).match(/[\w-]*$/);
227
+ const right = text.slice(offset).match(/^[\w-]*/);
228
+ if (!left || !right) {
229
+ return undefined;
230
+ }
231
+ const word = left[0] + right[0];
232
+ if (word.startsWith('--')) {
233
+ const variables = cssVariableManager.getVariables(word);
234
+ if (variables.length === 0) {
235
+ return undefined;
236
+ }
237
+ // Get all usages to find context if hovering over a usage
238
+ const usages = cssVariableManager.getVariableUsages(word);
239
+ const hoverUsage = usages.find(u => document.positionAt(document.offsetAt(u.range.start)) === params.position ||
240
+ (offset >= document.offsetAt(u.range.start) && offset <= document.offsetAt(u.range.end)));
241
+ const usageContext = hoverUsage?.usageContext || '';
242
+ const isInlineStyle = usageContext === 'inline-style';
243
+ // Get DOM tree and node if available (for HTML documents)
244
+ const domTree = cssVariableManager.getDOMTree(document.uri);
245
+ const domNode = hoverUsage?.domNode;
246
+ // Sort variables by CSS cascade rules:
247
+ // 1. !important declarations win
248
+ // 2. Inline styles beat everything (except !important)
249
+ // 3. Then by specificity
250
+ // 4. Then by source order (later wins)
251
+ const sortedVars = [...variables].sort((a, b) => {
252
+ // !important always wins (unless both are !important)
253
+ if (a.important !== b.important) {
254
+ return a.important ? -1 : 1;
255
+ }
256
+ // After !important, check specificity
257
+ const specA = (0, specificity_1.calculateSpecificity)(a.selector);
258
+ const specB = (0, specificity_1.calculateSpecificity)(b.selector);
259
+ const specCompare = (0, specificity_1.compareSpecificity)(specA, specB);
260
+ if (specCompare !== 0) {
261
+ return -specCompare; // Negative for descending order
262
+ }
263
+ // Equal specificity - later in source wins
264
+ return b.sourcePosition - a.sourcePosition;
265
+ });
266
+ // Build hover message with full cascade information
267
+ let hoverText = `### CSS Variable: \`${word}\`\n\n`;
268
+ if (sortedVars.length === 1) {
269
+ // Single definition - simple display
270
+ const v = sortedVars[0];
271
+ hoverText += `**Value:** \`${v.value}\``;
272
+ if (v.important) {
273
+ hoverText += ` **!important**`;
274
+ }
275
+ hoverText += `\n\n`;
276
+ if (v.selector) {
277
+ hoverText += `**Defined in:** \`${v.selector}\`\n`;
278
+ hoverText += `**Specificity:** ${(0, specificity_1.formatSpecificity)((0, specificity_1.calculateSpecificity)(v.selector))}\n`;
279
+ }
280
+ }
281
+ else {
282
+ // Multiple definitions - show full cascade
283
+ hoverText += '**Definitions** (CSS cascade order):\n\n';
284
+ sortedVars.forEach((v, index) => {
285
+ const spec = (0, specificity_1.calculateSpecificity)(v.selector);
286
+ // Use DOM-aware matching if available, otherwise fall back to simple matching
287
+ const isApplicable = usageContext ?
288
+ (0, specificity_1.matchesContext)(v.selector, usageContext, domTree, domNode) : true;
289
+ const isWinner = index === 0 && (isApplicable || isInlineStyle);
290
+ let line = `${index + 1}. \`${v.value}\``;
291
+ if (v.important) {
292
+ line += ` **!important**`;
293
+ }
294
+ if (v.selector) {
295
+ line += ` from \`${v.selector}\``;
296
+ line += ` ${(0, specificity_1.formatSpecificity)(spec)}`;
297
+ }
298
+ if (isWinner && usageContext) {
299
+ if (v.important) {
300
+ line += ' ✓ **Wins (!important)**';
301
+ }
302
+ else if (isInlineStyle) {
303
+ line += ' ✓ **Would apply (inline style)**';
304
+ }
305
+ else if (domTree && domNode) {
306
+ line += ' ✓ **Applies (DOM match)**';
307
+ }
308
+ else {
309
+ line += ' ✓ **Applies here**';
310
+ }
311
+ }
312
+ else if (!isApplicable && usageContext && !isInlineStyle) {
313
+ line += ' _(selector doesn\'t match)_';
314
+ }
315
+ else if (index > 0 && usageContext) {
316
+ // Explain why it doesn't win
317
+ const winner = sortedVars[0];
318
+ if (winner.important && !v.important) {
319
+ line += ' _(overridden by !important)_';
320
+ }
321
+ else {
322
+ const winnerSpec = (0, specificity_1.calculateSpecificity)(winner.selector);
323
+ const cmp = (0, specificity_1.compareSpecificity)(winnerSpec, spec);
324
+ if (cmp > 0) {
325
+ line += ' _(lower specificity)_';
326
+ }
327
+ else if (cmp === 0) {
328
+ line += ' _(earlier in source)_';
329
+ }
330
+ }
331
+ }
332
+ hoverText += line + '\n';
333
+ });
334
+ if (usageContext) {
335
+ if (isInlineStyle) {
336
+ hoverText += `\n_Context: Inline style (highest priority)_`;
337
+ }
338
+ else if (domTree && domNode) {
339
+ hoverText += `\n_Context: \`${usageContext}\` (DOM-aware matching)_`;
340
+ }
341
+ else {
342
+ hoverText += `\n_Context: \`${usageContext}\`_`;
343
+ }
344
+ }
345
+ }
346
+ return {
347
+ contents: {
348
+ kind: 'markdown',
349
+ value: hoverText
350
+ }
351
+ };
352
+ }
353
+ return undefined;
354
+ });
355
+ connection.onDefinition((params) => {
356
+ const document = documents.get(params.textDocument.uri);
357
+ if (!document) {
358
+ return undefined;
359
+ }
360
+ const text = document.getText();
361
+ const offset = document.offsetAt(params.position);
362
+ const left = text.slice(0, offset).match(/[\w-]*$/);
363
+ const right = text.slice(offset).match(/^[\w-]*/);
364
+ if (!left || !right) {
365
+ return undefined;
366
+ }
367
+ const word = left[0] + right[0];
368
+ if (word.startsWith('--')) {
369
+ const variables = cssVariableManager.getVariables(word);
370
+ if (variables.length > 0) {
371
+ return {
372
+ uri: variables[0].uri,
373
+ range: variables[0].range
374
+ };
375
+ }
376
+ }
377
+ return undefined;
378
+ });
379
+ // Find all references handler
380
+ connection.onReferences((params) => {
381
+ const document = documents.get(params.textDocument.uri);
382
+ if (!document) {
383
+ return [];
384
+ }
385
+ const text = document.getText();
386
+ const offset = document.offsetAt(params.position);
387
+ const left = text.slice(0, offset).match(/[\w-]*$/);
388
+ const right = text.slice(offset).match(/^[\w-]*/);
389
+ if (!left || !right) {
390
+ return [];
391
+ }
392
+ const word = left[0] + right[0];
393
+ if (word.startsWith('--')) {
394
+ const references = cssVariableManager.getReferences(word);
395
+ return references.map(ref => node_1.Location.create(ref.uri, ref.range));
396
+ }
397
+ return [];
398
+ });
399
+ // Rename handler
400
+ connection.onRenameRequest((params) => {
401
+ const document = documents.get(params.textDocument.uri);
402
+ if (!document) {
403
+ return null;
404
+ }
405
+ const text = document.getText();
406
+ const offset = document.offsetAt(params.position);
407
+ const left = text.slice(0, offset).match(/[\w-]*$/);
408
+ const right = text.slice(offset).match(/^[\w-]*/);
409
+ if (!left || !right) {
410
+ return null;
411
+ }
412
+ const word = left[0] + right[0];
413
+ if (word.startsWith('--')) {
414
+ const references = cssVariableManager.getReferences(word);
415
+ const changes = {};
416
+ for (const ref of references) {
417
+ if (!changes[ref.uri]) {
418
+ changes[ref.uri] = [];
419
+ }
420
+ // For definitions, just replace the variable name
421
+ // For usages in var(), replace just the variable name part
422
+ const edit = {
423
+ range: ref.range,
424
+ newText: 'uri' in ref && 'value' in ref
425
+ ? `${params.newName}: ${ref.value};` // Definition
426
+ : `var(${params.newName})` // Usage
427
+ };
428
+ changes[ref.uri].push(edit);
429
+ }
430
+ return { changes };
431
+ }
432
+ return null;
433
+ });
434
+ // Document symbols handler
435
+ connection.onDocumentSymbol((params) => {
436
+ const document = documents.get(params.textDocument.uri);
437
+ if (!document) {
438
+ return [];
439
+ }
440
+ const variables = cssVariableManager.getDocumentDefinitions(document.uri);
441
+ return variables.map(v => node_1.DocumentSymbol.create(v.name, v.value, node_1.SymbolKind.Variable, v.range, v.range));
442
+ });
443
+ // Workspace symbols handler
444
+ connection.onWorkspaceSymbol((params) => {
445
+ const query = params.query.toLowerCase();
446
+ const allVariables = cssVariableManager.getAllDefinitions();
447
+ const filtered = query
448
+ ? allVariables.filter(v => v.name.toLowerCase().includes(query))
449
+ : allVariables;
450
+ return filtered.map(v => node_1.WorkspaceSymbol.create(v.name, node_1.SymbolKind.Variable, v.uri, v.range));
451
+ });
452
+ // Make the text document manager listen on the connection
453
+ // for open, change and close text document events
454
+ documents.listen(connection);
455
+ // Listen on the connection
456
+ connection.listen();
457
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * CSS Specificity Calculator
4
+ *
5
+ * Calculates and compares CSS selector specificity according to the CSS specification.
6
+ * https://www.w3.org/TR/selectors-3/#specificity
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.calculateSpecificity = calculateSpecificity;
10
+ exports.compareSpecificity = compareSpecificity;
11
+ exports.formatSpecificity = formatSpecificity;
12
+ exports.matchesContext = matchesContext;
13
+ /**
14
+ * Calculate the specificity of a CSS selector.
15
+ *
16
+ * Examples:
17
+ * - ":root" → (0, 1, 0) - pseudo-class
18
+ * - "div" → (0, 0, 1) - element
19
+ * - ".class" → (0, 1, 0) - class
20
+ * - "#id" → (1, 0, 0) - ID
21
+ * - "div.class#id" → (1, 1, 1)
22
+ */
23
+ function calculateSpecificity(selector) {
24
+ // Remove whitespace and trim
25
+ selector = selector.trim();
26
+ // Handle empty or universal selector
27
+ if (!selector || selector === '*') {
28
+ return { ids: 0, classes: 0, elements: 0 };
29
+ }
30
+ const specificity = {
31
+ ids: 0,
32
+ classes: 0,
33
+ elements: 0
34
+ };
35
+ // Split by comma for selector lists, take the most specific
36
+ const selectors = selector.split(',');
37
+ if (selectors.length > 1) {
38
+ // For multiple selectors, return the highest specificity
39
+ const specificities = selectors.map(s => calculateSpecificity(s.trim()));
40
+ return specificities.reduce((max, curr) => compareSpecificity(curr, max) > 0 ? curr : max);
41
+ }
42
+ // Remove pseudo-elements first (::before, ::after) - count as elements
43
+ const pseudoElementRegex = /::[a-z-]+/gi;
44
+ const pseudoElements = selector.match(pseudoElementRegex) || [];
45
+ specificity.elements += pseudoElements.length;
46
+ selector = selector.replace(pseudoElementRegex, '');
47
+ // Count IDs (#id)
48
+ const idRegex = /#[a-z0-9_-]+/gi;
49
+ const ids = selector.match(idRegex) || [];
50
+ specificity.ids += ids.length;
51
+ selector = selector.replace(idRegex, '');
52
+ // Count classes (.class)
53
+ const classRegex = /\.[a-z0-9_-]+/gi;
54
+ const classes = selector.match(classRegex) || [];
55
+ specificity.classes += classes.length;
56
+ selector = selector.replace(classRegex, '');
57
+ // Count attribute selectors ([attr])
58
+ const attrRegex = /\[[^\]]+\]/g;
59
+ const attrs = selector.match(attrRegex) || [];
60
+ specificity.classes += attrs.length;
61
+ selector = selector.replace(attrRegex, '');
62
+ // Count pseudo-classes (:hover, :nth-child, etc.)
63
+ const pseudoClassRegex = /:[a-z-]+(\([^)]*\))?/gi;
64
+ const pseudoClasses = selector.match(pseudoClassRegex) || [];
65
+ specificity.classes += pseudoClasses.length;
66
+ selector = selector.replace(pseudoClassRegex, '');
67
+ // Count type selectors (remaining words that aren't combinators)
68
+ // Remove combinators: >, +, ~, and whitespace
69
+ selector = selector.replace(/[>+~\s]/g, ' ');
70
+ const elements = selector.split(/\s+/).filter(s => s && s !== '*');
71
+ specificity.elements += elements.length;
72
+ return specificity;
73
+ }
74
+ /**
75
+ * Compare two specificity values.
76
+ *
77
+ * @returns 1 if a > b, -1 if a < b, 0 if equal
78
+ */
79
+ function compareSpecificity(a, b) {
80
+ // Compare IDs first
81
+ if (a.ids !== b.ids) {
82
+ return a.ids > b.ids ? 1 : -1;
83
+ }
84
+ // Then classes
85
+ if (a.classes !== b.classes) {
86
+ return a.classes > b.classes ? 1 : -1;
87
+ }
88
+ // Finally elements
89
+ if (a.elements !== b.elements) {
90
+ return a.elements > b.elements ? 1 : -1;
91
+ }
92
+ // Equal specificity
93
+ return 0;
94
+ }
95
+ /**
96
+ * Format specificity as a string for display
97
+ */
98
+ function formatSpecificity(spec) {
99
+ return `(${spec.ids},${spec.classes},${spec.elements})`;
100
+ }
101
+ /**
102
+ * Check if a selector could apply to a given context.
103
+ * This is a simplified check - a full implementation would require DOM structure.
104
+ *
105
+ * Examples:
106
+ * - matchesContext(":root", ".button") → true (root applies to everything)
107
+ * - matchesContext("div", "div") → true (exact match)
108
+ * - matchesContext(".button", ".button") → true (exact match)
109
+ * - matchesContext("#main", ".button") → false (different selectors)
110
+ */
111
+ function matchesContext(definitionSelector, usageContext, domTree, domNode) {
112
+ // If we have a DOM tree and node, use proper selector matching
113
+ if (domTree && domNode) {
114
+ try {
115
+ return domTree.matchesSelector(domNode, definitionSelector);
116
+ }
117
+ catch (e) {
118
+ // If selector matching fails, fall back to simple matching
119
+ }
120
+ }
121
+ // Fallback: Simple matching without DOM
122
+ // :root applies to everything (universal fallback)
123
+ if (definitionSelector.trim() === ':root') {
124
+ return true;
125
+ }
126
+ // Exact match
127
+ if (definitionSelector.trim() === usageContext.trim()) {
128
+ return true;
129
+ }
130
+ // For now, we use a simplified approach:
131
+ // If the usage context contains the definition selector, it might apply
132
+ // This handles cases like "div" applying to "div.class"
133
+ const defParts = definitionSelector.split(/[\s>+~]/);
134
+ const usageParts = usageContext.split(/[\s>+~]/);
135
+ // Check if any part of the definition is in the usage
136
+ return defParts.some(defPart => usageParts.some(usagePart => usagePart.includes(defPart) || defPart.includes(usagePart)));
137
+ }
138
+ //# sourceMappingURL=specificity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specificity.js","sourceRoot":"","sources":["../src/specificity.ts"],"names":[],"mappings":"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"}