@platformos/platformos-language-server-common 0.0.2

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 (711) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +87 -0
  3. package/dist/ClientCapabilities.d.ts +14 -0
  4. package/dist/ClientCapabilities.js +52 -0
  5. package/dist/ClientCapabilities.js.map +1 -0
  6. package/dist/PropertyShapeInference.d.ts +57 -0
  7. package/dist/PropertyShapeInference.js +336 -0
  8. package/dist/PropertyShapeInference.js.map +1 -0
  9. package/dist/TypeSystem.d.ts +94 -0
  10. package/dist/TypeSystem.js +1481 -0
  11. package/dist/TypeSystem.js.map +1 -0
  12. package/dist/VariableShapeExtractor.d.ts +14 -0
  13. package/dist/VariableShapeExtractor.js +283 -0
  14. package/dist/VariableShapeExtractor.js.map +1 -0
  15. package/dist/codeActions/BaseCodeActionsProvider.d.ts +11 -0
  16. package/dist/codeActions/BaseCodeActionsProvider.js +14 -0
  17. package/dist/codeActions/BaseCodeActionsProvider.js.map +1 -0
  18. package/dist/codeActions/CodeActionsProvider.d.ts +9 -0
  19. package/dist/codeActions/CodeActionsProvider.js +22 -0
  20. package/dist/codeActions/CodeActionsProvider.js.map +1 -0
  21. package/dist/codeActions/index.d.ts +1 -0
  22. package/dist/codeActions/index.js +7 -0
  23. package/dist/codeActions/index.js.map +1 -0
  24. package/dist/codeActions/providers/FixAllProvider.d.ts +23 -0
  25. package/dist/codeActions/providers/FixAllProvider.js +52 -0
  26. package/dist/codeActions/providers/FixAllProvider.js.map +1 -0
  27. package/dist/codeActions/providers/FixProvider.d.ts +6 -0
  28. package/dist/codeActions/providers/FixProvider.js +72 -0
  29. package/dist/codeActions/providers/FixProvider.js.map +1 -0
  30. package/dist/codeActions/providers/GenerateDocBlockProvider.d.ts +10 -0
  31. package/dist/codeActions/providers/GenerateDocBlockProvider.js +39 -0
  32. package/dist/codeActions/providers/GenerateDocBlockProvider.js.map +1 -0
  33. package/dist/codeActions/providers/SuggestionProvider.d.ts +6 -0
  34. package/dist/codeActions/providers/SuggestionProvider.js +41 -0
  35. package/dist/codeActions/providers/SuggestionProvider.js.map +1 -0
  36. package/dist/codeActions/providers/index.d.ts +3 -0
  37. package/dist/codeActions/providers/index.js +10 -0
  38. package/dist/codeActions/providers/index.js.map +1 -0
  39. package/dist/codeActions/providers/utils.d.ts +20 -0
  40. package/dist/codeActions/providers/utils.js +29 -0
  41. package/dist/codeActions/providers/utils.js.map +1 -0
  42. package/dist/commands/BaseExecuteCommandProvider.d.ts +13 -0
  43. package/dist/commands/BaseExecuteCommandProvider.js +13 -0
  44. package/dist/commands/BaseExecuteCommandProvider.js.map +1 -0
  45. package/dist/commands/ExecuteCommandProvider.d.ts +11 -0
  46. package/dist/commands/ExecuteCommandProvider.js +30 -0
  47. package/dist/commands/ExecuteCommandProvider.js.map +1 -0
  48. package/dist/commands/index.d.ts +2 -0
  49. package/dist/commands/index.js +9 -0
  50. package/dist/commands/index.js.map +1 -0
  51. package/dist/commands/providers/ApplyFixesProvider.d.ts +19 -0
  52. package/dist/commands/providers/ApplyFixesProvider.js +69 -0
  53. package/dist/commands/providers/ApplyFixesProvider.js.map +1 -0
  54. package/dist/commands/providers/ApplySuggestionProvider.d.ts +19 -0
  55. package/dist/commands/providers/ApplySuggestionProvider.js +73 -0
  56. package/dist/commands/providers/ApplySuggestionProvider.js.map +1 -0
  57. package/dist/commands/providers/GenerateDocBlockCommandProvider.d.ts +19 -0
  58. package/dist/commands/providers/GenerateDocBlockCommandProvider.js +64 -0
  59. package/dist/commands/providers/GenerateDocBlockCommandProvider.js.map +1 -0
  60. package/dist/commands/providers/RunChecksProvider.d.ts +26 -0
  61. package/dist/commands/providers/RunChecksProvider.js +32 -0
  62. package/dist/commands/providers/RunChecksProvider.js.map +1 -0
  63. package/dist/commands/providers/index.d.ts +3 -0
  64. package/dist/commands/providers/index.js +12 -0
  65. package/dist/commands/providers/index.js.map +1 -0
  66. package/dist/completions/CompletionsProvider.d.ts +35 -0
  67. package/dist/completions/CompletionsProvider.js +55 -0
  68. package/dist/completions/CompletionsProvider.js.map +1 -0
  69. package/dist/completions/index.d.ts +1 -0
  70. package/dist/completions/index.js +6 -0
  71. package/dist/completions/index.js.map +1 -0
  72. package/dist/completions/params/LiquidCompletionParams.d.ts +24 -0
  73. package/dist/completions/params/LiquidCompletionParams.js +436 -0
  74. package/dist/completions/params/LiquidCompletionParams.js.map +1 -0
  75. package/dist/completions/params/fix.d.ts +11 -0
  76. package/dist/completions/params/fix.js +238 -0
  77. package/dist/completions/params/fix.js.map +1 -0
  78. package/dist/completions/params/index.d.ts +2 -0
  79. package/dist/completions/params/index.js +8 -0
  80. package/dist/completions/params/index.js.map +1 -0
  81. package/dist/completions/providers/ContentForBlockTypeCompletionProvider.d.ts +8 -0
  82. package/dist/completions/providers/ContentForBlockTypeCompletionProvider.js +36 -0
  83. package/dist/completions/providers/ContentForBlockTypeCompletionProvider.js.map +1 -0
  84. package/dist/completions/providers/ContentForCompletionProvider.d.ts +7 -0
  85. package/dist/completions/providers/ContentForCompletionProvider.js +87 -0
  86. package/dist/completions/providers/ContentForCompletionProvider.js.map +1 -0
  87. package/dist/completions/providers/ContentForParameterCompletionProvider.d.ts +23 -0
  88. package/dist/completions/providers/ContentForParameterCompletionProvider.js +127 -0
  89. package/dist/completions/providers/ContentForParameterCompletionProvider.js.map +1 -0
  90. package/dist/completions/providers/FilterCompletionProvider.d.ts +21 -0
  91. package/dist/completions/providers/FilterCompletionProvider.js +162 -0
  92. package/dist/completions/providers/FilterCompletionProvider.js.map +1 -0
  93. package/dist/completions/providers/FilterNamedParameterCompletionProvider.d.ts +15 -0
  94. package/dist/completions/providers/FilterNamedParameterCompletionProvider.js +86 -0
  95. package/dist/completions/providers/FilterNamedParameterCompletionProvider.js.map +1 -0
  96. package/dist/completions/providers/HtmlAttributeCompletionProvider.d.ts +13 -0
  97. package/dist/completions/providers/HtmlAttributeCompletionProvider.js +83 -0
  98. package/dist/completions/providers/HtmlAttributeCompletionProvider.js.map +1 -0
  99. package/dist/completions/providers/HtmlAttributeValueCompletionProvider.d.ts +7 -0
  100. package/dist/completions/providers/HtmlAttributeValueCompletionProvider.js +53 -0
  101. package/dist/completions/providers/HtmlAttributeValueCompletionProvider.js.map +1 -0
  102. package/dist/completions/providers/HtmlTagCompletionProvider.d.ts +7 -0
  103. package/dist/completions/providers/HtmlTagCompletionProvider.js +90 -0
  104. package/dist/completions/providers/HtmlTagCompletionProvider.js.map +1 -0
  105. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.d.ts +9 -0
  106. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js +56 -0
  107. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js.map +1 -0
  108. package/dist/completions/providers/LiquidDocTagCompletionProvider.d.ts +8 -0
  109. package/dist/completions/providers/LiquidDocTagCompletionProvider.js +62 -0
  110. package/dist/completions/providers/LiquidDocTagCompletionProvider.js.map +1 -0
  111. package/dist/completions/providers/LiquidTagsCompletionProvider.d.ts +9 -0
  112. package/dist/completions/providers/LiquidTagsCompletionProvider.js +367 -0
  113. package/dist/completions/providers/LiquidTagsCompletionProvider.js.map +1 -0
  114. package/dist/completions/providers/ObjectAttributeCompletionProvider.d.ts +9 -0
  115. package/dist/completions/providers/ObjectAttributeCompletionProvider.js +71 -0
  116. package/dist/completions/providers/ObjectAttributeCompletionProvider.js.map +1 -0
  117. package/dist/completions/providers/ObjectCompletionProvider.d.ts +9 -0
  118. package/dist/completions/providers/ObjectCompletionProvider.js +35 -0
  119. package/dist/completions/providers/ObjectCompletionProvider.js.map +1 -0
  120. package/dist/completions/providers/PartialCompletionProvider.d.ts +9 -0
  121. package/dist/completions/providers/PartialCompletionProvider.js +34 -0
  122. package/dist/completions/providers/PartialCompletionProvider.js.map +1 -0
  123. package/dist/completions/providers/RenderPartialParameterCompletionProvider.d.ts +10 -0
  124. package/dist/completions/providers/RenderPartialParameterCompletionProvider.js +55 -0
  125. package/dist/completions/providers/RenderPartialParameterCompletionProvider.js.map +1 -0
  126. package/dist/completions/providers/TranslationCompletionProvider.d.ts +11 -0
  127. package/dist/completions/providers/TranslationCompletionProvider.js +78 -0
  128. package/dist/completions/providers/TranslationCompletionProvider.js.map +1 -0
  129. package/dist/completions/providers/common/CompletionItemProperties.d.ts +7 -0
  130. package/dist/completions/providers/common/CompletionItemProperties.js +52 -0
  131. package/dist/completions/providers/common/CompletionItemProperties.js.map +1 -0
  132. package/dist/completions/providers/common/Provider.d.ts +5 -0
  133. package/dist/completions/providers/common/Provider.js +3 -0
  134. package/dist/completions/providers/common/Provider.js.map +1 -0
  135. package/dist/completions/providers/common/index.d.ts +7 -0
  136. package/dist/completions/providers/common/index.js +17 -0
  137. package/dist/completions/providers/common/index.js.map +1 -0
  138. package/dist/completions/providers/data/contentForParameterCompletionOptions.d.ts +7 -0
  139. package/dist/completions/providers/data/contentForParameterCompletionOptions.js +13 -0
  140. package/dist/completions/providers/data/contentForParameterCompletionOptions.js.map +1 -0
  141. package/dist/completions/providers/index.d.ts +17 -0
  142. package/dist/completions/providers/index.js +36 -0
  143. package/dist/completions/providers/index.js.map +1 -0
  144. package/dist/css/CSSLanguageService.d.ts +12 -0
  145. package/dist/css/CSSLanguageService.js +94 -0
  146. package/dist/css/CSSLanguageService.js.map +1 -0
  147. package/dist/css/test/test-helpers.d.ts +4 -0
  148. package/dist/css/test/test-helpers.js +19 -0
  149. package/dist/css/test/test-helpers.js.map +1 -0
  150. package/dist/definitions/BaseDefinitionProvider.d.ts +5 -0
  151. package/dist/definitions/BaseDefinitionProvider.js +3 -0
  152. package/dist/definitions/BaseDefinitionProvider.js.map +1 -0
  153. package/dist/definitions/DefinitionProvider.d.ts +8 -0
  154. package/dist/definitions/DefinitionProvider.js +29 -0
  155. package/dist/definitions/DefinitionProvider.js.map +1 -0
  156. package/dist/definitions/providers/SchemaTranslationStringDefinitionProvider.d.ts +10 -0
  157. package/dist/definitions/providers/SchemaTranslationStringDefinitionProvider.js +55 -0
  158. package/dist/definitions/providers/SchemaTranslationStringDefinitionProvider.js.map +1 -0
  159. package/dist/definitions/providers/TranslationStringDefinitionProvider.d.ts +10 -0
  160. package/dist/definitions/providers/TranslationStringDefinitionProvider.js +48 -0
  161. package/dist/definitions/providers/TranslationStringDefinitionProvider.js.map +1 -0
  162. package/dist/diagnostics/DiagnosticsManager.d.ts +24 -0
  163. package/dist/diagnostics/DiagnosticsManager.js +40 -0
  164. package/dist/diagnostics/DiagnosticsManager.js.map +1 -0
  165. package/dist/diagnostics/index.d.ts +2 -0
  166. package/dist/diagnostics/index.js +8 -0
  167. package/dist/diagnostics/index.js.map +1 -0
  168. package/dist/diagnostics/offenseToDiagnostic.d.ts +4 -0
  169. package/dist/diagnostics/offenseToDiagnostic.js +68 -0
  170. package/dist/diagnostics/offenseToDiagnostic.js.map +1 -0
  171. package/dist/diagnostics/runChecks.d.ts +9 -0
  172. package/dist/diagnostics/runChecks.js +103 -0
  173. package/dist/diagnostics/runChecks.js.map +1 -0
  174. package/dist/docset/HtmlDocset.d.ts +35 -0
  175. package/dist/docset/HtmlDocset.js +39 -0
  176. package/dist/docset/HtmlDocset.js.map +1 -0
  177. package/dist/docset/MarkdownRenderer.d.ts +7 -0
  178. package/dist/docset/MarkdownRenderer.js +125 -0
  179. package/dist/docset/MarkdownRenderer.js.map +1 -0
  180. package/dist/docset/index.d.ts +2 -0
  181. package/dist/docset/index.js +22 -0
  182. package/dist/docset/index.js.map +1 -0
  183. package/dist/documentHighlights/BaseDocumentHighlightsProvider.d.ts +5 -0
  184. package/dist/documentHighlights/BaseDocumentHighlightsProvider.js +3 -0
  185. package/dist/documentHighlights/BaseDocumentHighlightsProvider.js.map +1 -0
  186. package/dist/documentHighlights/DocumentHighlightsProvider.d.ts +22 -0
  187. package/dist/documentHighlights/DocumentHighlightsProvider.js +41 -0
  188. package/dist/documentHighlights/DocumentHighlightsProvider.js.map +1 -0
  189. package/dist/documentHighlights/index.d.ts +1 -0
  190. package/dist/documentHighlights/index.js +7 -0
  191. package/dist/documentHighlights/index.js.map +1 -0
  192. package/dist/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.d.ts +11 -0
  193. package/dist/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.js +20 -0
  194. package/dist/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.js.map +1 -0
  195. package/dist/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.d.ts +11 -0
  196. package/dist/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.js +48 -0
  197. package/dist/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.js.map +1 -0
  198. package/dist/documentHighlights/providers/index.d.ts +2 -0
  199. package/dist/documentHighlights/providers/index.js +8 -0
  200. package/dist/documentHighlights/providers/index.js.map +1 -0
  201. package/dist/documentLinks/DocumentLinksProvider.d.ts +12 -0
  202. package/dist/documentLinks/DocumentLinksProvider.js +78 -0
  203. package/dist/documentLinks/DocumentLinksProvider.js.map +1 -0
  204. package/dist/documentLinks/index.d.ts +1 -0
  205. package/dist/documentLinks/index.js +6 -0
  206. package/dist/documentLinks/index.js.map +1 -0
  207. package/dist/documents/DocumentManager.d.ts +60 -0
  208. package/dist/documents/DocumentManager.js +167 -0
  209. package/dist/documents/DocumentManager.js.map +1 -0
  210. package/dist/documents/index.d.ts +2 -0
  211. package/dist/documents/index.js +21 -0
  212. package/dist/documents/index.js.map +1 -0
  213. package/dist/documents/types.d.ts +39 -0
  214. package/dist/documents/types.js +11 -0
  215. package/dist/documents/types.js.map +1 -0
  216. package/dist/formatting/OnTypeFormattingProvider.d.ts +10 -0
  217. package/dist/formatting/OnTypeFormattingProvider.js +24 -0
  218. package/dist/formatting/OnTypeFormattingProvider.js.map +1 -0
  219. package/dist/formatting/index.d.ts +1 -0
  220. package/dist/formatting/index.js +6 -0
  221. package/dist/formatting/index.js.map +1 -0
  222. package/dist/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.d.ts +49 -0
  223. package/dist/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.js +105 -0
  224. package/dist/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.js.map +1 -0
  225. package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.d.ts +41 -0
  226. package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.js +105 -0
  227. package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.js.map +1 -0
  228. package/dist/formatting/types.d.ts +7 -0
  229. package/dist/formatting/types.js +3 -0
  230. package/dist/formatting/types.js.map +1 -0
  231. package/dist/hover/BaseHoverProvider.d.ts +5 -0
  232. package/dist/hover/BaseHoverProvider.js +3 -0
  233. package/dist/hover/BaseHoverProvider.js.map +1 -0
  234. package/dist/hover/HoverProvider.d.ts +20 -0
  235. package/dist/hover/HoverProvider.js +55 -0
  236. package/dist/hover/HoverProvider.js.map +1 -0
  237. package/dist/hover/index.d.ts +1 -0
  238. package/dist/hover/index.js +6 -0
  239. package/dist/hover/index.js.map +1 -0
  240. package/dist/hover/providers/ContentForArgumentHoverProvider.d.ts +8 -0
  241. package/dist/hover/providers/ContentForArgumentHoverProvider.js +37 -0
  242. package/dist/hover/providers/ContentForArgumentHoverProvider.js.map +1 -0
  243. package/dist/hover/providers/ContentForTypeHoverProvider.d.ts +8 -0
  244. package/dist/hover/providers/ContentForTypeHoverProvider.js +32 -0
  245. package/dist/hover/providers/ContentForTypeHoverProvider.js.map +1 -0
  246. package/dist/hover/providers/HtmlAttributeHoverProvider.d.ts +6 -0
  247. package/dist/hover/providers/HtmlAttributeHoverProvider.js +37 -0
  248. package/dist/hover/providers/HtmlAttributeHoverProvider.js.map +1 -0
  249. package/dist/hover/providers/HtmlAttributeValueHoverProvider.d.ts +6 -0
  250. package/dist/hover/providers/HtmlAttributeValueHoverProvider.js +42 -0
  251. package/dist/hover/providers/HtmlAttributeValueHoverProvider.js.map +1 -0
  252. package/dist/hover/providers/HtmlTagHoverProvider.d.ts +6 -0
  253. package/dist/hover/providers/HtmlTagHoverProvider.js +37 -0
  254. package/dist/hover/providers/HtmlTagHoverProvider.js.map +1 -0
  255. package/dist/hover/providers/LiquidDocTagHoverProvider.d.ts +9 -0
  256. package/dist/hover/providers/LiquidDocTagHoverProvider.js +42 -0
  257. package/dist/hover/providers/LiquidDocTagHoverProvider.js.map +1 -0
  258. package/dist/hover/providers/LiquidFilterArgumentHoverProvider.d.ts +8 -0
  259. package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js +36 -0
  260. package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js.map +1 -0
  261. package/dist/hover/providers/LiquidFilterHoverProvider.d.ts +8 -0
  262. package/dist/hover/providers/LiquidFilterHoverProvider.js +29 -0
  263. package/dist/hover/providers/LiquidFilterHoverProvider.js.map +1 -0
  264. package/dist/hover/providers/LiquidObjectAttributeHoverProvider.d.ts +9 -0
  265. package/dist/hover/providers/LiquidObjectAttributeHoverProvider.js +113 -0
  266. package/dist/hover/providers/LiquidObjectAttributeHoverProvider.js.map +1 -0
  267. package/dist/hover/providers/LiquidObjectHoverProvider.d.ts +9 -0
  268. package/dist/hover/providers/LiquidObjectHoverProvider.js +72 -0
  269. package/dist/hover/providers/LiquidObjectHoverProvider.js.map +1 -0
  270. package/dist/hover/providers/LiquidTagHoverProvider.d.ts +8 -0
  271. package/dist/hover/providers/LiquidTagHoverProvider.js +31 -0
  272. package/dist/hover/providers/LiquidTagHoverProvider.js.map +1 -0
  273. package/dist/hover/providers/RenderPartialHoverProvider.d.ts +8 -0
  274. package/dist/hover/providers/RenderPartialHoverProvider.js +28 -0
  275. package/dist/hover/providers/RenderPartialHoverProvider.js.map +1 -0
  276. package/dist/hover/providers/RenderPartialParameterHoverProvider.d.ts +8 -0
  277. package/dist/hover/providers/RenderPartialParameterHoverProvider.js +33 -0
  278. package/dist/hover/providers/RenderPartialParameterHoverProvider.js.map +1 -0
  279. package/dist/hover/providers/TranslationHoverProvider.d.ts +13 -0
  280. package/dist/hover/providers/TranslationHoverProvider.js +45 -0
  281. package/dist/hover/providers/TranslationHoverProvider.js.map +1 -0
  282. package/dist/hover/providers/index.d.ts +11 -0
  283. package/dist/hover/providers/index.js +26 -0
  284. package/dist/hover/providers/index.js.map +1 -0
  285. package/dist/index.d.ts +8 -0
  286. package/dist/index.js +33 -0
  287. package/dist/index.js.map +1 -0
  288. package/dist/internal-types.d.ts +1 -0
  289. package/dist/internal-types.js +3 -0
  290. package/dist/internal-types.js.map +1 -0
  291. package/dist/json/JSONContributions.d.ts +25 -0
  292. package/dist/json/JSONContributions.js +99 -0
  293. package/dist/json/JSONContributions.js.map +1 -0
  294. package/dist/json/JSONLanguageService.d.ts +27 -0
  295. package/dist/json/JSONLanguageService.js +171 -0
  296. package/dist/json/JSONLanguageService.js.map +1 -0
  297. package/dist/json/RequestContext.d.ts +22 -0
  298. package/dist/json/RequestContext.js +14 -0
  299. package/dist/json/RequestContext.js.map +1 -0
  300. package/dist/json/completions/JSONCompletionProvider.d.ts +30 -0
  301. package/dist/json/completions/JSONCompletionProvider.js +3 -0
  302. package/dist/json/completions/JSONCompletionProvider.js.map +1 -0
  303. package/dist/json/completions/providers/BlockSettingsPropertyCompletionProvider.d.ts +44 -0
  304. package/dist/json/completions/providers/BlockSettingsPropertyCompletionProvider.js +98 -0
  305. package/dist/json/completions/providers/BlockSettingsPropertyCompletionProvider.js.map +1 -0
  306. package/dist/json/completions/providers/BlockTypeCompletionProvider.d.ts +35 -0
  307. package/dist/json/completions/providers/BlockTypeCompletionProvider.js +97 -0
  308. package/dist/json/completions/providers/BlockTypeCompletionProvider.js.map +1 -0
  309. package/dist/json/completions/providers/ReferencedBlockTypeCompletionProvider.d.ts +34 -0
  310. package/dist/json/completions/providers/ReferencedBlockTypeCompletionProvider.js +95 -0
  311. package/dist/json/completions/providers/ReferencedBlockTypeCompletionProvider.js.map +1 -0
  312. package/dist/json/completions/providers/SchemaTranslationCompletionProvider.d.ts +9 -0
  313. package/dist/json/completions/providers/SchemaTranslationCompletionProvider.js +46 -0
  314. package/dist/json/completions/providers/SchemaTranslationCompletionProvider.js.map +1 -0
  315. package/dist/json/completions/providers/SettingsPropertyCompletionProvider.d.ts +33 -0
  316. package/dist/json/completions/providers/SettingsPropertyCompletionProvider.js +64 -0
  317. package/dist/json/completions/providers/SettingsPropertyCompletionProvider.js.map +1 -0
  318. package/dist/json/documentLinks/DocumentLinksProvider.d.ts +6 -0
  319. package/dist/json/documentLinks/DocumentLinksProvider.js +45 -0
  320. package/dist/json/documentLinks/DocumentLinksProvider.js.map +1 -0
  321. package/dist/json/hover/JSONHoverProvider.d.ts +7 -0
  322. package/dist/json/hover/JSONHoverProvider.js +3 -0
  323. package/dist/json/hover/JSONHoverProvider.js.map +1 -0
  324. package/dist/json/hover/providers/BlockSettingsHoverProvider.d.ts +12 -0
  325. package/dist/json/hover/providers/BlockSettingsHoverProvider.js +75 -0
  326. package/dist/json/hover/providers/BlockSettingsHoverProvider.js.map +1 -0
  327. package/dist/json/hover/providers/SchemaTranslationHoverProvider.d.ts +10 -0
  328. package/dist/json/hover/providers/SchemaTranslationHoverProvider.js +36 -0
  329. package/dist/json/hover/providers/SchemaTranslationHoverProvider.js.map +1 -0
  330. package/dist/json/hover/providers/SettingsHoverProvider.d.ts +10 -0
  331. package/dist/json/hover/providers/SettingsHoverProvider.js +62 -0
  332. package/dist/json/hover/providers/SettingsHoverProvider.js.map +1 -0
  333. package/dist/json/hover/providers/TranslationPathHoverProvider.d.ts +9 -0
  334. package/dist/json/hover/providers/TranslationPathHoverProvider.js +65 -0
  335. package/dist/json/hover/providers/TranslationPathHoverProvider.js.map +1 -0
  336. package/dist/json/schemaSettings.d.ts +4 -0
  337. package/dist/json/schemaSettings.js +45 -0
  338. package/dist/json/schemaSettings.js.map +1 -0
  339. package/dist/json/test/test-helpers.d.ts +8 -0
  340. package/dist/json/test/test-helpers.js +42 -0
  341. package/dist/json/test/test-helpers.js.map +1 -0
  342. package/dist/json/utils.d.ts +6 -0
  343. package/dist/json/utils.js +31 -0
  344. package/dist/json/utils.js.map +1 -0
  345. package/dist/linkedEditingRanges/BaseLinkedEditingRangesProvider.d.ts +5 -0
  346. package/dist/linkedEditingRanges/BaseLinkedEditingRangesProvider.js +3 -0
  347. package/dist/linkedEditingRanges/BaseLinkedEditingRangesProvider.js.map +1 -0
  348. package/dist/linkedEditingRanges/LinkedEditingRangesProvider.d.ts +8 -0
  349. package/dist/linkedEditingRanges/LinkedEditingRangesProvider.js +31 -0
  350. package/dist/linkedEditingRanges/LinkedEditingRangesProvider.js.map +1 -0
  351. package/dist/linkedEditingRanges/index.d.ts +1 -0
  352. package/dist/linkedEditingRanges/index.js +6 -0
  353. package/dist/linkedEditingRanges/index.js.map +1 -0
  354. package/dist/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.d.ts +9 -0
  355. package/dist/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.js +37 -0
  356. package/dist/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.js.map +1 -0
  357. package/dist/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.d.ts +12 -0
  358. package/dist/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.js +26 -0
  359. package/dist/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.js.map +1 -0
  360. package/dist/linkedEditingRanges/providers/index.d.ts +2 -0
  361. package/dist/linkedEditingRanges/providers/index.js +8 -0
  362. package/dist/linkedEditingRanges/providers/index.js.map +1 -0
  363. package/dist/linkedEditingRanges/wordPattern.d.ts +1 -0
  364. package/dist/linkedEditingRanges/wordPattern.js +7 -0
  365. package/dist/linkedEditingRanges/wordPattern.js.map +1 -0
  366. package/dist/plugins/css.d.ts +3 -0
  367. package/dist/plugins/css.js +12 -0
  368. package/dist/plugins/css.js.map +1 -0
  369. package/dist/progress.d.ts +42 -0
  370. package/dist/progress.js +74 -0
  371. package/dist/progress.js.map +1 -0
  372. package/dist/rename/BaseRenameProvider.d.ts +6 -0
  373. package/dist/rename/BaseRenameProvider.js +3 -0
  374. package/dist/rename/BaseRenameProvider.js.map +1 -0
  375. package/dist/rename/RenameProvider.d.ts +21 -0
  376. package/dist/rename/RenameProvider.js +58 -0
  377. package/dist/rename/RenameProvider.js.map +1 -0
  378. package/dist/rename/providers/HtmlTagNameRenameProvider.d.ts +10 -0
  379. package/dist/rename/providers/HtmlTagNameRenameProvider.js +39 -0
  380. package/dist/rename/providers/HtmlTagNameRenameProvider.js.map +1 -0
  381. package/dist/rename/providers/LiquidVariableRenameProvider.d.ts +16 -0
  382. package/dist/rename/providers/LiquidVariableRenameProvider.js +194 -0
  383. package/dist/rename/providers/LiquidVariableRenameProvider.js.map +1 -0
  384. package/dist/renamed/BaseRenameHandler.d.ts +4 -0
  385. package/dist/renamed/BaseRenameHandler.js +3 -0
  386. package/dist/renamed/BaseRenameHandler.js.map +1 -0
  387. package/dist/renamed/RenameHandler.d.ts +18 -0
  388. package/dist/renamed/RenameHandler.js +37 -0
  389. package/dist/renamed/RenameHandler.js.map +1 -0
  390. package/dist/renamed/handlers/AssetRenameHandler.d.ts +26 -0
  391. package/dist/renamed/handlers/AssetRenameHandler.js +99 -0
  392. package/dist/renamed/handlers/AssetRenameHandler.js.map +1 -0
  393. package/dist/renamed/handlers/BlockRenameHandler.d.ts +41 -0
  394. package/dist/renamed/handlers/BlockRenameHandler.js +304 -0
  395. package/dist/renamed/handlers/BlockRenameHandler.js.map +1 -0
  396. package/dist/renamed/handlers/PartialRenameHandler.d.ts +26 -0
  397. package/dist/renamed/handlers/PartialRenameHandler.js +99 -0
  398. package/dist/renamed/handlers/PartialRenameHandler.js.map +1 -0
  399. package/dist/renamed/handlers/SectionRenameHandler.d.ts +25 -0
  400. package/dist/renamed/handlers/SectionRenameHandler.js +176 -0
  401. package/dist/renamed/handlers/SectionRenameHandler.js.map +1 -0
  402. package/dist/renamed/handlers/utils.d.ts +3 -0
  403. package/dist/renamed/handlers/utils.js +20 -0
  404. package/dist/renamed/handlers/utils.js.map +1 -0
  405. package/dist/server/CachedFileSystem.d.ts +12 -0
  406. package/dist/server/CachedFileSystem.js +29 -0
  407. package/dist/server/CachedFileSystem.js.map +1 -0
  408. package/dist/server/Configuration.d.ts +25 -0
  409. package/dist/server/Configuration.js +77 -0
  410. package/dist/server/Configuration.js.map +1 -0
  411. package/dist/server/ThemeGraphManager.d.ts +35 -0
  412. package/dist/server/ThemeGraphManager.js +200 -0
  413. package/dist/server/ThemeGraphManager.js.map +1 -0
  414. package/dist/server/index.d.ts +1 -0
  415. package/dist/server/index.js +6 -0
  416. package/dist/server/index.js.map +1 -0
  417. package/dist/server/safe.d.ts +19 -0
  418. package/dist/server/safe.js +33 -0
  419. package/dist/server/safe.js.map +1 -0
  420. package/dist/server/startServer.d.ts +13 -0
  421. package/dist/server/startServer.js +598 -0
  422. package/dist/server/startServer.js.map +1 -0
  423. package/dist/settings/index.d.ts +29 -0
  424. package/dist/settings/index.js +11 -0
  425. package/dist/settings/index.js.map +1 -0
  426. package/dist/test/ApplyEditsAssertion.d.ts +14 -0
  427. package/dist/test/ApplyEditsAssertion.js +19 -0
  428. package/dist/test/ApplyEditsAssertion.js.map +1 -0
  429. package/dist/test/CompletionItemsAssertion.d.ts +25 -0
  430. package/dist/test/CompletionItemsAssertion.js +60 -0
  431. package/dist/test/CompletionItemsAssertion.js.map +1 -0
  432. package/dist/test/HoverAssertion.d.ts +16 -0
  433. package/dist/test/HoverAssertion.js +54 -0
  434. package/dist/test/HoverAssertion.js.map +1 -0
  435. package/dist/test/MockChecks.d.ts +2 -0
  436. package/dist/test/MockChecks.js +30 -0
  437. package/dist/test/MockChecks.js.map +1 -0
  438. package/dist/test/MockConnection.d.ts +44 -0
  439. package/dist/test/MockConnection.js +106 -0
  440. package/dist/test/MockConnection.js.map +1 -0
  441. package/dist/test/test-setup.d.ts +1 -0
  442. package/dist/test/test-setup.js +8 -0
  443. package/dist/test/test-setup.js.map +1 -0
  444. package/dist/translations.d.ts +19 -0
  445. package/dist/translations.js +73 -0
  446. package/dist/translations.js.map +1 -0
  447. package/dist/tsconfig.tsbuildinfo +1 -0
  448. package/dist/types.d.ts +149 -0
  449. package/dist/types.js +63 -0
  450. package/dist/types.js.map +1 -0
  451. package/dist/utils/array.d.ts +1 -0
  452. package/dist/utils/array.js +11 -0
  453. package/dist/utils/array.js.map +1 -0
  454. package/dist/utils/debounce.d.ts +37 -0
  455. package/dist/utils/debounce.js +44 -0
  456. package/dist/utils/debounce.js.map +1 -0
  457. package/dist/utils/htmlTagNames.d.ts +5 -0
  458. package/dist/utils/htmlTagNames.js +42 -0
  459. package/dist/utils/htmlTagNames.js.map +1 -0
  460. package/dist/utils/index.d.ts +5 -0
  461. package/dist/utils/index.js +26 -0
  462. package/dist/utils/index.js.map +1 -0
  463. package/dist/utils/isCovered.d.ts +4 -0
  464. package/dist/utils/isCovered.js +7 -0
  465. package/dist/utils/isCovered.js.map +1 -0
  466. package/dist/utils/liquidDoc.d.ts +22 -0
  467. package/dist/utils/liquidDoc.js +78 -0
  468. package/dist/utils/liquidDoc.js.map +1 -0
  469. package/dist/utils/node.d.ts +24 -0
  470. package/dist/utils/node.js +52 -0
  471. package/dist/utils/node.js.map +1 -0
  472. package/dist/utils/uri.d.ts +12 -0
  473. package/dist/utils/uri.js +30 -0
  474. package/dist/utils/uri.js.map +1 -0
  475. package/dist/version.d.ts +1 -0
  476. package/dist/version.js +9 -0
  477. package/dist/version.js.map +1 -0
  478. package/package.json +40 -0
  479. package/src/ClientCapabilities.ts +63 -0
  480. package/src/PropertyShapeInference.ts +394 -0
  481. package/src/TypeSystem.spec.ts +1150 -0
  482. package/src/TypeSystem.ts +1948 -0
  483. package/src/VariableShapeExtractor.ts +380 -0
  484. package/src/codeActions/BaseCodeActionsProvider.ts +18 -0
  485. package/src/codeActions/CodeActionsProvider.ts +28 -0
  486. package/src/codeActions/index.ts +1 -0
  487. package/src/codeActions/providers/FixAllProvider.spec.ts +115 -0
  488. package/src/codeActions/providers/FixAllProvider.ts +60 -0
  489. package/src/codeActions/providers/FixProvider.spec.ts +330 -0
  490. package/src/codeActions/providers/FixProvider.ts +105 -0
  491. package/src/codeActions/providers/SuggestionProvider.spec.ts +143 -0
  492. package/src/codeActions/providers/SuggestionProvider.ts +75 -0
  493. package/src/codeActions/providers/index.ts +3 -0
  494. package/src/codeActions/providers/utils.ts +47 -0
  495. package/src/commands/BaseExecuteCommandProvider.ts +15 -0
  496. package/src/commands/ExecuteCommandProvider.ts +59 -0
  497. package/src/commands/index.ts +2 -0
  498. package/src/commands/providers/ApplyFixesProvider.spec.ts +133 -0
  499. package/src/commands/providers/ApplyFixesProvider.ts +86 -0
  500. package/src/commands/providers/ApplySuggestionProvider.spec.ts +135 -0
  501. package/src/commands/providers/ApplySuggestionProvider.ts +105 -0
  502. package/src/commands/providers/RunChecksProvider.spec.ts +55 -0
  503. package/src/commands/providers/RunChecksProvider.ts +36 -0
  504. package/src/commands/providers/index.ts +3 -0
  505. package/src/completions/CompletionsProvider.ts +128 -0
  506. package/src/completions/index.ts +1 -0
  507. package/src/completions/params/LiquidCompletionParams.spec.ts +319 -0
  508. package/src/completions/params/LiquidCompletionParams.ts +538 -0
  509. package/src/completions/params/fix.spec.ts +159 -0
  510. package/src/completions/params/fix.ts +269 -0
  511. package/src/completions/params/index.ts +2 -0
  512. package/src/completions/params/testcases.txt +104 -0
  513. package/src/completions/providers/ContentForBlockTypeCompletionProvider.spec.ts +41 -0
  514. package/src/completions/providers/ContentForBlockTypeCompletionProvider.ts +42 -0
  515. package/src/completions/providers/ContentForCompletionProvider.spec.ts +96 -0
  516. package/src/completions/providers/ContentForCompletionProvider.ts +113 -0
  517. package/src/completions/providers/ContentForParameterCompletionProvider.spec.ts +362 -0
  518. package/src/completions/providers/ContentForParameterCompletionProvider.ts +187 -0
  519. package/src/completions/providers/FilterCompletionProvider.spec.ts +377 -0
  520. package/src/completions/providers/FilterCompletionProvider.ts +225 -0
  521. package/src/completions/providers/FilterNamedParameterCompletionProvider.spec.ts +239 -0
  522. package/src/completions/providers/FilterNamedParameterCompletionProvider.ts +121 -0
  523. package/src/completions/providers/HtmlAttributeCompletionProvider.spec.ts +150 -0
  524. package/src/completions/providers/HtmlAttributeCompletionProvider.ts +117 -0
  525. package/src/completions/providers/HtmlAttributeValueCompletionProvider.spec.ts +38 -0
  526. package/src/completions/providers/HtmlAttributeValueCompletionProvider.ts +65 -0
  527. package/src/completions/providers/HtmlTagCompletionProvider.spec.ts +57 -0
  528. package/src/completions/providers/HtmlTagCompletionProvider.ts +119 -0
  529. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.spec.ts +79 -0
  530. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.ts +65 -0
  531. package/src/completions/providers/LiquidDocTagCompletionProvider.spec.ts +144 -0
  532. package/src/completions/providers/LiquidDocTagCompletionProvider.ts +74 -0
  533. package/src/completions/providers/LiquidTagsCompletionProvider.spec.ts +377 -0
  534. package/src/completions/providers/LiquidTagsCompletionProvider.ts +459 -0
  535. package/src/completions/providers/ObjectAttributeCompletionProvider.spec.ts +524 -0
  536. package/src/completions/providers/ObjectAttributeCompletionProvider.ts +95 -0
  537. package/src/completions/providers/ObjectCompletionProvider.spec.ts +232 -0
  538. package/src/completions/providers/ObjectCompletionProvider.ts +44 -0
  539. package/src/completions/providers/PartialCompletionProvider.spec.ts +107 -0
  540. package/src/completions/providers/PartialCompletionProvider.ts +50 -0
  541. package/src/completions/providers/RenderPartialParameterCompletionProvider.spec.ts +91 -0
  542. package/src/completions/providers/RenderPartialParameterCompletionProvider.ts +79 -0
  543. package/src/completions/providers/TranslationCompletionProvider.spec.ts +65 -0
  544. package/src/completions/providers/TranslationCompletionProvider.ts +103 -0
  545. package/src/completions/providers/common/CompletionItemProperties.ts +66 -0
  546. package/src/completions/providers/common/Provider.ts +6 -0
  547. package/src/completions/providers/common/index.ts +18 -0
  548. package/src/completions/providers/data/contentForParameterCompletionOptions.ts +9 -0
  549. package/src/completions/providers/index.ts +20 -0
  550. package/src/css/CSSLanguageService.spec.ts +161 -0
  551. package/src/css/CSSLanguageService.ts +113 -0
  552. package/src/css/test/test-helpers.ts +30 -0
  553. package/src/definitions/BaseDefinitionProvider.ts +10 -0
  554. package/src/definitions/DefinitionProvider.ts +48 -0
  555. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.spec.ts +96 -0
  556. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.ts +82 -0
  557. package/src/definitions/providers/TranslationStringDefinitionProvider.spec.ts +77 -0
  558. package/src/definitions/providers/TranslationStringDefinitionProvider.ts +72 -0
  559. package/src/diagnostics/DiagnosticsManager.spec.ts +79 -0
  560. package/src/diagnostics/DiagnosticsManager.ts +58 -0
  561. package/src/diagnostics/index.ts +2 -0
  562. package/src/diagnostics/offenseToDiagnostic.ts +80 -0
  563. package/src/diagnostics/runChecks.spec.ts +285 -0
  564. package/src/diagnostics/runChecks.ts +147 -0
  565. package/src/docset/HtmlDocset.ts +43 -0
  566. package/src/docset/MarkdownRenderer.spec.ts +46 -0
  567. package/src/docset/MarkdownRenderer.ts +179 -0
  568. package/src/docset/index.ts +2 -0
  569. package/src/documentHighlights/BaseDocumentHighlightsProvider.ts +10 -0
  570. package/src/documentHighlights/DocumentHighlightsProvider.ts +54 -0
  571. package/src/documentHighlights/index.ts +1 -0
  572. package/src/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.spec.ts +94 -0
  573. package/src/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.ts +22 -0
  574. package/src/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.spec.ts +188 -0
  575. package/src/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.ts +73 -0
  576. package/src/documentHighlights/providers/index.ts +2 -0
  577. package/src/documentLinks/DocumentLinksProvider.spec.ts +66 -0
  578. package/src/documentLinks/DocumentLinksProvider.ts +123 -0
  579. package/src/documentLinks/index.ts +1 -0
  580. package/src/documents/DocumentManager.spec.ts +276 -0
  581. package/src/documents/DocumentManager.ts +232 -0
  582. package/src/documents/index.ts +2 -0
  583. package/src/documents/types.ts +55 -0
  584. package/src/formatting/OnTypeFormattingProvider.spec.ts +74 -0
  585. package/src/formatting/OnTypeFormattingProvider.ts +26 -0
  586. package/src/formatting/index.ts +1 -0
  587. package/src/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.spec.ts +88 -0
  588. package/src/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.ts +114 -0
  589. package/src/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.spec.ts +183 -0
  590. package/src/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.ts +127 -0
  591. package/src/formatting/types.ts +12 -0
  592. package/src/hover/BaseHoverProvider.ts +10 -0
  593. package/src/hover/HoverProvider.ts +86 -0
  594. package/src/hover/index.ts +1 -0
  595. package/src/hover/providers/ContentForArgumentHoverProvider.spec.ts +76 -0
  596. package/src/hover/providers/ContentForArgumentHoverProvider.ts +56 -0
  597. package/src/hover/providers/ContentForTypeHoverProvider.spec.ts +91 -0
  598. package/src/hover/providers/ContentForTypeHoverProvider.ts +42 -0
  599. package/src/hover/providers/HtmlAttributeHoverProvider.spec.ts +50 -0
  600. package/src/hover/providers/HtmlAttributeHoverProvider.ts +48 -0
  601. package/src/hover/providers/HtmlAttributeValueHoverProvider.spec.ts +38 -0
  602. package/src/hover/providers/HtmlAttributeValueHoverProvider.ts +52 -0
  603. package/src/hover/providers/HtmlTagHoverProvider.spec.ts +39 -0
  604. package/src/hover/providers/HtmlTagHoverProvider.ts +42 -0
  605. package/src/hover/providers/LiquidDocTagHoverProvider.spec.ts +64 -0
  606. package/src/hover/providers/LiquidDocTagHoverProvider.ts +58 -0
  607. package/src/hover/providers/LiquidFilterArgumentHoverProvider.spec.ts +57 -0
  608. package/src/hover/providers/LiquidFilterArgumentHoverProvider.ts +42 -0
  609. package/src/hover/providers/LiquidFilterHoverProvider.spec.ts +50 -0
  610. package/src/hover/providers/LiquidFilterHoverProvider.ts +29 -0
  611. package/src/hover/providers/LiquidObjectAttributeHoverProvider.spec.ts +238 -0
  612. package/src/hover/providers/LiquidObjectAttributeHoverProvider.ts +156 -0
  613. package/src/hover/providers/LiquidObjectHoverProvider.spec.ts +278 -0
  614. package/src/hover/providers/LiquidObjectHoverProvider.ts +95 -0
  615. package/src/hover/providers/LiquidTagHoverProvider.spec.ts +51 -0
  616. package/src/hover/providers/LiquidTagHoverProvider.ts +33 -0
  617. package/src/hover/providers/RenderPartialHoverProvider.spec.ts +85 -0
  618. package/src/hover/providers/RenderPartialHoverProvider.ts +38 -0
  619. package/src/hover/providers/RenderPartialParameterHoverProvider.spec.ts +70 -0
  620. package/src/hover/providers/RenderPartialParameterHoverProvider.ts +47 -0
  621. package/src/hover/providers/TranslationHoverProvider.spec.ts +59 -0
  622. package/src/hover/providers/TranslationHoverProvider.ts +61 -0
  623. package/src/hover/providers/index.ts +11 -0
  624. package/src/index.spec.ts +8 -0
  625. package/src/index.ts +34 -0
  626. package/src/internal-types.ts +1 -0
  627. package/src/json/JSONContributions.ts +150 -0
  628. package/src/json/JSONLanguageService.spec.ts +424 -0
  629. package/src/json/JSONLanguageService.ts +239 -0
  630. package/src/json/RequestContext.ts +35 -0
  631. package/src/json/completions/JSONCompletionProvider.ts +33 -0
  632. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.spec.ts +163 -0
  633. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.ts +121 -0
  634. package/src/json/completions/providers/BlockTypeCompletionProvider.spec.ts +137 -0
  635. package/src/json/completions/providers/BlockTypeCompletionProvider.ts +108 -0
  636. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.spec.ts +132 -0
  637. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.ts +120 -0
  638. package/src/json/completions/providers/SchemaTranslationCompletionProvider.ts +51 -0
  639. package/src/json/completions/providers/SettingsPropertyCompletionProvider.spec.ts +211 -0
  640. package/src/json/completions/providers/SettingsPropertyCompletionProvider.ts +75 -0
  641. package/src/json/documentLinks/DocumentLinksProvider.spec.ts +223 -0
  642. package/src/json/documentLinks/DocumentLinksProvider.ts +61 -0
  643. package/src/json/hover/JSONHoverProvider.ts +8 -0
  644. package/src/json/hover/providers/BlockSettingsHoverProvider.spec.ts +292 -0
  645. package/src/json/hover/providers/BlockSettingsHoverProvider.ts +99 -0
  646. package/src/json/hover/providers/SchemaTranslationHoverProvider.ts +35 -0
  647. package/src/json/hover/providers/SettingsHoverProvider.spec.ts +139 -0
  648. package/src/json/hover/providers/SettingsHoverProvider.ts +79 -0
  649. package/src/json/hover/providers/TranslationPathHoverProvider.ts +71 -0
  650. package/src/json/schemaSettings.spec.ts +103 -0
  651. package/src/json/schemaSettings.ts +53 -0
  652. package/src/json/test/test-helpers.ts +68 -0
  653. package/src/json/utils.ts +30 -0
  654. package/src/linkedEditingRanges/BaseLinkedEditingRangesProvider.ts +10 -0
  655. package/src/linkedEditingRanges/LinkedEditingRangesProvider.ts +40 -0
  656. package/src/linkedEditingRanges/index.ts +1 -0
  657. package/src/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.spec.ts +74 -0
  658. package/src/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.ts +47 -0
  659. package/src/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.spec.ts +102 -0
  660. package/src/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.ts +28 -0
  661. package/src/linkedEditingRanges/providers/index.ts +2 -0
  662. package/src/linkedEditingRanges/wordPattern.ts +3 -0
  663. package/src/plugins/css.ts +12 -0
  664. package/src/progress.ts +83 -0
  665. package/src/rename/BaseRenameProvider.ts +21 -0
  666. package/src/rename/RenameProvider.ts +91 -0
  667. package/src/rename/providers/HtmlTagNameRenameProvider.spec.ts +84 -0
  668. package/src/rename/providers/HtmlTagNameRenameProvider.ts +59 -0
  669. package/src/rename/providers/LiquidVariableRenameProvider.spec.ts +511 -0
  670. package/src/rename/providers/LiquidVariableRenameProvider.ts +300 -0
  671. package/src/renamed/BaseRenameHandler.ts +5 -0
  672. package/src/renamed/RenameHandler.ts +45 -0
  673. package/src/renamed/handlers/AssetRenameHandler.spec.ts +217 -0
  674. package/src/renamed/handlers/AssetRenameHandler.ts +108 -0
  675. package/src/renamed/handlers/BlockRenameHandler.spec.ts +399 -0
  676. package/src/renamed/handlers/BlockRenameHandler.ts +402 -0
  677. package/src/renamed/handlers/PartialRenameHandler.spec.ts +153 -0
  678. package/src/renamed/handlers/PartialRenameHandler.ts +110 -0
  679. package/src/renamed/handlers/SectionRenameHandler.spec.ts +321 -0
  680. package/src/renamed/handlers/SectionRenameHandler.ts +224 -0
  681. package/src/renamed/handlers/utils.ts +22 -0
  682. package/src/server/CachedFileSystem.ts +39 -0
  683. package/src/server/Configuration.ts +89 -0
  684. package/src/server/ThemeGraphManager.ts +265 -0
  685. package/src/server/index.ts +1 -0
  686. package/src/server/safe.ts +30 -0
  687. package/src/server/startServer.spec.ts +423 -0
  688. package/src/server/startServer.ts +771 -0
  689. package/src/settings/index.ts +50 -0
  690. package/src/test/ApplyEditsAssertion.spec.ts +57 -0
  691. package/src/test/ApplyEditsAssertion.ts +34 -0
  692. package/src/test/CompletionItemsAssertion.spec.ts +48 -0
  693. package/src/test/CompletionItemsAssertion.ts +99 -0
  694. package/src/test/HoverAssertion.ts +84 -0
  695. package/src/test/MockChecks.ts +32 -0
  696. package/src/test/MockConnection.ts +158 -0
  697. package/src/test/test-setup.ts +6 -0
  698. package/src/translations.ts +83 -0
  699. package/src/types.ts +173 -0
  700. package/src/utils/array.ts +6 -0
  701. package/src/utils/debounce.ts +60 -0
  702. package/src/utils/htmlTagNames.ts +61 -0
  703. package/src/utils/index.ts +12 -0
  704. package/src/utils/isCovered.ts +3 -0
  705. package/src/utils/liquidDoc.spec.ts +167 -0
  706. package/src/utils/liquidDoc.ts +102 -0
  707. package/src/utils/node.ts +69 -0
  708. package/src/utils/uri.ts +22 -0
  709. package/src/version.ts +3 -0
  710. package/tsconfig.build.json +10 -0
  711. package/tsconfig.json +24 -0
