@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
package/src/types.ts ADDED
@@ -0,0 +1,173 @@
1
+ import {
2
+ Config,
3
+ Dependencies as ThemeCheckDependencies,
4
+ } from '@platformos/platformos-check-common';
5
+ import { AbstractFileSystem } from '@platformos/platformos-common';
6
+ import { URI } from 'vscode-languageserver';
7
+ import * as rpc from 'vscode-jsonrpc';
8
+
9
+ import { WithOptional } from './utils';
10
+ import { Range } from 'vscode-json-languageservice';
11
+ import { Reference } from '@platformos/platformos-graph';
12
+
13
+ export type Dependencies = WithOptional<
14
+ RequiredDependencies,
15
+ 'log' | 'getMetafieldDefinitions' | 'fetchMetafieldDefinitionsForURI'
16
+ >;
17
+
18
+ export interface RequiredDependencies {
19
+ /**
20
+ * A basic logging function.
21
+ *
22
+ * You might want console.log in development, and bugsnag in production.
23
+ */
24
+ log(message: string): void;
25
+
26
+ /**
27
+ * loadConfig(uri)
28
+ *
29
+ * In local environments, it's possible for one Language Server to deal
30
+ * with a workspace that contains many different configurations. In the
31
+ * browser, it isn't.
32
+ *
33
+ * loadConfig is the runtime-agnostic solution.
34
+ *
35
+ * @example
36
+ *
37
+ * Here's an example VS Code workspace a partner could run
38
+ * ```
39
+ * theme1/
40
+ * src/
41
+ * locales/
42
+ * sections/
43
+ * snippets/
44
+ * dist/
45
+ * locales/
46
+ * sections/
47
+ * foo.liquud
48
+ * snippets/
49
+ * theme2/
50
+ * locales/
51
+ * sections/
52
+ * snippets/
53
+ * ```
54
+ *
55
+ * In this situation, we have 3 different "roots."
56
+ *
57
+ * @param uri - a file path
58
+ * @returns {Promise<Config>}
59
+ */
60
+ loadConfig(uri: URI, fs: AbstractFileSystem): Promise<Config>;
61
+
62
+ /**
63
+ * In local environments, the Language Server can download the latest versions
64
+ * of themes docset from `Shopify/theme-liquid-docs`. However, this is not
65
+ * possible in the browser, so we implement different solutions for each
66
+ * environment.
67
+ */
68
+ themeDocset: NonNullable<ThemeCheckDependencies['themeDocset']>;
69
+
70
+ /**
71
+ * In local environments, the Language Server can download the latest versions
72
+ * of themes schemas from `Shopify/theme-liquid-docs`. Due to limitations in
73
+ * browser environments, json schemas must be precompiled into validators prior
74
+ * to theme-check instantiation.
75
+ */
76
+ jsonValidationSet: NonNullable<ThemeCheckDependencies['jsonValidationSet']>;
77
+
78
+ /**
79
+ * A file system abstraction that allows the Language Server to read files by URI.
80
+ *
81
+ * In Node.js, this is a wrapper around node:fs/promises.
82
+ *
83
+ * In VS Code, this is a wrapper around the VS Code API.
84
+ *
85
+ * The browser accepts a custom implementation.
86
+ */
87
+ fs: AbstractFileSystem;
88
+
89
+ /**
90
+ * In local environments, the Language Server can download the metafield definitions
91
+ * and provide a set of memoized definitions. In other environments, we rely on dynamically
92
+ * fetching the set of metafield definitions every time.
93
+ */
94
+ getMetafieldDefinitions: ThemeCheckDependencies['getMetafieldDefinitions'];
95
+
96
+ /**
97
+ * Fetch Metafield definitions using the CLI provided the URI of the project root.
98
+ * This should only be used in node environments; not on the browser.
99
+ */
100
+ fetchMetafieldDefinitionsForURI: (uri: URI) => Promise<void>;
101
+ }
102
+
103
+ export namespace ThemeGraphReferenceRequest {
104
+ export const method = 'themeGraph/references';
105
+ export const type = new rpc.RequestType<Params, Response, void>(method);
106
+ export interface Params {
107
+ uri: string;
108
+ offset?: number;
109
+ includeIndirect?: boolean;
110
+ }
111
+ export type Response = AugmentedReference[];
112
+ }
113
+
114
+ export namespace ThemeGraphDependenciesRequest {
115
+ export const method = 'themeGraph/dependencies';
116
+ export const type = new rpc.RequestType<Params, Response, void>(method);
117
+ export interface Params {
118
+ uri: string;
119
+ offset?: number;
120
+ includeIndirect?: boolean;
121
+ }
122
+ export type Response = AugmentedReference[];
123
+ }
124
+
125
+ export namespace ThemeGraphRootRequest {
126
+ export const method = 'themeGraph/rootUri';
127
+ export const type = new rpc.RequestType<Params, Response, void>(method);
128
+ export interface Params {
129
+ uri: string;
130
+ }
131
+ export type Response = string;
132
+ }
133
+
134
+ export namespace ThemeGraphDeadCodeRequest {
135
+ export const method = 'themeGraph/deadCode';
136
+ export const type = new rpc.RequestType<Params, Response, void>(method);
137
+ export interface Params {
138
+ uri: string;
139
+ }
140
+ export type Response = string[];
141
+ }
142
+
143
+ export namespace ThemeGraphDidUpdateNotification {
144
+ export const method = 'themeGraph/onDidChangeTree';
145
+ export const type = new rpc.NotificationType<Params>(method);
146
+ export interface Params {
147
+ uri: string;
148
+ }
149
+ }
150
+
151
+ export type AugmentedLocationWithExistence = {
152
+ uri: string;
153
+ range: undefined;
154
+ excerpt: undefined;
155
+ position: undefined;
156
+ exists: boolean;
157
+ };
158
+
159
+ export type AugmentedLocationWithExcerpt = {
160
+ uri: string;
161
+ range: [number, number];
162
+ excerpt: string;
163
+ position: Range;
164
+ exists: boolean;
165
+ };
166
+
167
+ export type AugmentedLocation = AugmentedLocationWithExistence | AugmentedLocationWithExcerpt;
168
+
169
+ export interface AugmentedReference extends Reference {
170
+ source: AugmentedLocation;
171
+ target: AugmentedLocation;
172
+ indirect: boolean;
173
+ }
@@ -0,0 +1,6 @@
1
+ // Array.prototype.findLast is only available in es2023. Which feels too new?
2
+ export function findLast<T>(array: T[], pred: (n: T) => boolean): T | undefined {
3
+ for (let i = array.length - 1; i >= 0; i--) {
4
+ if (pred(array[i])) return array[i];
5
+ }
6
+ }
@@ -0,0 +1,60 @@
1
+ import { ArgumentTypes } from '@platformos/platformos-check-common';
2
+
3
+ export interface DebouncedFunction<F extends Function> {
4
+ /**
5
+ * A function that will execute on the trailing edge of a timer with the
6
+ * last arguments it was called with (unless forced)
7
+ */
8
+ (...args: ArgumentTypes<F>): void;
9
+
10
+ /**
11
+ * Debounced version of a function but making sure that it is called with
12
+ * this specific set of arguments.
13
+ *
14
+ * Subsequent calls will be ignored until the timer has expired and the
15
+ * function has executed.
16
+ */
17
+ force(...args: ArgumentTypes<F>): void;
18
+ }
19
+
20
+ /**
21
+ * debounce(fn, ms)
22
+ *
23
+ * A debounced function only executes once after a timer has expired. Repeated
24
+ * call to the debounced function before its timer has expired result in a delayed
25
+ * execution of the function.
26
+ *
27
+ * This is useful in cases where you have an "expensive" function that you only want
28
+ * to execute after the user is idle for a little bit.
29
+ *
30
+ * e.g. Run theme check after the user has stopped typing for at least 100ms.
31
+ *
32
+ * The debounced function has the same type signature as its argument.
33
+ *
34
+ * The input function must return void (or else you might "bomb" when you resolve).
35
+ *
36
+ * @param fn a function that should be debounced
37
+ * @param ms milliseconds after last function call for it to execute
38
+ * @returns a function that will execute on the trailing edge of a timer with the last argument it was called with
39
+ */
40
+ export function debounce<F extends Function>(fn: F, ms?: number): DebouncedFunction<F> {
41
+ let timeoutId: ReturnType<typeof setTimeout> | null = null;
42
+ let force = false; // force use a certain set of arguments in the next call
43
+
44
+ const debouncedFn = (...args: ArgumentTypes<F>): void => {
45
+ if (timeoutId !== null && force) return;
46
+ if (timeoutId !== null) clearTimeout(timeoutId);
47
+ timeoutId = setTimeout(async () => {
48
+ await Promise.resolve(fn(...args));
49
+ timeoutId = null;
50
+ force = false;
51
+ }, ms);
52
+ };
53
+
54
+ debouncedFn.force = (...args: ArgumentTypes<F>): void => {
55
+ debouncedFn(...args);
56
+ force = true;
57
+ };
58
+
59
+ return debouncedFn;
60
+ }
@@ -0,0 +1,61 @@
1
+ import { LiquidHtmlNode, HtmlElement, NodeTypes } from '@platformos/liquid-html-parser';
2
+ import { TextDocumentPositionParams, Range } from 'vscode-languageserver';
3
+ import { TextDocument } from 'vscode-languageserver-textdocument';
4
+ import { isCovered } from './isCovered';
5
+
6
+ export function getHtmlElementNameRanges(
7
+ node: LiquidHtmlNode,
8
+ ancestors: LiquidHtmlNode[],
9
+ params: TextDocumentPositionParams,
10
+ textDocument: TextDocument,
11
+ ): Range[] | null {
12
+ let htmlElementNode: HtmlElement | null = null;
13
+
14
+ // Try parent node as HTML Element
15
+ // <name> case
16
+ const parentNode = ancestors.at(-1);
17
+ if (
18
+ parentNode &&
19
+ parentNode.type === NodeTypes.HtmlElement &&
20
+ parentNode.name.length > 0 &&
21
+ isCovered(textDocument.offsetAt(params.position), {
22
+ start: parentNode.name[0].position.start,
23
+ end: parentNode.name.at(-1)!.position.end,
24
+ })
25
+ ) {
26
+ htmlElementNode = parentNode;
27
+ }
28
+
29
+ // </name> case
30
+ if (
31
+ node.type === NodeTypes.HtmlElement &&
32
+ node.name.length > 0 &&
33
+ isCovered(textDocument.offsetAt(params.position), node.blockEndPosition)
34
+ ) {
35
+ htmlElementNode = node;
36
+ }
37
+
38
+ if (!htmlElementNode || isDanglingOpenHtmlElement(htmlElementNode)) return null;
39
+
40
+ const nameNodes = htmlElementNode.name;
41
+ const firstNode = nameNodes.at(0)!;
42
+ const lastNode = nameNodes.at(-1)!;
43
+ const startRange = Range.create(
44
+ textDocument.positionAt(firstNode.position.start),
45
+ textDocument.positionAt(lastNode.position.end),
46
+ );
47
+
48
+ const endRange = Range.create(
49
+ // </ means offset 2 characters
50
+ textDocument.positionAt(htmlElementNode.blockEndPosition.start + 2),
51
+ textDocument.positionAt(htmlElementNode.blockEndPosition.end - 1),
52
+ );
53
+
54
+ return [startRange, endRange];
55
+ }
56
+
57
+ export function isDanglingOpenHtmlElement(node: LiquidHtmlNode) {
58
+ return (
59
+ node.type === NodeTypes.HtmlElement && node.blockEndPosition.start === node.blockEndPosition.end
60
+ );
61
+ }
@@ -0,0 +1,12 @@
1
+ export {
2
+ ArgumentTypes,
3
+ WithOptional,
4
+ WithRequired,
5
+ memo,
6
+ memoize,
7
+ parseJSON,
8
+ } from '@platformos/platformos-check-common';
9
+ export * from './debounce';
10
+ export * from './array';
11
+ export * from './node';
12
+ export * from './isCovered';
@@ -0,0 +1,3 @@
1
+ export function isCovered(offset: number, range: { start: number; end: number }): boolean {
2
+ return range.start <= offset && offset <= range.end;
3
+ }
@@ -0,0 +1,167 @@
1
+ import { DocDefinition } from '@platformos/platformos-check-common';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { formatLiquidDocContentMarkdown, formatLiquidDocParameter } from './liquidDoc';
4
+
5
+ describe('Module: liquidDoc', async () => {
6
+ describe('formatLiquidDocContentMarkdown', async () => {
7
+ const name = 'product-card';
8
+
9
+ const mockDocDefinition: DocDefinition = {
10
+ uri: `file:///${name}.liquid`,
11
+ liquidDoc: {
12
+ parameters: [
13
+ {
14
+ name: 'title',
15
+ description: 'The title of the product',
16
+ type: 'string',
17
+ required: true,
18
+ nodeType: 'param',
19
+ },
20
+ {
21
+ name: 'border-radius',
22
+ description: 'The border radius in px',
23
+ type: 'number',
24
+ required: false,
25
+ nodeType: 'param',
26
+ },
27
+ {
28
+ name: 'no-type',
29
+ description: 'This parameter has no type',
30
+ type: null,
31
+ required: true,
32
+ nodeType: 'param',
33
+ },
34
+ {
35
+ name: 'no-description',
36
+ description: null,
37
+ type: 'string',
38
+ required: true,
39
+ nodeType: 'param',
40
+ },
41
+ {
42
+ name: 'no-type-or-description',
43
+ description: null,
44
+ type: null,
45
+ required: true,
46
+ nodeType: 'param',
47
+ },
48
+ ],
49
+ description: {
50
+ content: 'This is a description',
51
+ nodeType: 'description',
52
+ },
53
+ examples: [
54
+ {
55
+ content: '{{ product }}',
56
+ nodeType: 'example',
57
+ },
58
+ {
59
+ content: '{{ product.title }}',
60
+ nodeType: 'example',
61
+ },
62
+ ],
63
+ },
64
+ };
65
+
66
+ it('should format the LiquidDoc content correctly', async () => {
67
+ // prettier-ignore
68
+ const expectedHoverContent =
69
+ `### ${name}
70
+
71
+ **Description:**
72
+
73
+
74
+ This is a description
75
+
76
+ **Parameters:**
77
+ - \`title\`: string - The title of the product
78
+ - \`border-radius\` (Optional): number - The border radius in px
79
+ - \`no-type\` - This parameter has no type
80
+ - \`no-description\`: string
81
+ - \`no-type-or-description\`
82
+
83
+ **Examples:**
84
+ \`\`\`liquid
85
+ {{ product }}
86
+ \`\`\`
87
+ \`\`\`liquid
88
+ {{ product.title }}
89
+ \`\`\``;
90
+
91
+ const result = formatLiquidDocContentMarkdown(name, mockDocDefinition);
92
+ expect(result).toEqual(expectedHoverContent);
93
+ });
94
+
95
+ it('should only return name if LiquidDocDefinition found', async () => {
96
+ const expectedHoverContent = `### ${name}`;
97
+
98
+ const result = formatLiquidDocContentMarkdown(name);
99
+ expect(result).toEqual(expectedHoverContent);
100
+ });
101
+ });
102
+
103
+ describe('formatLiquidDocParameter', async () => {
104
+ it('should format a required parameter correctly', async () => {
105
+ expect(
106
+ formatLiquidDocParameter({
107
+ name: 'title',
108
+ description: 'The title of the product',
109
+ type: 'string',
110
+ required: true,
111
+ nodeType: 'param',
112
+ }),
113
+ ).toEqual('- `title`: string - The title of the product');
114
+ });
115
+
116
+ it('should format an optional parameter correctly', async () => {
117
+ expect(
118
+ formatLiquidDocParameter({
119
+ name: 'title',
120
+ description: 'The title of the product',
121
+ type: 'string',
122
+ required: false,
123
+ nodeType: 'param',
124
+ }),
125
+ ).toEqual('- `title` (Optional): string - The title of the product');
126
+ });
127
+
128
+ it('should format a parameter with no type correctly', async () => {
129
+ expect(
130
+ formatLiquidDocParameter({
131
+ name: 'title',
132
+ description: 'The title of the product',
133
+ type: null,
134
+ required: true,
135
+ nodeType: 'param',
136
+ }),
137
+ ).toEqual('- `title` - The title of the product');
138
+ });
139
+
140
+ it('should format a parameter with no description correctly', async () => {
141
+ expect(
142
+ formatLiquidDocParameter({
143
+ name: 'title',
144
+ description: null,
145
+ type: null,
146
+ required: true,
147
+ nodeType: 'param',
148
+ }),
149
+ ).toEqual('- `title`');
150
+ });
151
+
152
+ it('should format a parameter when it is meant to be in a header', async () => {
153
+ expect(
154
+ formatLiquidDocParameter(
155
+ {
156
+ name: 'title',
157
+ description: 'The title of the product',
158
+ type: 'string',
159
+ required: true,
160
+ nodeType: 'param',
161
+ },
162
+ true,
163
+ ),
164
+ ).toEqual('### `title`: string\n\nThe title of the product');
165
+ });
166
+ });
167
+ });
@@ -0,0 +1,102 @@
1
+ import {
2
+ BasicParamTypes,
3
+ DocDefinition,
4
+ getDefaultValueForType,
5
+ LiquidDocParameter,
6
+ SupportedDocTagTypes,
7
+ } from '@platformos/platformos-check-common';
8
+
9
+ export function formatLiquidDocParameter(
10
+ { name, type, description, required }: LiquidDocParameter,
11
+ heading: boolean = false,
12
+ ) {
13
+ const nameStr = required ? `\`${name}\`` : `\`${name}\` (Optional)`;
14
+ const typeStr = type ? `: ${type}` : '';
15
+
16
+ if (heading) {
17
+ const descStr = description ? `\n\n${description}` : '';
18
+ return `### ${nameStr}${typeStr}${descStr}`;
19
+ }
20
+
21
+ const descStr = description ? ` - ${description}` : '';
22
+ return `- ${nameStr}${typeStr}${descStr}`;
23
+ }
24
+
25
+ export function formatLiquidDocTagHandle(label: string, description: string, example: string) {
26
+ return `### @${label}\n\n${description}\n\n` + `**Example**\n\n\`\`\`liquid\n${example}\n\`\`\``;
27
+ }
28
+
29
+ export const SUPPORTED_LIQUID_DOC_TAG_HANDLES = {
30
+ [SupportedDocTagTypes.Param]: {
31
+ description:
32
+ 'Provides information about a parameter for the snippet.\n' +
33
+ `- The type of parameter is optional and can be ${Object.values(BasicParamTypes)
34
+ .map((type) => `\`${type}\``)
35
+ .join(', ')}\n` +
36
+ ` or liquid object that isn't exclusively a global object in our [API Docs](https://shopify.dev/docs/api/liquid/objects)\n` +
37
+ '- An optional parameter is denoted by square brackets around the parameter name\n' +
38
+ '- The description is optional Markdown text',
39
+ example:
40
+ '{% doc %}\n' +
41
+ " @param {string} name - The person's name\n" +
42
+ " @param {number} [fav_num] - The person's favorite number\n" +
43
+ " @param {product} prod - The person's chosen product\n" +
44
+ '{% enddoc %}\n',
45
+ template: `param {$2} $1$0`,
46
+ },
47
+ [SupportedDocTagTypes.Example]: {
48
+ description: 'Provides an example on how to use the snippet.',
49
+ example:
50
+ '{% doc %}\n' + ' @example {% render "snippet-name", arg1: "value" %}\n' + '{% enddoc %}\n',
51
+ template: `example $0`,
52
+ },
53
+ [SupportedDocTagTypes.Description]: {
54
+ description: 'Provides information on what the snippet does.',
55
+ example:
56
+ '{% doc %}\n' + ' @description This snippet renders a product image.\n' + '{% enddoc %}\n',
57
+ template: `description $0`,
58
+ },
59
+ };
60
+
61
+ export function getParameterCompletionTemplate(name: string, type: string | null) {
62
+ const paramDefaultValue = getDefaultValueForType(type);
63
+
64
+ const valueTemplate = paramDefaultValue === "''" ? `'$1'$0` : `\${1:${paramDefaultValue}}$0`;
65
+
66
+ return `${name}: ${valueTemplate}`;
67
+ }
68
+
69
+ export function formatLiquidDocContentMarkdown(
70
+ name: string,
71
+ docDefinition?: DocDefinition,
72
+ ): string {
73
+ const liquidDoc = docDefinition?.liquidDoc;
74
+
75
+ if (!liquidDoc) {
76
+ return `### ${name}`;
77
+ }
78
+
79
+ const parts = [`### ${name}`];
80
+
81
+ if (liquidDoc.description) {
82
+ const description = liquidDoc.description.content;
83
+ parts.push('', '**Description:**', '\n', description);
84
+ }
85
+
86
+ if (liquidDoc.parameters?.length) {
87
+ const parameters = liquidDoc.parameters
88
+ .map((param) => formatLiquidDocParameter(param))
89
+ .join('\n');
90
+ parts.push('', '**Parameters:**', parameters);
91
+ }
92
+
93
+ if (liquidDoc.examples?.length) {
94
+ const examples = liquidDoc.examples
95
+ ?.map(({ content }) => `\`\`\`liquid\n${content}\n\`\`\``)
96
+ .join('\n');
97
+
98
+ parts.push('', '**Examples:**', examples);
99
+ }
100
+
101
+ return parts.join('\n');
102
+ }
@@ -0,0 +1,69 @@
1
+ import {
2
+ AttrEmpty,
3
+ LiquidHtmlNode,
4
+ NamedTags,
5
+ NodeTypes,
6
+ TextNode,
7
+ } from '@platformos/liquid-html-parser';
8
+ import { LiquidHtmlNodeOfType as NodeOfType } from '@platformos/platformos-check-common';
9
+
10
+ export type HtmlElementTypes = (typeof HtmlElementTypes)[number];
11
+ export const HtmlElementTypes = [
12
+ NodeTypes.HtmlElement,
13
+ NodeTypes.HtmlDanglingMarkerClose,
14
+ NodeTypes.HtmlSelfClosingElement,
15
+ NodeTypes.HtmlVoidElement,
16
+ NodeTypes.HtmlRawNode,
17
+ ] as const;
18
+ export type NamedHtmlElementNode = NodeOfType<HtmlElementTypes>;
19
+
20
+ export type HtmlAttributeTypes = (typeof HtmlAttributeTypes)[number];
21
+ export type HtmlAttribute = NodeOfType<HtmlAttributeTypes>;
22
+ export const HtmlAttributeTypes = [
23
+ NodeTypes.AttrUnquoted,
24
+ NodeTypes.AttrDoubleQuoted,
25
+ NodeTypes.AttrSingleQuoted,
26
+ NodeTypes.AttrEmpty,
27
+ ] as const;
28
+
29
+ export function isTextNode(node: LiquidHtmlNode): node is TextNode {
30
+ return node.type === NodeTypes.TextNode;
31
+ }
32
+
33
+ export function isAttrEmpty(node: LiquidHtmlNode): node is AttrEmpty {
34
+ return node.type === NodeTypes.AttrEmpty;
35
+ }
36
+
37
+ export function isNamedHtmlElementNode(node: LiquidHtmlNode): node is NamedHtmlElementNode {
38
+ return (HtmlElementTypes as readonly NodeTypes[]).includes(node.type);
39
+ }
40
+
41
+ export function getCompoundName(node: NamedHtmlElementNode | HtmlAttribute): string {
42
+ if (typeof node.name === 'string') return node.name;
43
+
44
+ const names = node.name;
45
+ if (names.length === 0 || names.length > 1 || !isTextNode(names[0])) {
46
+ return 'unknown';
47
+ }
48
+
49
+ return names[0].value;
50
+ }
51
+
52
+ export function isHtmlAttribute(node: LiquidHtmlNode): node is HtmlAttribute {
53
+ return HtmlAttributeTypes.some((type) => node.type === type);
54
+ }
55
+
56
+ type ExcludeStringMarkup<T> = T extends { markup: string } ? never : T;
57
+
58
+ export function isNamedLiquidTag<NT extends LiquidHtmlNode, T extends NamedTags>(
59
+ node: LiquidHtmlNode,
60
+ name: T,
61
+ ): node is ExcludeStringMarkup<Extract<NT, { type: NodeTypes.LiquidTag; name: T }>> {
62
+ return node.type === NodeTypes.LiquidTag && node.name === name && typeof node.markup !== 'string';
63
+ }
64
+
65
+ export function isLiquidVariableOutput<NT extends LiquidHtmlNode>(
66
+ node: LiquidHtmlNode,
67
+ ): node is ExcludeStringMarkup<Extract<NT, { type: NodeTypes.LiquidVariableOutput }>> {
68
+ return node.type === NodeTypes.LiquidVariableOutput && typeof node.markup !== 'string';
69
+ }
@@ -0,0 +1,22 @@
1
+ import { path } from '@platformos/platformos-check-common';
2
+
3
+ export const partialName = (uri: string) => path.basename(uri, '.liquid');
4
+ export const isPartial = (uri: string) => /\b(partials|lib)(\\|\/)[^\\\/]*\.liquid/.test(uri);
5
+
6
+ // asset urls have their `.liquid`` removed (if present) and require the other extension */
7
+ export const assetName = (uri: string) => path.basename(uri, '.liquid');
8
+ export const isAsset = (uri: string) => /\bassets(\\|\/)[^\\\/]/.test(uri);
9
+
10
+ export const blockName = (uri: string) => path.basename(uri, '.liquid');
11
+ export const isBlock = (uri: string) => /\bblocks(\\|\/)[^\\\/]/.test(uri);
12
+
13
+ export const sectionName = (uri: string) => path.basename(uri, '.liquid');
14
+ export const isSection = (uri: string) =>
15
+ /\bsections(\\|\/)[^\\\/]/.test(uri) && /.liquid$/.test(uri);
16
+
17
+ export const sectionGroupName = (uri: string) => path.basename(uri, '.json');
18
+ export const isSectionGroup = (uri: string) =>
19
+ /\bsections(\\|\/)[^\\\/]/.test(uri) && /.json$/.test(uri);
20
+
21
+ export const templateName = (uri: string) => path.basename(uri, '.json');
22
+ export const isTemplate = (uri: string) => /\btemplates(\\|\/)[^\\\/]/.test(uri);
package/src/version.ts ADDED
@@ -0,0 +1,3 @@
1
+ import packageJson from '../package.json';
2
+
3
+ export const VERSION: string = packageJson.version;