@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,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentManager = void 0;
4
+ const platformos_check_common_1 = require("@platformos/platformos-check-common");
5
+ const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
6
+ const progress_1 = require("../progress");
7
+ const platformos_check_common_2 = require("@platformos/platformos-check-common");
8
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9
+ class DocumentManager {
10
+ constructor(fs, connection, clientCapabilities, getModeForUri, isValidSchema) {
11
+ this.fs = fs;
12
+ this.connection = connection;
13
+ this.clientCapabilities = clientCapabilities;
14
+ this.getModeForUri = getModeForUri;
15
+ this.isValidSchema = isValidSchema;
16
+ /**
17
+ * The preload method is used to pre-load and pre-parse all the files in the
18
+ * theme. It is smart and only will load files that are not already in the
19
+ * DocumentManager.
20
+ *
21
+ * Files that are loaded from the AbstractFileSystem will have a version of `undefined`.
22
+ */
23
+ this.preload = (0, platformos_check_common_1.memoize)(async (rootUri) => {
24
+ if (!this.fs)
25
+ throw new Error('Cannot call preload without a FileSystem');
26
+ const { fs, connection, clientCapabilities } = this;
27
+ const progress = progress_1.Progress.create(connection, clientCapabilities, `preload#${rootUri}`);
28
+ progress.start('Initializing Liquid LSP');
29
+ // We'll only load the files that aren't already in the store. No need to
30
+ // parse a file we already parsed.
31
+ const filesToLoad = await (0, platformos_check_common_1.recursiveReadDirectory)(this.fs, rootUri, ([uri]) => /\.(liquid|json|graphql)$/.test(uri) && !this.sourceCodes.has(uri));
32
+ progress.report(10, 'Preloading files');
33
+ let [i, n] = [0, filesToLoad.length];
34
+ await Promise.all(filesToLoad.map(async (file) => {
35
+ // This is what is important, we are loading the file from the file system
36
+ // And setting their initial version to `undefined` to mean "on disk".
37
+ try {
38
+ this.set(file, await fs.readFile(file), undefined);
39
+ }
40
+ catch (error) {
41
+ console.error('Failed to preload', file, error);
42
+ }
43
+ // This is just doing progress reporting
44
+ if (++i % 10 === 0) {
45
+ const message = `Preloading files [${i}/${n}]`;
46
+ progress.report((0, progress_1.percent)(i, n, 10), message);
47
+ }
48
+ }));
49
+ progress.end('Completed');
50
+ }, (rootUri) => rootUri);
51
+ this.sourceCodes = new Map();
52
+ this.recentlyRenamed = new Set();
53
+ }
54
+ open(uri, source, version) {
55
+ return this.set(uri, source, version);
56
+ }
57
+ change(uri, source, version) {
58
+ return this.set(uri, source, version);
59
+ }
60
+ async changeFromDisk(uri) {
61
+ if (!this.fs)
62
+ throw new Error('Cannot call changeFromDisk without a FileSystem');
63
+ this.change(uri, await this.fs.readFile(uri), undefined);
64
+ }
65
+ close(uri) {
66
+ const sourceCode = this.sourceCodes.get(uri);
67
+ if (!sourceCode)
68
+ return;
69
+ return this.set(uri, sourceCode.source, undefined);
70
+ }
71
+ delete(uri) {
72
+ return this.sourceCodes.delete(uri);
73
+ }
74
+ rename(oldUri, newUri) {
75
+ this.trackRename(oldUri, newUri);
76
+ const sourceCode = this.sourceCodes.get(oldUri);
77
+ if (!sourceCode)
78
+ return;
79
+ this.sourceCodes.delete(oldUri);
80
+ this.set(newUri, sourceCode.source, sourceCode.version);
81
+ }
82
+ theme(root, includeFilesFromDisk = false) {
83
+ return [...this.sourceCodes.values()]
84
+ .filter((sourceCode) => sourceCode.uri.startsWith(root))
85
+ .filter((sourceCode) => includeFilesFromDisk || sourceCode.version !== undefined);
86
+ }
87
+ get openDocuments() {
88
+ return [...this.sourceCodes.values()].filter((sourceCode) => sourceCode.version !== undefined);
89
+ }
90
+ get(uri) {
91
+ return this.sourceCodes.get(platformos_check_common_1.path.normalize(uri));
92
+ }
93
+ has(uri) {
94
+ return this.sourceCodes.has(platformos_check_common_1.path.normalize(uri));
95
+ }
96
+ /** Used to prevent cache busting twice for the same operation */
97
+ hasRecentRename(uri) {
98
+ return this.recentlyRenamed.has(uri);
99
+ }
100
+ clearRecentRename(uri) {
101
+ this.recentlyRenamed.delete(uri);
102
+ }
103
+ set(uri, source, version) {
104
+ uri = platformos_check_common_1.path.normalize(uri);
105
+ // We only support json and liquid files.
106
+ if (!/\.(json|liquid|graphql)$/.test(uri) || /\.(s?css|js).liquid$/.test(uri)) {
107
+ return;
108
+ }
109
+ this.sourceCodes.set(uri, this.augmentedSourceCode(uri, source, version));
110
+ }
111
+ augmentedSourceCode(uri, source, version) {
112
+ const sourceCode = (0, platformos_check_common_1.toSourceCode)(uri, source, version);
113
+ const textDocument = vscode_languageserver_textdocument_1.TextDocument.create(uri, sourceCode.type, sourceCode.version ?? 0, // create doesn't let us put undefined here.
114
+ sourceCode.source);
115
+ switch (sourceCode.type) {
116
+ case platformos_check_common_1.SourceCodeType.JSON:
117
+ return {
118
+ ...sourceCode,
119
+ textDocument,
120
+ };
121
+ case platformos_check_common_1.SourceCodeType.GraphQL:
122
+ return {
123
+ ...sourceCode,
124
+ textDocument,
125
+ };
126
+ case platformos_check_common_1.SourceCodeType.LiquidHtml:
127
+ return {
128
+ ...sourceCode,
129
+ textDocument,
130
+ /** Lazy and only computed once per file version */
131
+ getSchema: (0, platformos_check_common_1.memo)(async () => {
132
+ if (!this.getModeForUri || !this.isValidSchema)
133
+ return undefined;
134
+ const mode = await this.getModeForUri(uri);
135
+ return (0, platformos_check_common_1.toSchema)(mode, uri, sourceCode, this.isValidSchema, false);
136
+ }),
137
+ /** Lazy and only computed once per file version */
138
+ getLiquidDoc: (0, platformos_check_common_1.memo)(async () => {
139
+ const ast = sourceCode.ast;
140
+ if ((0, platformos_check_common_1.isError)(ast))
141
+ return undefined;
142
+ return (0, platformos_check_common_2.extractDocDefinition)(uri, ast);
143
+ }),
144
+ };
145
+ default:
146
+ return (0, platformos_check_common_1.assertNever)(sourceCode);
147
+ }
148
+ }
149
+ /**
150
+ * The workspace/onDidRenameFile notification is sent when a file is renamed in the workspace (via a user gesture)
151
+ * The workspace/onDidChangeWatchedFiles notification is sent when a file is renamed on disk (via a file system event)
152
+ *
153
+ * The order is not guaranteed, but it seems to be true that onDidRenameFile happens before onDidChangeWatchedFiles.
154
+ *
155
+ * In the off-chance that the order is reversed, we'll have the sleep timer to clean up the state.
156
+ */
157
+ trackRename(oldUri, newUri) {
158
+ this.recentlyRenamed.add(oldUri);
159
+ this.recentlyRenamed.add(newUri);
160
+ sleep(2000).then(() => {
161
+ this.clearRecentRename(oldUri);
162
+ this.clearRecentRename(newUri);
163
+ });
164
+ }
165
+ }
166
+ exports.DocumentManager = DocumentManager;
167
+ //# sourceMappingURL=DocumentManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentManager.js","sourceRoot":"","sources":["../../src/documents/DocumentManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { DocumentManager } from './DocumentManager';
2
+ export * from './types';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DocumentManager = void 0;
18
+ var DocumentManager_1 = require("./DocumentManager");
19
+ Object.defineProperty(exports, "DocumentManager", { enumerable: true, get: function () { return DocumentManager_1.DocumentManager; } });
20
+ __exportStar(require("./types"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,0CAAwB"}
@@ -0,0 +1,39 @@
1
+ import { SourceCodeType, SourceCode, SectionSchema, ThemeBlockSchema, AppBlockSchema } from '@platformos/platformos-check-common';
2
+ import { TextDocument } from 'vscode-languageserver-textdocument';
3
+ import { DocDefinition } from '@platformos/platformos-check-common';
4
+ /** Util type to add the common `textDocument` property to the SourceCode. */
5
+ type _AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = SourceCode<SCT> & {
6
+ textDocument: TextDocument;
7
+ };
8
+ /** JsonSourceCode + textDocument */
9
+ export type AugmentedJsonSourceCode = _AugmentedSourceCode<SourceCodeType.JSON>;
10
+ export type AugmentedGraphQLSourceCode = _AugmentedSourceCode<SourceCodeType.GraphQL>;
11
+ /**
12
+ * AugmentedLiquidSourceCode may hold the schema for the section or block.
13
+ *
14
+ * We'll use the SourceCode as the source of truth since we won't need to care
15
+ * about cache invalidation and will mean we'll parse the schema at most once.
16
+ */
17
+ export type AugmentedLiquidSourceCode = _AugmentedSourceCode<SourceCodeType.LiquidHtml> & {
18
+ getSchema: () => Promise<SectionSchema | ThemeBlockSchema | AppBlockSchema | undefined>;
19
+ getLiquidDoc: () => Promise<DocDefinition | undefined>;
20
+ };
21
+ /**
22
+ * AugmentedSourceCode is a union of the two augmented source codes.
23
+ *
24
+ * When passed a specific SourceCodeType, it will return the correct AugmentedSourceCode.
25
+ *
26
+ * @example
27
+ * AugmentedSourceCode -> AugmentedJsonSourceCode | AugmentedLiquidSourceCode
28
+ * AugmentedSourceCode<SourceCodeType.JSON> -> AugmentedJsonSourceCode
29
+ * AugmentedSourceCode<SourceCodeType.LiquidHtml> -> AugmentedLiquidSourceCode
30
+ */
31
+ export type AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = {
32
+ [SourceCodeType.JSON]: AugmentedJsonSourceCode;
33
+ [SourceCodeType.LiquidHtml]: AugmentedLiquidSourceCode;
34
+ [SourceCodeType.GraphQL]: AugmentedGraphQLSourceCode;
35
+ }[SCT];
36
+ export declare const isLiquidSourceCode: (file: AugmentedSourceCode) => file is AugmentedLiquidSourceCode;
37
+ export declare const isJsonSourceCode: (file: AugmentedSourceCode) => file is AugmentedJsonSourceCode;
38
+ export declare const isGraphQLSourceceCode: (file: AugmentedSourceCode) => file is AugmentedJsonSourceCode;
39
+ export {};
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isGraphQLSourceceCode = exports.isJsonSourceCode = exports.isLiquidSourceCode = void 0;
4
+ const platformos_check_common_1 = require("@platformos/platformos-check-common");
5
+ const isLiquidSourceCode = (file) => file.type === platformos_check_common_1.SourceCodeType.LiquidHtml;
6
+ exports.isLiquidSourceCode = isLiquidSourceCode;
7
+ const isJsonSourceCode = (file) => file.type === platformos_check_common_1.SourceCodeType.JSON;
8
+ exports.isJsonSourceCode = isJsonSourceCode;
9
+ const isGraphQLSourceceCode = (file) => file.type === platformos_check_common_1.SourceCodeType.GraphQL;
10
+ exports.isGraphQLSourceceCode = isGraphQLSourceceCode;
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/documents/types.ts"],"names":[],"mappings":";;;AAAA,iFAM6C;AAyCtC,MAAM,kBAAkB,GAAG,CAAC,IAAyB,EAAqC,EAAE,CACjG,IAAI,CAAC,IAAI,KAAK,wCAAc,CAAC,UAAU,CAAC;AAD7B,QAAA,kBAAkB,sBACW;AAEnC,MAAM,gBAAgB,GAAG,CAAC,IAAyB,EAAmC,EAAE,CAC7F,IAAI,CAAC,IAAI,KAAK,wCAAc,CAAC,IAAI,CAAC;AADvB,QAAA,gBAAgB,oBACO;AAE7B,MAAM,qBAAqB,GAAG,CAAC,IAAyB,EAAmC,EAAE,CAClG,IAAI,CAAC,IAAI,KAAK,wCAAc,CAAC,OAAO,CAAC;AAD1B,QAAA,qBAAqB,yBACK"}
@@ -0,0 +1,10 @@
1
+ import { DocumentOnTypeFormattingParams } from 'vscode-languageserver';
2
+ import { DocumentManager } from '../documents';
3
+ import { SetCursorPosition } from './types';
4
+ export declare class OnTypeFormattingProvider {
5
+ documentManager: DocumentManager;
6
+ setCursorPosition: SetCursorPosition;
7
+ private providers;
8
+ constructor(documentManager: DocumentManager, setCursorPosition?: SetCursorPosition);
9
+ onTypeFormatting(params: DocumentOnTypeFormattingParams): Promise<import("vscode-languageserver").TextEdit[] | null>;
10
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnTypeFormattingProvider = void 0;
4
+ const BracketsAutoclosingOnTypeFormattingProvider_1 = require("./providers/BracketsAutoclosingOnTypeFormattingProvider");
5
+ const HtmlElementAutoclosingOnTypeFormattingProvider_1 = require("./providers/HtmlElementAutoclosingOnTypeFormattingProvider");
6
+ class OnTypeFormattingProvider {
7
+ constructor(documentManager, setCursorPosition = async () => { }) {
8
+ this.documentManager = documentManager;
9
+ this.setCursorPosition = setCursorPosition;
10
+ this.providers = [
11
+ new BracketsAutoclosingOnTypeFormattingProvider_1.BracketsAutoclosingOnTypeFormattingProvider(),
12
+ new HtmlElementAutoclosingOnTypeFormattingProvider_1.HtmlElementAutoclosingOnTypeFormattingProvider(setCursorPosition),
13
+ ];
14
+ }
15
+ async onTypeFormatting(params) {
16
+ const document = this.documentManager.get(params.textDocument.uri);
17
+ if (!document)
18
+ return null;
19
+ const results = this.providers.map((provider) => provider.onTypeFormatting(document, params));
20
+ return results.find((result) => result !== null) ?? null;
21
+ }
22
+ }
23
+ exports.OnTypeFormattingProvider = OnTypeFormattingProvider;
24
+ //# sourceMappingURL=OnTypeFormattingProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnTypeFormattingProvider.js","sourceRoot":"","sources":["../../src/formatting/OnTypeFormattingProvider.ts"],"names":[],"mappings":";;;AAEA,yHAAsH;AACtH,+HAA4H;AAG5H,MAAa,wBAAwB;IAGnC,YACS,eAAgC,EAChC,oBAAuC,KAAK,IAAI,EAAE,GAAE,CAAC;QADrD,oBAAe,GAAf,eAAe,CAAiB;QAChC,sBAAiB,GAAjB,iBAAiB,CAAoC;QAE5D,IAAI,CAAC,SAAS,GAAG;YACf,IAAI,yFAA2C,EAAE;YACjD,IAAI,+FAA8C,CAAC,iBAAiB,CAAC;SACtE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAsC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9F,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IAC3D,CAAC;CACF;AAnBD,4DAmBC"}
@@ -0,0 +1 @@
1
+ export { OnTypeFormattingProvider } from './OnTypeFormattingProvider';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnTypeFormattingProvider = void 0;
4
+ var OnTypeFormattingProvider_1 = require("./OnTypeFormattingProvider");
5
+ Object.defineProperty(exports, "OnTypeFormattingProvider", { enumerable: true, get: function () { return OnTypeFormattingProvider_1.OnTypeFormattingProvider; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatting/index.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA"}
@@ -0,0 +1,49 @@
1
+ import { DocumentOnTypeFormattingParams, TextEdit } from 'vscode-languageserver-protocol';
2
+ import { AugmentedSourceCode } from '../../documents';
3
+ import { BaseOnTypeFormattingProvider } from '../types';
4
+ export declare class BracketsAutoclosingOnTypeFormattingProvider implements BaseOnTypeFormattingProvider {
5
+ /**
6
+ * This very complex piece of code here exists to provide a good autoclosing UX.
7
+ *
8
+ * The story is kind of long so here goes...
9
+ *
10
+ * What we want:
11
+ * 1. Basic autoclosing of {{, {% with the corresponding pair (and spaces)
12
+ * - user types: {{
13
+ * - user sees: {{ | }} (with cursor position at |)
14
+ * 2. Autoclosing of {{- with -}}, {%- with -%}
15
+ * - user types: {{-
16
+ * - user sees: {{- | -}} (with cursor at |)
17
+ * 3. User adds whitespace stripping on one side of the braces of an existing tag
18
+ * - user types: - at | in `{{| drop }}`
19
+ * - user sees: {{- drop }}
20
+ *
21
+ * Why we can't do it with autoclosingPairs:
22
+ * - VS Code's settings accepts autoclosingPairs and autocloseBefore
23
+ * - autoclosingPairs is a set of pairs that should be autoclosed (e.g. ['{%', '%}'])
24
+ * - autocloseBefore is a character set of 'allowed next characters' that would cause a closing pair
25
+ * - If we put a space (' ') the autoclosingPairs set, then (3) from above becomes funky:
26
+ * - assume autoclosingPairs = {|}, {{|}}, {{ | }}
27
+ * - user types: a space at | in `{{| drop }}`
28
+ * - user sees: {{ }}drop }}
29
+ * - This happens because the space is an autocloseBefore character, it sees a space after the cursor
30
+ * so it closes '{{ ' with ' }}' at the cursor position, resulting in '{{ }}drop }}'
31
+ * - Something similar happens if we include the `-` in the autoclosing pairs
32
+ * - This is annoying!
33
+ *
34
+ * So our solution is the following:
35
+ * 1. We change the pairs to include the closing space (this way our cursor remains where we want it to be)
36
+ * - {{| }}
37
+ * - {%| %}
38
+ * 2. We add this OnTypeFormattingProvider that does the following "fixes":
39
+ * - {{| }} into {{ | }}
40
+ * - {{ -| }} into {{- | -}}
41
+ * - {%| %} into {% | %}
42
+ * - {% -| %} into {%- | -%}
43
+ *
44
+ * This lets us avoid the unnecessary close and accomplish 1, 2 and 3 :)
45
+ *
46
+ * Fallback for editor.onTypeFormatting: false is to let the user type the `-` on both sides manually
47
+ */
48
+ onTypeFormatting(document: AugmentedSourceCode, params: DocumentOnTypeFormattingParams): TextEdit[] | null;
49
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BracketsAutoclosingOnTypeFormattingProvider = void 0;
4
+ const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
5
+ class BracketsAutoclosingOnTypeFormattingProvider {
6
+ /**
7
+ * This very complex piece of code here exists to provide a good autoclosing UX.
8
+ *
9
+ * The story is kind of long so here goes...
10
+ *
11
+ * What we want:
12
+ * 1. Basic autoclosing of {{, {% with the corresponding pair (and spaces)
13
+ * - user types: {{
14
+ * - user sees: {{ | }} (with cursor position at |)
15
+ * 2. Autoclosing of {{- with -}}, {%- with -%}
16
+ * - user types: {{-
17
+ * - user sees: {{- | -}} (with cursor at |)
18
+ * 3. User adds whitespace stripping on one side of the braces of an existing tag
19
+ * - user types: - at | in `{{| drop }}`
20
+ * - user sees: {{- drop }}
21
+ *
22
+ * Why we can't do it with autoclosingPairs:
23
+ * - VS Code's settings accepts autoclosingPairs and autocloseBefore
24
+ * - autoclosingPairs is a set of pairs that should be autoclosed (e.g. ['{%', '%}'])
25
+ * - autocloseBefore is a character set of 'allowed next characters' that would cause a closing pair
26
+ * - If we put a space (' ') the autoclosingPairs set, then (3) from above becomes funky:
27
+ * - assume autoclosingPairs = {|}, {{|}}, {{ | }}
28
+ * - user types: a space at | in `{{| drop }}`
29
+ * - user sees: {{ }}drop }}
30
+ * - This happens because the space is an autocloseBefore character, it sees a space after the cursor
31
+ * so it closes '{{ ' with ' }}' at the cursor position, resulting in '{{ }}drop }}'
32
+ * - Something similar happens if we include the `-` in the autoclosing pairs
33
+ * - This is annoying!
34
+ *
35
+ * So our solution is the following:
36
+ * 1. We change the pairs to include the closing space (this way our cursor remains where we want it to be)
37
+ * - {{| }}
38
+ * - {%| %}
39
+ * 2. We add this OnTypeFormattingProvider that does the following "fixes":
40
+ * - {{| }} into {{ | }}
41
+ * - {{ -| }} into {{- | -}}
42
+ * - {%| %} into {% | %}
43
+ * - {% -| %} into {%- | -%}
44
+ *
45
+ * This lets us avoid the unnecessary close and accomplish 1, 2 and 3 :)
46
+ *
47
+ * Fallback for editor.onTypeFormatting: false is to let the user type the `-` on both sides manually
48
+ */
49
+ onTypeFormatting(document, params) {
50
+ const textDocument = document.textDocument;
51
+ const ch = params.ch;
52
+ // position is position of cursor so 1 ahead of char
53
+ const { line, character } = params.position;
54
+ // This is an early return to avoid doing currentLine.at(-1);
55
+ if ((ch === ' ' && character <= 2) || character <= 1)
56
+ return null;
57
+ const currentLineRange = vscode_languageserver_protocol_1.Range.create(vscode_languageserver_protocol_1.Position.create(line, 0), vscode_languageserver_protocol_1.Position.create(line + 1, 0));
58
+ const currentLine = textDocument.getText(currentLineRange);
59
+ const charIdx = ch === ' ' ? character - 2 : character - 1;
60
+ const char = currentLine.at(charIdx);
61
+ switch (char) {
62
+ // here we fix {{| }} with {{ | }}
63
+ // here we fix {%| %} with {% | %}
64
+ case '{':
65
+ case '%': {
66
+ const chars = currentLine.slice(charIdx - 1, charIdx + 4);
67
+ if (chars === '{{ }}' || chars === '{% %}') {
68
+ return [vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, charIdx + 1), ' ')];
69
+ }
70
+ }
71
+ // here we fix {{ -| }} to {{- | -}}
72
+ // here we fix {% -| }} to {%- | -%}
73
+ case '-': {
74
+ // remember 0-index means 4th char
75
+ if (charIdx < 3)
76
+ return null;
77
+ const chars = currentLine.slice(charIdx - 3, charIdx + 4);
78
+ if (chars === '{{ - }}' || chars === '{% - %}') {
79
+ // Here we're being clever and doing the {{- -}} if the first character
80
+ // you type is a `-`, leaving your cursor in the middle :)
81
+ return [
82
+ // Start with
83
+ // {{ - }}
84
+ // ^ start replace
85
+ // ^ end replace (excluded)
86
+ // Replace with '- ', get
87
+ // {{- }}
88
+ vscode_languageserver_protocol_1.TextEdit.replace(vscode_languageserver_protocol_1.Range.create(vscode_languageserver_protocol_1.Position.create(line, charIdx - 1), vscode_languageserver_protocol_1.Position.create(line, charIdx + 1)), '- '),
89
+ // Start with
90
+ // {{ - }}
91
+ // ^ char
92
+ // ^ insertion point
93
+ // Insert ' ' , get
94
+ // {{ - -}}
95
+ // Both together and you get {{- -}} with your cursor in the middle
96
+ vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, charIdx + 2), '-'),
97
+ ];
98
+ }
99
+ }
100
+ }
101
+ return null;
102
+ }
103
+ }
104
+ exports.BracketsAutoclosingOnTypeFormattingProvider = BracketsAutoclosingOnTypeFormattingProvider;
105
+ //# sourceMappingURL=BracketsAutoclosingOnTypeFormattingProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BracketsAutoclosingOnTypeFormattingProvider.js","sourceRoot":"","sources":["../../../src/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.ts"],"names":[],"mappings":";;;AAAA,mFAKwC;AAIxC,MAAa,2CAA2C;IACtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,gBAAgB,CACd,QAA6B,EAC7B,MAAsC;QAEtC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,oDAAoD;QACpD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC5C,6DAA6D;QAC7D,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,gBAAgB,GAAG,sCAAK,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,yCAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,QAAQ,IAAI,EAAE,CAAC;YACb,kCAAkC;YAClC,kCAAkC;YAClC,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC1D,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBAC3C,OAAO,CAAC,yCAAQ,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,oCAAoC;YACpC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,kCAAkC;gBAClC,IAAI,OAAO,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAE7B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/C,uEAAuE;oBACvE,0DAA0D;oBAC1D,OAAO;wBACL,aAAa;wBACb,YAAY;wBACZ,sBAAsB;wBACtB,iCAAiC;wBACjC,yBAAyB;wBACzB,WAAW;wBACX,yCAAQ,CAAC,OAAO,CACd,sCAAK,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,EACpF,IAAI,CACL;wBACD,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd,2BAA2B;wBAC3B,mBAAmB;wBACnB,aAAa;wBACb,mEAAmE;wBACnE,yCAAQ,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;qBACzD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxGD,kGAwGC"}
@@ -0,0 +1,41 @@
1
+ import { DocumentOnTypeFormattingParams, TextEdit } from 'vscode-languageserver-protocol';
2
+ import { AugmentedLiquidSourceCode } from '../../documents';
3
+ import { BaseOnTypeFormattingProvider, SetCursorPosition } from '../types';
4
+ /**
5
+ * This class is responsible for closing dangling HTML elements.
6
+ *
7
+ * Say user types <script>, then we'd want `</script>` to be inserted.
8
+ *
9
+ * Thing is we want to do that only if the `</script>` isn't already present in the file.
10
+ * If the user goes to edit `<script>` and types `>`, we don't want to insert `</script>` again.
11
+ *
12
+ * The "trick" we use here is to only add the `</script>` part if the
13
+ * document.ast is an instance of LiquidHTMLASTParsingError and that the
14
+ * unclosed element is of the correct name.
15
+ *
16
+ * @example:
17
+ * ```html
18
+ * <div id="main">
19
+ * <div id="inner">|
20
+ * </div>
21
+ * ```
22
+ * - The user just finished typing `<div id="inner">` inside the div#main.
23
+ * - This parses as though the div#inner is closed and div#main isn't.
24
+ * - That's OK.
25
+ * - This makes a LiquidHTMLASTParsingError with unclosed div (the div#main).
26
+ * - Since
27
+ * - the cursor is at the end of a div, and
28
+ * - the unclosed element is a div,
29
+ * Then we can insert one automatically after the cursor and fix the AST.
30
+ *
31
+ * ```html
32
+ * <div id="main">
33
+ * <div id="inner">|</div>
34
+ * </div>
35
+ * ```
36
+ */
37
+ export declare class HtmlElementAutoclosingOnTypeFormattingProvider implements BaseOnTypeFormattingProvider {
38
+ private setCursorPosition;
39
+ constructor(setCursorPosition: SetCursorPosition);
40
+ onTypeFormatting(document: AugmentedLiquidSourceCode, params: DocumentOnTypeFormattingParams): TextEdit[] | null;
41
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HtmlElementAutoclosingOnTypeFormattingProvider = void 0;
4
+ const liquid_html_parser_1 = require("@platformos/liquid-html-parser");
5
+ const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
6
+ const platformos_check_common_1 = require("@platformos/platformos-check-common");
7
+ const defer = (fn) => setTimeout(fn, 10);
8
+ /**
9
+ * This class is responsible for closing dangling HTML elements.
10
+ *
11
+ * Say user types <script>, then we'd want `</script>` to be inserted.
12
+ *
13
+ * Thing is we want to do that only if the `</script>` isn't already present in the file.
14
+ * If the user goes to edit `<script>` and types `>`, we don't want to insert `</script>` again.
15
+ *
16
+ * The "trick" we use here is to only add the `</script>` part if the
17
+ * document.ast is an instance of LiquidHTMLASTParsingError and that the
18
+ * unclosed element is of the correct name.
19
+ *
20
+ * @example:
21
+ * ```html
22
+ * <div id="main">
23
+ * <div id="inner">|
24
+ * </div>
25
+ * ```
26
+ * - The user just finished typing `<div id="inner">` inside the div#main.
27
+ * - This parses as though the div#inner is closed and div#main isn't.
28
+ * - That's OK.
29
+ * - This makes a LiquidHTMLASTParsingError with unclosed div (the div#main).
30
+ * - Since
31
+ * - the cursor is at the end of a div, and
32
+ * - the unclosed element is a div,
33
+ * Then we can insert one automatically after the cursor and fix the AST.
34
+ *
35
+ * ```html
36
+ * <div id="main">
37
+ * <div id="inner">|</div>
38
+ * </div>
39
+ * ```
40
+ */
41
+ class HtmlElementAutoclosingOnTypeFormattingProvider {
42
+ constructor(setCursorPosition) {
43
+ this.setCursorPosition = setCursorPosition;
44
+ }
45
+ onTypeFormatting(document, params) {
46
+ const textDocument = document.textDocument;
47
+ const ch = params.ch;
48
+ // position is position of cursor so 1 ahead of char
49
+ const { line, character } = params.position;
50
+ switch (ch) {
51
+ // here we fix `>` with `</$unclosed>`
52
+ case '>': {
53
+ const ast = document.ast;
54
+ if (ast instanceof liquid_html_parser_1.LiquidHTMLASTParsingError &&
55
+ ast.unclosed &&
56
+ ast.unclosed.type === liquid_html_parser_1.NodeTypes.HtmlElement &&
57
+ (ast.unclosed.blockStartPosition.end === textDocument.offsetAt(params.position) ||
58
+ shouldClose(ast.unclosed, nodeAtCursor(textDocument, params.position)))) {
59
+ defer(() => this.setCursorPosition(textDocument, params.position));
60
+ return [vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, character), `</${ast.unclosed.name}>`)];
61
+ }
62
+ else if (!(ast instanceof Error)) {
63
+ // Even though we accept dangling <div>s inside {% if condition %}, we prefer to auto-insert the </div>
64
+ const [node] = (0, platformos_check_common_1.findCurrentNode)(ast, textDocument.offsetAt(params.position));
65
+ if (isDanglingHtmlElement(node)) {
66
+ defer(() => this.setCursorPosition(textDocument, params.position));
67
+ return [vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, character), `</${(0, liquid_html_parser_1.getName)(node)}>`)];
68
+ }
69
+ }
70
+ }
71
+ }
72
+ return null;
73
+ }
74
+ }
75
+ exports.HtmlElementAutoclosingOnTypeFormattingProvider = HtmlElementAutoclosingOnTypeFormattingProvider;
76
+ function nodeAtCursor(textDocument, position) {
77
+ const text = textDocument.getText(vscode_languageserver_protocol_1.Range.create(vscode_languageserver_protocol_1.Position.create(0, 0), position));
78
+ try {
79
+ const ast = (0, liquid_html_parser_1.toLiquidHtmlAST)(text, {
80
+ allowUnclosedDocumentNode: true,
81
+ mode: 'tolerant',
82
+ });
83
+ const [node, ancestors] = (0, platformos_check_common_1.findCurrentNode)(ast, textDocument.offsetAt(position));
84
+ if (ancestors.at(-1)?.type === liquid_html_parser_1.NodeTypes.HtmlElement)
85
+ return ancestors.at(-1);
86
+ if (node.type === liquid_html_parser_1.NodeTypes.LiquidBranch)
87
+ return ancestors.at(-1);
88
+ return node;
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ function shouldClose(unclosed, node) {
95
+ if (node === null || !('blockStartPosition' in node))
96
+ return false;
97
+ return ([liquid_html_parser_1.NodeTypes.HtmlElement, liquid_html_parser_1.NodeTypes.LiquidTag, liquid_html_parser_1.NodeTypes.HtmlRawNode].includes(unclosed.type) &&
98
+ (0, liquid_html_parser_1.getName)(node) === unclosed.name);
99
+ }
100
+ function isDanglingHtmlElement(node) {
101
+ return (node !== null &&
102
+ node.type === liquid_html_parser_1.NodeTypes.HtmlElement &&
103
+ node.blockEndPosition.start === node.blockEndPosition.end);
104
+ }
105
+ //# sourceMappingURL=HtmlElementAutoclosingOnTypeFormattingProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlElementAutoclosingOnTypeFormattingProvider.js","sourceRoot":"","sources":["../../../src/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.ts"],"names":[],"mappings":"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"}