@@ -0,0 +1,771 @@
1
+ import {
2
+ AugmentedThemeDocset,
3
+ DocDefinition,
4
+ findRoot as findConfigFileRoot,
5
+ isError,
6
+ makeFileExists,
7
+ makeGetDefaultLocaleFileUri,
8
+ makeGetDefaultSchemaLocaleFileUri,
9
+ makeGetDefaultSchemaTranslations,
10
+ makeGetDefaultTranslations,
11
+ makeGetMetafieldDefinitions,
12
+ memoize,
13
+ MetafieldDefinitionMap,
14
+ parseJSON,
15
+ path,
16
+ SourceCodeType,
17
+ UriString,
18
+ } from '@platformos/platformos-check-common';
19
+ import { TranslationProvider } from '@platformos/platformos-common';
20
+ import {
21
+ Connection,
22
+ FileChangeType,
23
+ FileOperationRegistrationOptions,
24
+ InitializeResult,
25
+ ShowDocumentRequest,
26
+ TextDocumentSyncKind,
27
+ WorkspaceFolder,
28
+ } from 'vscode-languageserver';
29
+ import { ClientCapabilities } from '../ClientCapabilities';
30
+ import { CodeActionKinds, CodeActionsProvider } from '../codeActions';
31
+ import { Commands, ExecuteCommandProvider } from '../commands';
32
+ import { CompletionsProvider } from '../completions';
33
+ import { GetPartialNamesForURI } from '../completions/providers/PartialCompletionProvider';
34
+ import { CSSLanguageService } from '../css/CSSLanguageService';
35
+ import { DefinitionProvider } from '../definitions/DefinitionProvider';
36
+ import { DiagnosticsManager, makeRunChecks } from '../diagnostics';
37
+ import { DocumentHighlightsProvider } from '../documentHighlights/DocumentHighlightsProvider';
38
+ import { DocumentLinksProvider } from '../documentLinks';
39
+ import { AugmentedJsonSourceCode, DocumentManager } from '../documents';
40
+ import { OnTypeFormattingProvider } from '../formatting';
41
+ import { HoverProvider } from '../hover';
42
+ import { JSONLanguageService } from '../json/JSONLanguageService';
43
+ import { LinkedEditingRangesProvider } from '../linkedEditingRanges/LinkedEditingRangesProvider';
44
+ import { RenameProvider } from '../rename/RenameProvider';
45
+ import { RenameHandler } from '../renamed/RenameHandler';
46
+ import { GetTranslationsForURI } from '../translations';
47
+ import {
48
+ Dependencies,
49
+ ThemeGraphDeadCodeRequest,
50
+ ThemeGraphDependenciesRequest,
51
+ ThemeGraphReferenceRequest,
52
+ ThemeGraphRootRequest,
53
+ } from '../types';
54
+ import { debounce } from '../utils';
55
+ import { VERSION } from '../version';
56
+ import { CachedFileSystem } from './CachedFileSystem';
57
+ import { Configuration } from './Configuration';
58
+ import { safe } from './safe';
59
+ import { ThemeGraphManager } from './ThemeGraphManager';
60
+ import { DocumentsLocator } from '@platformos/platformos-common';
61
+ import { relative } from '@platformos/platformos-check-common/src/path';
62
+ import { URI } from 'vscode-uri';
63
+
64
+ const defaultLogger = () => {};
65
+
66
+ /**
67
+ * The `git:` VFS does not support the `fs.readDirectory` call and makes most things break.
68
+ * `git` URIs are the ones you'd encounter when doing a git diff in VS Code. They're not
69
+ * real files, they're just a way to represent changes in a git repository. As such, I don't
70
+ * think we want to sync those in our document manager or try to offer document links, etc.
71
+ *
72
+ * A middleware would be nice but it'd be a bit of a pain to implement.
73
+ */
74
+ const hasUnsupportedDocument = (params: any) => {
75
+ return (
76
+ 'textDocument' in params &&
77
+ 'uri' in params.textDocument &&
78
+ typeof params.textDocument.uri === 'string' &&
79
+ (params.textDocument.uri.startsWith('git:') || params.textDocument.uri.startsWith('output:'))
80
+ );
81
+ };
82
+
83
+ /**
84
+ * This code runs in node and the browser, it can't talk to the file system
85
+ * or make requests. Stuff like that should be injected.
86
+ *
87
+ * In browser, theme-check-js wants these things:
88
+ * - fileExists(path)
89
+ * - defaultTranslations
90
+ *
91
+ * Which means we gotta provide 'em from here too!
92
+ */
93
+ export function startServer(
94
+ connection: Connection,
95
+ {
96
+ fs: injectedFs,
97
+ loadConfig: injectedLoadConfig,
98
+ log = defaultLogger,
99
+ jsonValidationSet,
100
+ themeDocset: remoteThemeDocset,
101
+ fetchMetafieldDefinitionsForURI,
102
+ }: Dependencies,
103
+ ) {
104
+ const fs = new CachedFileSystem(injectedFs);
105
+ const fileExists = makeFileExists(fs);
106
+ const loadConfig = memoize(injectedLoadConfig, (uri: string) => uri);
107
+ const clientCapabilities = new ClientCapabilities();
108
+ const configuration = new Configuration(connection, clientCapabilities);
109
+
110
+ const documentManager: DocumentManager = new DocumentManager(
111
+ fs,
112
+ connection,
113
+ clientCapabilities,
114
+ getModeForURI,
115
+ isValidSchema,
116
+ );
117
+ const themeGraphManager = new ThemeGraphManager(
118
+ connection,
119
+ documentManager,
120
+ fs,
121
+ findThemeRootURI,
122
+ );
123
+ const diagnosticsManager = new DiagnosticsManager(connection);
124
+ const documentsLocator = new DocumentsLocator(fs);
125
+ const translationProvider = new TranslationProvider(fs);
126
+ const documentLinksProvider = new DocumentLinksProvider(
127
+ documentManager,
128
+ findThemeRootURI,
129
+ documentsLocator,
130
+ translationProvider,
131
+ );
132
+ const codeActionsProvider = new CodeActionsProvider(documentManager, diagnosticsManager);
133
+ const onTypeFormattingProvider = new OnTypeFormattingProvider(
134
+ documentManager,
135
+ async function setCursorPosition(textDocument, position) {
136
+ if (!clientCapabilities.hasShowDocumentSupport) return;
137
+ connection.sendRequest(ShowDocumentRequest.type, {
138
+ uri: textDocument.uri,
139
+ takeFocus: true,
140
+ selection: {
141
+ start: position,
142
+ end: position,
143
+ },
144
+ });
145
+ },
146
+ );
147
+ const linkedEditingRangesProvider = new LinkedEditingRangesProvider(documentManager);
148
+ const documentHighlightProvider = new DocumentHighlightsProvider(documentManager);
149
+ const renameProvider = new RenameProvider(
150
+ connection,
151
+ clientCapabilities,
152
+ documentManager,
153
+ findThemeRootURI,
154
+ );
155
+ const renameHandler = new RenameHandler(
156
+ connection,
157
+ clientCapabilities,
158
+ documentManager,
159
+ findThemeRootURI,
160
+ );
161
+
162
+ async function findThemeRootURI(uri: string): Promise<string | null> {
163
+ const rootUri = await findConfigFileRoot(uri, fileExists);
164
+ if (!rootUri) return null;
165
+ const config = await loadConfig(rootUri, fs);
166
+ return config.rootUri;
167
+ }
168
+
169
+ const getMetafieldDefinitionsForRootUri = memoize(
170
+ makeGetMetafieldDefinitions(fs),
171
+ (rootUri) => rootUri,
172
+ );
173
+
174
+ const getMetafieldDefinitions: NonNullable<Dependencies['getMetafieldDefinitions']> = async (
175
+ uri: string,
176
+ ) => {
177
+ const rootUri = await findThemeRootURI(uri);
178
+ if (!rootUri) {
179
+ return {} as MetafieldDefinitionMap;
180
+ }
181
+
182
+ return getMetafieldDefinitionsForRootUri(rootUri);
183
+ };
184
+
185
+ // These are augmented here so that the caching is maintained over different runs.
186
+ const themeDocset = new AugmentedThemeDocset(remoteThemeDocset);
187
+ const cssLanguageService = new CSSLanguageService(documentManager);
188
+ const runChecks = debounce(
189
+ makeRunChecks(documentManager, diagnosticsManager, {
190
+ fs,
191
+ loadConfig,
192
+ themeDocset,
193
+ jsonValidationSet,
194
+ getMetafieldDefinitions,
195
+ cssLanguageService,
196
+ themeGraphManager,
197
+ }),
198
+ 100,
199
+ );
200
+
201
+ const getTranslationsForURI: GetTranslationsForURI = async (uri) => {
202
+ const rootURI = await findThemeRootURI(uri);
203
+ if (!rootURI) return {};
204
+
205
+ const theme = documentManager.theme(rootURI);
206
+ const getDefaultTranslations = makeGetDefaultTranslations(fs, theme, rootURI);
207
+ const [defaultTranslations, shopifyTranslations] = await Promise.all([
208
+ getDefaultTranslations(),
209
+ themeDocset.systemTranslations(),
210
+ ]);
211
+
212
+ return { ...shopifyTranslations, ...defaultTranslations };
213
+ };
214
+
215
+ const getSchemaTranslationsForURI: GetTranslationsForURI = async (uri) => {
216
+ const rootURI = await findThemeRootURI(uri);
217
+ if (!rootURI) return {};
218
+
219
+ const theme = documentManager.theme(rootURI);
220
+ const getDefaultSchemaTranslations = makeGetDefaultSchemaTranslations(fs, theme, rootURI);
221
+ return getDefaultSchemaTranslations();
222
+ };
223
+
224
+ const getDocDefinitionForURI = async (
225
+ uri: UriString,
226
+ category: 'app/views/partials' | 'blocks',
227
+ name: string,
228
+ ): Promise<DocDefinition | undefined> => {
229
+ const rootUri = await findThemeRootURI(uri);
230
+ if (!rootUri) return undefined;
231
+
232
+ const fileUri = path.join(rootUri, category, `${name}.liquid`);
233
+ const file = documentManager.get(fileUri);
234
+
235
+ if (!file || file.type !== SourceCodeType.LiquidHtml || isError(file.ast)) {
236
+ return undefined;
237
+ }
238
+
239
+ return file.getLiquidDoc();
240
+ };
241
+
242
+ const getPartialNamesForURI: GetPartialNamesForURI = safe(
243
+ async (uri: string, partial: string, type: string | undefined) => {
244
+ const rootUri = await findThemeRootURI(uri);
245
+ if (!rootUri) return [];
246
+
247
+ return await documentsLocator.list(URI.parse(rootUri), type, partial);
248
+ },
249
+ [],
250
+ );
251
+
252
+ const getThemeSettingsSchemaForURI = safe(async (uri: string) => {
253
+ const rootUri = await findThemeRootURI(uri);
254
+ if (!rootUri) return [];
255
+
256
+ const settingsSchemaUri = path.join(rootUri, 'config', 'settings_schema.json');
257
+ const contents = await fs.readFile(settingsSchemaUri);
258
+ const json = parseJSON(contents);
259
+ if (isError(json) || !Array.isArray(json)) {
260
+ throw new Error('Settings JSON file not in correct format');
261
+ }
262
+ return json;
263
+ }, []);
264
+
265
+ async function getModeForURI(uri: string) {
266
+ const rootUri = await findConfigFileRoot(uri, fileExists);
267
+ if (!rootUri) return 'theme';
268
+ const config = await loadConfig(rootUri, fs);
269
+ return config.context;
270
+ }
271
+
272
+ const getThemeBlockNames = safe(async (uri: string, includePrivate: boolean) => {
273
+ const rootUri = await findThemeRootURI(uri);
274
+ if (!rootUri) return [];
275
+
276
+ const blocks = await fs.readDirectory(path.join(rootUri, 'blocks'));
277
+ const blockNames = blocks.map(([uri]) => path.basename(uri, '.liquid'));
278
+
279
+ if (includePrivate) {
280
+ return blockNames;
281
+ }
282
+
283
+ return blockNames.filter((blockName) => !blockName.startsWith('_'));
284
+ }, []);
285
+
286
+ async function getThemeBlockSchema(uri: string, name: string) {
287
+ const rootUri = await findThemeRootURI(uri);
288
+ if (!rootUri) return;
289
+
290
+ const blockUri = path.join(rootUri, 'blocks', `${name}.liquid`);
291
+ const doc = documentManager.get(blockUri);
292
+ if (!doc || doc.type !== SourceCodeType.LiquidHtml) {
293
+ return;
294
+ }
295
+ return doc.getSchema();
296
+ }
297
+
298
+ // Defined as a function to solve a circular dependency (doc manager & json
299
+ // lang service both need each other)
300
+ async function isValidSchema(uri: string, jsonString: string) {
301
+ return jsonLanguageService.isValidSchema(uri, jsonString);
302
+ }
303
+
304
+ const getDefaultLocaleFileUri = makeGetDefaultLocaleFileUri(fs);
305
+ async function getDefaultLocaleSourceCode(uri: string) {
306
+ const rootUri = await findThemeRootURI(uri);
307
+ if (!rootUri) return null;
308
+
309
+ const defaultLocaleFileUri = await getDefaultLocaleFileUri(rootUri);
310
+ if (!defaultLocaleFileUri) return null;
311
+
312
+ return (documentManager.get(defaultLocaleFileUri) as AugmentedJsonSourceCode) ?? null;
313
+ }
314
+
315
+ const getDefaultSchemaLocaleFileUri = makeGetDefaultSchemaLocaleFileUri(fs);
316
+ async function getDefaultSchemaLocaleSourceCode(uri: string) {
317
+ const rootUri = await findThemeRootURI(uri);
318
+ if (!rootUri) return null;
319
+
320
+ const defaultLocaleFileUri = await getDefaultSchemaLocaleFileUri(rootUri);
321
+ if (!defaultLocaleFileUri) return null;
322
+
323
+ return (documentManager.get(defaultLocaleFileUri) as AugmentedJsonSourceCode) ?? null;
324
+ }
325
+ const definitionsProvider = new DefinitionProvider(
326
+ documentManager,
327
+ getDefaultLocaleSourceCode,
328
+ getDefaultSchemaLocaleSourceCode,
329
+ );
330
+ const jsonLanguageService = new JSONLanguageService(
331
+ documentManager,
332
+ jsonValidationSet,
333
+ getSchemaTranslationsForURI,
334
+ getModeForURI,
335
+ getThemeBlockNames,
336
+ getThemeBlockSchema,
337
+ findThemeRootURI,
338
+ );
339
+ const completionsProvider = new CompletionsProvider({
340
+ documentManager,
341
+ themeDocset,
342
+ getTranslationsForURI,
343
+ getPartialNamesForURI,
344
+ getThemeSettingsSchemaForURI,
345
+ log,
346
+ getThemeBlockNames,
347
+ getMetafieldDefinitions,
348
+ getDocDefinitionForURI,
349
+ fs,
350
+ documentsLocator,
351
+ findThemeRootURI,
352
+ notifyUnableToInferProperties: (variableName: string) => {
353
+ connection.window.showInformationMessage(
354
+ `Unable to infer properties for '${variableName}'. Property completion is only supported for variables from parse_json, to_hash, or graphql.`,
355
+ );
356
+ },
357
+ });
358
+ const hoverProvider = new HoverProvider(
359
+ documentManager,
360
+ themeDocset,
361
+ translationProvider,
362
+ getMetafieldDefinitions,
363
+ getTranslationsForURI,
364
+ getThemeSettingsSchemaForURI,
365
+ getDocDefinitionForURI,
366
+ findThemeRootURI,
367
+ );
368
+
369
+ const executeCommandProvider = new ExecuteCommandProvider(
370
+ documentManager,
371
+ diagnosticsManager,
372
+ clientCapabilities,
373
+ runChecks,
374
+ connection,
375
+ );
376
+
377
+ const fetchMetafieldDefinitionsForWorkspaceFolders = async (folders: WorkspaceFolder[]) => {
378
+ if (!fetchMetafieldDefinitionsForURI) return;
379
+
380
+ for (let folder of folders) {
381
+ const mode = await getModeForURI(folder.uri);
382
+
383
+ if (mode === 'theme') {
384
+ fetchMetafieldDefinitionsForURI(folder.uri);
385
+ }
386
+ }
387
+ };
388
+
389
+ connection.onInitialize((params) => {
390
+ clientCapabilities.setup(params.capabilities, params.initializationOptions);
391
+ cssLanguageService.setup(params.capabilities);
392
+ jsonLanguageService.setup(params.capabilities);
393
+ configuration.setup();
394
+
395
+ const fileOperationRegistrationOptions: FileOperationRegistrationOptions = {
396
+ filters: [
397
+ {
398
+ pattern: {
399
+ glob: '**/*.{liquid,json,graphql}',
400
+ },
401
+ },
402
+ {
403
+ pattern: {
404
+ glob: '**/assets/*',
405
+ },
406
+ },
407
+ ],
408
+ };
409
+
410
+ const result: InitializeResult = {
411
+ capabilities: {
412
+ textDocumentSync: {
413
+ change: TextDocumentSyncKind.Full,
414
+ save: true,
415
+ openClose: true,
416
+ },
417
+ codeActionProvider: {
418
+ codeActionKinds: [...CodeActionKinds],
419
+ },
420
+ completionProvider: {
421
+ triggerCharacters: ['.', '{{ ', '{% ', '<', '/', '[', '"', "'", ':', '@'],
422
+ },
423
+ definitionProvider: true,
424
+ documentOnTypeFormattingProvider: {
425
+ firstTriggerCharacter: ' ',
426
+ moreTriggerCharacter: ['{', '%', '-', '>'],
427
+ },
428
+ documentLinkProvider: {
429
+ resolveProvider: false,
430
+ workDoneProgress: false,
431
+ },
432
+ documentHighlightProvider: true,
433
+ linkedEditingRangeProvider: true,
434
+ renameProvider: {
435
+ prepareProvider: true,
436
+ },
437
+ executeCommandProvider: {
438
+ commands: [...Commands],
439
+ },
440
+ hoverProvider: {
441
+ workDoneProgress: false,
442
+ },
443
+ workspace: {
444
+ workspaceFolders: {
445
+ supported: true,
446
+ changeNotifications: true,
447
+ },
448
+ fileOperations: {
449
+ didRename: fileOperationRegistrationOptions,
450
+ },
451
+ },
452
+ },
453
+ serverInfo: {
454
+ name: 'theme-language-server',
455
+ version: VERSION,
456
+ },
457
+ };
458
+
459
+ return result;
460
+ });
461
+
462
+ connection.onInitialized(() => {
463
+ log(`[SERVER] Let's roll!`);
464
+ configuration.fetchConfiguration();
465
+ configuration.registerDidChangeCapability();
466
+ configuration.registerDidChangeWatchedFilesNotification({
467
+ watchers: [
468
+ {
469
+ globPattern: '**/*.liquid',
470
+ },
471
+ {
472
+ globPattern: '**/translations/**/*.yml',
473
+ },
474
+ {
475
+ globPattern: '**/*.graphql',
476
+ },
477
+ ],
478
+ });
479
+
480
+ if (clientCapabilities.hasWorkspaceFoldersSupport) {
481
+ connection.workspace.getWorkspaceFolders().then(async (folders) => {
482
+ if (!folders) return;
483
+
484
+ fetchMetafieldDefinitionsForWorkspaceFolders(folders);
485
+ });
486
+
487
+ connection.workspace.onDidChangeWorkspaceFolders(async (params) => {
488
+ fetchMetafieldDefinitionsForWorkspaceFolders(params.added);
489
+ });
490
+ }
491
+ });
492
+
493
+ connection.onDidChangeConfiguration((_params) => {
494
+ configuration.clearCache();
495
+ });
496
+
497
+ connection.onDidOpenTextDocument(async (params) => {
498
+ if (hasUnsupportedDocument(params)) return;
499
+ const { uri, text, version } = params.textDocument;
500
+ documentManager.open(uri, text, version);
501
+ if (await configuration.shouldCheckOnOpen()) {
502
+ runChecks([uri]);
503
+ }
504
+
505
+ // The objective at the time of writing this is to make {Asset,Snippet}Rename
506
+ // fast when you eventually need it.
507
+ //
508
+ // I'm choosing the textDocument/didOpen notification as a hook because
509
+ // I'm not sure we have a better solution than this. Yes we have the
510
+ // initialize request with the workspace folders, but you might have opened
511
+ // an app folder. The root of a theme app extension would probably be
512
+ // at ${workspaceRoot}/extensions/${appExtensionName}. It'd be hard to
513
+ // figure out from the initialize request params.
514
+ //
515
+ // If we open a file that we know is liquid, then we can kind of guarantee
516
+ // we'll find a theme root and we'll preload that.
517
+ if (await configuration.shouldPreloadOnBoot()) {
518
+ const rootUri = await findThemeRootURI(uri);
519
+ if (rootUri) {
520
+ documentManager.preload(rootUri);
521
+ }
522
+ }
523
+ });
524
+
525
+ connection.onDidChangeTextDocument(async (params) => {
526
+ if (hasUnsupportedDocument(params)) return;
527
+ const { uri, version } = params.textDocument;
528
+ documentManager.change(uri, params.contentChanges[0].text, version);
529
+ if (await configuration.shouldCheckOnChange()) {
530
+ runChecks([uri]);
531
+ } else {
532
+ // The diagnostics may be stale! Clear em!
533
+ diagnosticsManager.clear(params.textDocument.uri);
534
+ }
535
+ });
536
+
537
+ connection.onDidSaveTextDocument(async (params) => {
538
+ if (hasUnsupportedDocument(params)) return;
539
+ const { uri } = params.textDocument;
540
+ if (await configuration.shouldCheckOnSave()) {
541
+ runChecks([uri]);
542
+ }
543
+ });
544
+
545
+ connection.onDidCloseTextDocument((params) => {
546
+ if (hasUnsupportedDocument(params)) return;
547
+ const { uri } = params.textDocument;
548
+ documentManager.close(uri);
549
+ diagnosticsManager.clear(uri);
550
+ });
551
+
552
+ connection.onDocumentLinks(async (params) => {
553
+ if (hasUnsupportedDocument(params)) return [];
554
+
555
+ const [liquidLinks, jsonLinks] = await Promise.all([
556
+ documentLinksProvider.documentLinks(params.textDocument.uri),
557
+ jsonLanguageService.documentLinks(params),
558
+ ]);
559
+
560
+ return [...liquidLinks, ...jsonLinks];
561
+ });
562
+
563
+ connection.onDefinition(async (params) => {
564
+ if (hasUnsupportedDocument(params)) return [];
565
+ return definitionsProvider.definitions(params);
566
+ });
567
+
568
+ connection.onCodeAction(async (params) => {
569
+ return codeActionsProvider.codeActions(params);
570
+ });
571
+
572
+ connection.onExecuteCommand(async (params) => {
573
+ await executeCommandProvider.execute(params);
574
+ });
575
+
576
+ connection.onCompletion(async (params) => {
577
+ if (hasUnsupportedDocument(params)) return [];
578
+ return (
579
+ (await cssLanguageService.completions(params)) ??
580
+ (await jsonLanguageService.completions(params)) ??
581
+ (await completionsProvider.completions(params))
582
+ );
583
+ });
584
+
585
+ connection.onHover(async (params) => {
586
+ if (hasUnsupportedDocument(params)) return null;
587
+ return (
588
+ (await cssLanguageService.hover(params)) ??
589
+ (await jsonLanguageService.hover(params)) ??
590
+ (await hoverProvider.hover(params))
591
+ );
592
+ });
593
+
594
+ connection.onDocumentOnTypeFormatting(async (params) => {
595
+ if (hasUnsupportedDocument(params)) return null;
596
+ return onTypeFormattingProvider.onTypeFormatting(params);
597
+ });
598
+
599
+ connection.onDocumentHighlight(async (params) => {
600
+ if (hasUnsupportedDocument(params)) return [];
601
+ return documentHighlightProvider.documentHighlights(params);
602
+ });
603
+
604
+ connection.onPrepareRename(async (params) => {
605
+ if (hasUnsupportedDocument(params)) return null;
606
+ return renameProvider.prepare(params);
607
+ });
608
+
609
+ connection.onRenameRequest(async (params) => {
610
+ if (hasUnsupportedDocument(params)) return null;
611
+ return renameProvider.rename(params);
612
+ });
613
+
614
+ connection.languages.onLinkedEditingRange(async (params) => {
615
+ if (hasUnsupportedDocument(params)) return null;
616
+ return linkedEditingRangesProvider.linkedEditingRanges(params);
617
+ });
618
+
619
+ connection.workspace.onDidRenameFiles(async (params) => {
620
+ const triggerUris = params.files.map((fileRename) => fileRename.newUri);
621
+
622
+ // Behold the cache invalidation monster
623
+ for (const { oldUri, newUri } of params.files) {
624
+ // When a file is renamed, we paste the content of the old file into the
625
+ // new file in the document manager. We don't need to invalidate preload
626
+ // because that's the only thing that changed.
627
+ documentManager.rename(oldUri, newUri);
628
+
629
+ // When a file is renamed, readDirectory to the parent folder is invalidated.
630
+ fs.readDirectory.invalidate(path.dirname(oldUri));
631
+ fs.readDirectory.invalidate(path.dirname(newUri));
632
+
633
+ // When a file is renamed, readFile and stat for both the old and new URIs are invalidated.
634
+ fs.readFile.invalidate(oldUri);
635
+ fs.readFile.invalidate(newUri);
636
+ fs.stat.invalidate(oldUri);
637
+ fs.stat.invalidate(newUri);
638
+
639
+ themeGraphManager.rename(oldUri, newUri);
640
+ }
641
+
642
+ // We should complete refactors before running theme check
643
+ await renameHandler.onDidRenameFiles(params);
644
+
645
+ // MissingAssets/MissingSnippet should be rerun when a file is deleted
646
+ // since the file rename might cause an error.
647
+ runChecks.force(triggerUris);
648
+ });
649
+
650
+ /**
651
+ * onDidChangeWatchedFiles is triggered by file operations (in or out of the editor).
652
+ *
653
+ * For in-editor changes, happens redundantly with
654
+ * - onDidCreateFiles
655
+ * - onDidRenameFiles
656
+ * - onDidDeleteFiles
657
+ * - onDidSaveTextDocument
658
+ *
659
+ * Not redundant for operations that happen outside of the editor
660
+ * - git pull, checkout, reset, stash pop, etc.
661
+ * - shopify theme metafields pull
662
+ * - etc.
663
+ *
664
+ * It always runs and onDid* will never fire without a corresponding onDidChangeWatchedFiles.
665
+ *
666
+ * This is why the bulk of the cache invalidation logic is in this handler.
667
+ */
668
+ connection.onDidChangeWatchedFiles(async (params) => {
669
+ if (params.changes.length === 0) return;
670
+
671
+ const triggerUris = params.changes.map((change) => change.uri);
672
+ const updates: Promise<any>[] = [];
673
+ for (const change of params.changes) {
674
+ // Theme Check config changes should clear the config cache
675
+ if (change.uri.endsWith('.theme-check.yml')) {
676
+ loadConfig.clearCache();
677
+ continue;
678
+ }
679
+
680
+ // Rename cache invalidation is handled by onDidRenameFiles
681
+ if (documentManager.hasRecentRename(change.uri)) {
682
+ documentManager.clearRecentRename(change.uri);
683
+ continue;
684
+ }
685
+
686
+ switch (change.type) {
687
+ case FileChangeType.Created:
688
+ // A created file invalidates readDirectory, readFile and stat
689
+ fs.readDirectory.invalidate(path.dirname(change.uri));
690
+ fs.readFile.invalidate(change.uri);
691
+ fs.stat.invalidate(change.uri);
692
+ themeGraphManager.create(change.uri);
693
+ // If a file is created under out feet, we update its contents.
694
+ updates.push(documentManager.changeFromDisk(change.uri));
695
+ break;
696
+
697
+ case FileChangeType.Changed:
698
+ // A changed file invalidates readFile and stat (but not readDirectory)
699
+ fs.readFile.invalidate(change.uri);
700
+ fs.stat.invalidate(change.uri);
701
+ themeGraphManager.change(change.uri);
702
+ // If the file is not open, we update its contents in the doc manager
703
+ // If it is open, then we don't need to update it because the document manager
704
+ // will have the version from the editor.
705
+ if (documentManager.get(change.uri)?.version === undefined) {
706
+ updates.push(documentManager.changeFromDisk(change.uri));
707
+ }
708
+ break;
709
+
710
+ case FileChangeType.Deleted:
711
+ // A deleted file invalides readDirectory, readFile, and stat
712
+ fs.readDirectory.invalidate(path.dirname(change.uri));
713
+ fs.readFile.invalidate(change.uri);
714
+ fs.stat.invalidate(change.uri);
715
+ themeGraphManager.delete(change.uri);
716
+ // If a file is deleted, it's removed from the document manager
717
+ documentManager.delete(change.uri);
718
+ break;
719
+ }
720
+
721
+ if (change.uri.endsWith('metafields.json')) {
722
+ updates.push(
723
+ findThemeRootURI(change.uri).then((rootUri) => {
724
+ if (rootUri) {
725
+ getMetafieldDefinitionsForRootUri.invalidate(rootUri);
726
+ }
727
+ }),
728
+ );
729
+ }
730
+ }
731
+
732
+ await Promise.all(updates);
733
+
734
+ // MissingAssets/MissingSnippet should be rerun when a file is deleted
735
+ // since an error might be introduced (and vice versa).
736
+ runChecks.force(triggerUris);
737
+ });
738
+
739
+ connection.onRequest(ThemeGraphReferenceRequest.type, async (params) => {
740
+ if (hasUnsupportedDocument(params)) return [];
741
+ const { uri, offset, includeIndirect } = params;
742
+ return themeGraphManager.getReferences(uri, offset, { includeIndirect }).catch((_) => []);
743
+ });
744
+
745
+ connection.onRequest(ThemeGraphDependenciesRequest.type, async (params) => {
746
+ if (hasUnsupportedDocument(params)) return [];
747
+ const { uri, offset, includeIndirect } = params;
748
+ return themeGraphManager.getDependencies(uri, offset, { includeIndirect }).catch((_) => []);
749
+ });
750
+
751
+ connection.onRequest(ThemeGraphRootRequest.type, async (params) => {
752
+ if (hasUnsupportedDocument(params)) return '';
753
+ const { uri } = params;
754
+ const rootUri = await findThemeRootURI(uri).catch((_) => undefined);
755
+ if (!rootUri || path.dirname(rootUri) === rootUri) {
756
+ console.error(uri);
757
+ }
758
+ return rootUri;
759
+ });
760
+
761
+ connection.onRequest(ThemeGraphDeadCodeRequest.type, async (params) => {
762
+ if (hasUnsupportedDocument(params)) return [];
763
+ const { uri } = params;
764
+ const rootUri = await findThemeRootURI(uri);
765
+ if (!rootUri) return [];
766
+ const deadFiles = await themeGraphManager.deadCode(rootUri);
767
+ return deadFiles;
768
+ });
769
+
770
+ connection.listen();
771
+ }