@platformos/platformos-language-server-common 0.0.7 → 0.0.9

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 (249) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/PropertyShapeInference.d.ts +18 -0
  3. package/dist/PropertyShapeInference.js +62 -0
  4. package/dist/PropertyShapeInference.js.map +1 -1
  5. package/dist/TypeSystem.d.ts +4 -9
  6. package/dist/TypeSystem.js +246 -390
  7. package/dist/TypeSystem.js.map +1 -1
  8. package/dist/codeActions/providers/GenerateDocBlockProvider.d.ts +10 -0
  9. package/dist/codeActions/providers/GenerateDocBlockProvider.js +39 -0
  10. package/dist/codeActions/providers/GenerateDocBlockProvider.js.map +1 -0
  11. package/dist/commands/providers/GenerateDocBlockCommandProvider.d.ts +19 -0
  12. package/dist/commands/providers/GenerateDocBlockCommandProvider.js +64 -0
  13. package/dist/commands/providers/GenerateDocBlockCommandProvider.js.map +1 -0
  14. package/dist/completions/CompletionsProvider.d.ts +6 -10
  15. package/dist/completions/CompletionsProvider.js +6 -9
  16. package/dist/completions/CompletionsProvider.js.map +1 -1
  17. package/dist/completions/params/LiquidCompletionParams.js +6 -17
  18. package/dist/completions/params/LiquidCompletionParams.js.map +1 -1
  19. package/dist/completions/providers/ContentForCompletionProvider.js +2 -4
  20. package/dist/completions/providers/ContentForCompletionProvider.js.map +1 -1
  21. package/dist/completions/providers/FilterNamedParameterCompletionProvider.d.ts +3 -3
  22. package/dist/completions/providers/FilterNamedParameterCompletionProvider.js +6 -6
  23. package/dist/completions/providers/FilterNamedParameterCompletionProvider.js.map +1 -1
  24. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.d.ts +3 -3
  25. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js +3 -3
  26. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js.map +1 -1
  27. package/dist/completions/providers/LiquidTagsCompletionProvider.d.ts +3 -3
  28. package/dist/completions/providers/LiquidTagsCompletionProvider.js +3 -3
  29. package/dist/completions/providers/LiquidTagsCompletionProvider.js.map +1 -1
  30. package/dist/completions/providers/RenderPartialParameterCompletionProvider.js +1 -1
  31. package/dist/completions/providers/RenderPartialParameterCompletionProvider.js.map +1 -1
  32. package/dist/completions/providers/index.d.ts +0 -3
  33. package/dist/completions/providers/index.js +1 -7
  34. package/dist/completions/providers/index.js.map +1 -1
  35. package/dist/css/CSSLanguageService.d.ts +19 -5
  36. package/dist/css/CSSLanguageService.js +77 -63
  37. package/dist/css/CSSLanguageService.js.map +1 -1
  38. package/dist/definitions/DefinitionProvider.d.ts +1 -1
  39. package/dist/definitions/DefinitionProvider.js +1 -3
  40. package/dist/definitions/DefinitionProvider.js.map +1 -1
  41. package/dist/diagnostics/offenseToDiagnostic.js +1 -1
  42. package/dist/diagnostics/offenseToDiagnostic.js.map +1 -1
  43. package/dist/diagnostics/runChecks.d.ts +3 -5
  44. package/dist/diagnostics/runChecks.js +12 -64
  45. package/dist/diagnostics/runChecks.js.map +1 -1
  46. package/dist/docset/MarkdownRenderer.js +1 -1
  47. package/dist/docset/MarkdownRenderer.js.map +1 -1
  48. package/dist/documentLinks/DocumentLinksProvider.d.ts +3 -3
  49. package/dist/documentLinks/DocumentLinksProvider.js +3 -3
  50. package/dist/documentLinks/DocumentLinksProvider.js.map +1 -1
  51. package/dist/documents/DocumentManager.d.ts +4 -5
  52. package/dist/documents/DocumentManager.js +17 -12
  53. package/dist/documents/DocumentManager.js.map +1 -1
  54. package/dist/documents/types.d.ts +16 -3
  55. package/dist/documents/types.js +3 -3
  56. package/dist/documents/types.js.map +1 -1
  57. package/dist/hover/HoverProvider.d.ts +5 -8
  58. package/dist/hover/HoverProvider.js +8 -14
  59. package/dist/hover/HoverProvider.js.map +1 -1
  60. package/dist/hover/providers/LiquidFilterArgumentHoverProvider.d.ts +3 -3
  61. package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js +3 -3
  62. package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js.map +1 -1
  63. package/dist/hover/providers/LiquidFilterHoverProvider.d.ts +3 -3
  64. package/dist/hover/providers/LiquidFilterHoverProvider.js +3 -3
  65. package/dist/hover/providers/LiquidFilterHoverProvider.js.map +1 -1
  66. package/dist/hover/providers/LiquidTagHoverProvider.d.ts +3 -3
  67. package/dist/hover/providers/LiquidTagHoverProvider.js +3 -3
  68. package/dist/hover/providers/LiquidTagHoverProvider.js.map +1 -1
  69. package/dist/hover/providers/RenderPartialHoverProvider.js +1 -1
  70. package/dist/hover/providers/RenderPartialHoverProvider.js.map +1 -1
  71. package/dist/hover/providers/RenderPartialParameterHoverProvider.js +1 -1
  72. package/dist/hover/providers/RenderPartialParameterHoverProvider.js.map +1 -1
  73. package/dist/hover/providers/TranslationHoverProvider.d.ts +3 -3
  74. package/dist/hover/providers/TranslationHoverProvider.js +3 -3
  75. package/dist/hover/providers/TranslationHoverProvider.js.map +1 -1
  76. package/dist/index.d.ts +1 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/internal-types.d.ts +1 -1
  79. package/dist/json/JSONContributions.d.ts +1 -5
  80. package/dist/json/JSONContributions.js +4 -36
  81. package/dist/json/JSONContributions.js.map +1 -1
  82. package/dist/json/JSONLanguageService.d.ts +4 -12
  83. package/dist/json/JSONLanguageService.js +17 -80
  84. package/dist/json/JSONLanguageService.js.map +1 -1
  85. package/dist/json/test/test-helpers.d.ts +1 -3
  86. package/dist/json/test/test-helpers.js +3 -19
  87. package/dist/json/test/test-helpers.js.map +1 -1
  88. package/dist/json/utils.d.ts +0 -5
  89. package/dist/json/utils.js +0 -24
  90. package/dist/json/utils.js.map +1 -1
  91. package/dist/rename/RenameProvider.d.ts +2 -2
  92. package/dist/rename/RenameProvider.js +2 -2
  93. package/dist/rename/RenameProvider.js.map +1 -1
  94. package/dist/rename/providers/LiquidVariableRenameProvider.d.ts +3 -3
  95. package/dist/rename/providers/LiquidVariableRenameProvider.js +4 -4
  96. package/dist/rename/providers/LiquidVariableRenameProvider.js.map +1 -1
  97. package/dist/renamed/RenameHandler.d.ts +2 -3
  98. package/dist/renamed/RenameHandler.js +3 -8
  99. package/dist/renamed/RenameHandler.js.map +1 -1
  100. package/dist/renamed/handlers/AssetRenameHandler.d.ts +3 -3
  101. package/dist/renamed/handlers/AssetRenameHandler.js +5 -5
  102. package/dist/renamed/handlers/AssetRenameHandler.js.map +1 -1
  103. package/dist/renamed/handlers/PartialRenameHandler.d.ts +3 -3
  104. package/dist/renamed/handlers/PartialRenameHandler.js +5 -5
  105. package/dist/renamed/handlers/PartialRenameHandler.js.map +1 -1
  106. package/dist/renamed/handlers/utils.d.ts +1 -1
  107. package/dist/server/AppGraphManager.d.ts +32 -0
  108. package/dist/server/AppGraphManager.js +155 -0
  109. package/dist/server/AppGraphManager.js.map +1 -0
  110. package/dist/server/startServer.d.ts +2 -2
  111. package/dist/server/startServer.js +62 -164
  112. package/dist/server/startServer.js.map +1 -1
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/dist/types.d.ts +33 -54
  115. package/dist/types.js +21 -26
  116. package/dist/types.js.map +1 -1
  117. package/dist/utils/liquidDoc.js +1 -1
  118. package/dist/utils/liquidDoc.js.map +1 -1
  119. package/dist/utils/uri.d.ts +2 -9
  120. package/dist/utils/uri.js +5 -21
  121. package/dist/utils/uri.js.map +1 -1
  122. package/package.json +4 -4
  123. package/src/ClientCapabilities.ts +1 -1
  124. package/src/PropertyShapeInference.ts +81 -1
  125. package/src/TypeSystem.spec.ts +206 -449
  126. package/src/TypeSystem.ts +267 -460
  127. package/src/codeActions/providers/FixAllProvider.spec.ts +1 -1
  128. package/src/codeActions/providers/FixProvider.spec.ts +11 -11
  129. package/src/codeActions/providers/SuggestionProvider.spec.ts +2 -2
  130. package/src/commands/providers/ApplyFixesProvider.ts +2 -2
  131. package/src/commands/providers/ApplySuggestionProvider.ts +2 -2
  132. package/src/commands/providers/RunChecksProvider.ts +2 -2
  133. package/src/completions/CompletionsProvider.ts +14 -35
  134. package/src/completions/params/LiquidCompletionParams.spec.ts +0 -9
  135. package/src/completions/params/LiquidCompletionParams.ts +8 -17
  136. package/src/completions/params/fix.spec.ts +0 -3
  137. package/src/completions/providers/FilterCompletionProvider.spec.ts +2 -8
  138. package/src/completions/providers/FilterNamedParameterCompletionProvider.spec.ts +1 -5
  139. package/src/completions/providers/FilterNamedParameterCompletionProvider.ts +6 -6
  140. package/src/completions/providers/HtmlAttributeCompletionProvider.spec.ts +1 -4
  141. package/src/completions/providers/HtmlAttributeValueCompletionProvider.spec.ts +1 -4
  142. package/src/completions/providers/HtmlTagCompletionProvider.spec.ts +1 -4
  143. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.spec.ts +1 -28
  144. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.ts +3 -3
  145. package/src/completions/providers/LiquidDocTagCompletionProvider.spec.ts +1 -26
  146. package/src/completions/providers/LiquidTagsCompletionProvider.spec.ts +4 -18
  147. package/src/completions/providers/LiquidTagsCompletionProvider.ts +3 -3
  148. package/src/completions/providers/ObjectAttributeCompletionProvider.spec.ts +2 -31
  149. package/src/completions/providers/ObjectCompletionProvider.spec.ts +34 -123
  150. package/src/completions/providers/PartialCompletionProvider.spec.ts +6 -15
  151. package/src/completions/providers/RenderPartialParameterCompletionProvider.spec.ts +13 -15
  152. package/src/completions/providers/RenderPartialParameterCompletionProvider.ts +2 -3
  153. package/src/completions/providers/TranslationCompletionProvider.spec.ts +1 -4
  154. package/src/completions/providers/TranslationCompletionProvider.ts +3 -3
  155. package/src/completions/providers/index.ts +0 -3
  156. package/src/css/CSSLanguageService.ts +97 -81
  157. package/src/definitions/DefinitionProvider.ts +0 -6
  158. package/src/definitions/providers/TranslationStringDefinitionProvider.spec.ts +1 -5
  159. package/src/diagnostics/offenseToDiagnostic.ts +1 -1
  160. package/src/diagnostics/runChecks.spec.ts +22 -30
  161. package/src/diagnostics/runChecks.ts +17 -91
  162. package/src/docset/MarkdownRenderer.ts +1 -1
  163. package/src/documentLinks/DocumentLinksProvider.ts +10 -10
  164. package/src/documents/DocumentManager.spec.ts +46 -119
  165. package/src/documents/DocumentManager.ts +19 -15
  166. package/src/documents/types.ts +18 -9
  167. package/src/hover/HoverProvider.ts +9 -21
  168. package/src/hover/providers/HtmlAttributeHoverProvider.spec.ts +1 -3
  169. package/src/hover/providers/HtmlAttributeValueHoverProvider.spec.ts +1 -3
  170. package/src/hover/providers/HtmlTagHoverProvider.spec.ts +1 -3
  171. package/src/hover/providers/LiquidDocTagHoverProvider.spec.ts +1 -4
  172. package/src/hover/providers/LiquidFilterArgumentHoverProvider.spec.ts +0 -3
  173. package/src/hover/providers/LiquidFilterArgumentHoverProvider.ts +3 -3
  174. package/src/hover/providers/LiquidFilterHoverProvider.spec.ts +0 -3
  175. package/src/hover/providers/LiquidFilterHoverProvider.ts +3 -3
  176. package/src/hover/providers/LiquidObjectAttributeHoverProvider.spec.ts +1 -3
  177. package/src/hover/providers/LiquidObjectHoverProvider.spec.ts +46 -129
  178. package/src/hover/providers/LiquidTagHoverProvider.spec.ts +0 -3
  179. package/src/hover/providers/LiquidTagHoverProvider.ts +3 -3
  180. package/src/hover/providers/RenderPartialHoverProvider.spec.ts +11 -14
  181. package/src/hover/providers/RenderPartialHoverProvider.ts +1 -5
  182. package/src/hover/providers/RenderPartialParameterHoverProvider.spec.ts +10 -13
  183. package/src/hover/providers/RenderPartialParameterHoverProvider.ts +2 -3
  184. package/src/hover/providers/TranslationHoverProvider.spec.ts +1 -4
  185. package/src/hover/providers/TranslationHoverProvider.ts +3 -3
  186. package/src/index.ts +4 -7
  187. package/src/internal-types.ts +1 -1
  188. package/src/json/JSONContributions.ts +4 -61
  189. package/src/json/JSONLanguageService.ts +19 -117
  190. package/src/json/test/test-helpers.ts +4 -35
  191. package/src/json/utils.ts +0 -27
  192. package/src/rename/RenameProvider.ts +4 -4
  193. package/src/rename/providers/LiquidVariableRenameProvider.spec.ts +5 -5
  194. package/src/rename/providers/LiquidVariableRenameProvider.ts +6 -6
  195. package/src/renamed/RenameHandler.ts +4 -9
  196. package/src/renamed/handlers/AssetRenameHandler.spec.ts +28 -28
  197. package/src/renamed/handlers/AssetRenameHandler.ts +6 -6
  198. package/src/renamed/handlers/PartialRenameHandler.spec.ts +9 -9
  199. package/src/renamed/handlers/PartialRenameHandler.ts +10 -10
  200. package/src/server/{ThemeGraphManager.ts → AppGraphManager.ts} +21 -90
  201. package/src/server/safe.ts +1 -1
  202. package/src/server/startServer.spec.ts +10 -12
  203. package/src/server/startServer.ts +69 -222
  204. package/src/test/CompletionItemsAssertion.spec.ts +1 -4
  205. package/src/types.ts +33 -63
  206. package/src/utils/debounce.ts +1 -1
  207. package/src/utils/liquidDoc.ts +6 -6
  208. package/src/utils/uri.ts +5 -17
  209. package/src/completions/providers/ContentForBlockTypeCompletionProvider.spec.ts +0 -41
  210. package/src/completions/providers/ContentForBlockTypeCompletionProvider.ts +0 -42
  211. package/src/completions/providers/ContentForCompletionProvider.spec.ts +0 -96
  212. package/src/completions/providers/ContentForCompletionProvider.ts +0 -113
  213. package/src/completions/providers/ContentForParameterCompletionProvider.spec.ts +0 -362
  214. package/src/completions/providers/ContentForParameterCompletionProvider.ts +0 -187
  215. package/src/completions/providers/data/contentForParameterCompletionOptions.ts +0 -9
  216. package/src/css/CSSLanguageService.spec.ts +0 -159
  217. package/src/css/test/test-helpers.ts +0 -30
  218. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.spec.ts +0 -96
  219. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.ts +0 -82
  220. package/src/hover/providers/ContentForArgumentHoverProvider.spec.ts +0 -76
  221. package/src/hover/providers/ContentForArgumentHoverProvider.ts +0 -56
  222. package/src/hover/providers/ContentForTypeHoverProvider.spec.ts +0 -91
  223. package/src/hover/providers/ContentForTypeHoverProvider.ts +0 -42
  224. package/src/json/JSONLanguageService.spec.ts +0 -424
  225. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.spec.ts +0 -163
  226. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.ts +0 -121
  227. package/src/json/completions/providers/BlockTypeCompletionProvider.spec.ts +0 -137
  228. package/src/json/completions/providers/BlockTypeCompletionProvider.ts +0 -108
  229. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.spec.ts +0 -132
  230. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.ts +0 -120
  231. package/src/json/completions/providers/SchemaTranslationCompletionProvider.ts +0 -51
  232. package/src/json/completions/providers/SettingsPropertyCompletionProvider.spec.ts +0 -211
  233. package/src/json/completions/providers/SettingsPropertyCompletionProvider.ts +0 -75
  234. package/src/json/documentLinks/DocumentLinksProvider.spec.ts +0 -223
  235. package/src/json/documentLinks/DocumentLinksProvider.ts +0 -61
  236. package/src/json/hover/providers/BlockSettingsHoverProvider.spec.ts +0 -292
  237. package/src/json/hover/providers/BlockSettingsHoverProvider.ts +0 -99
  238. package/src/json/hover/providers/SchemaTranslationHoverProvider.ts +0 -35
  239. package/src/json/hover/providers/SettingsHoverProvider.spec.ts +0 -139
  240. package/src/json/hover/providers/SettingsHoverProvider.ts +0 -79
  241. package/src/json/schemaSettings.spec.ts +0 -103
  242. package/src/json/schemaSettings.ts +0 -53
  243. package/src/plugins/css.ts +0 -12
  244. package/src/renamed/handlers/BlockRenameHandler.spec.ts +0 -399
  245. package/src/renamed/handlers/BlockRenameHandler.ts +0 -402
  246. package/src/renamed/handlers/SectionRenameHandler.spec.ts +0 -321
  247. package/src/renamed/handlers/SectionRenameHandler.ts +0 -224
  248. package/src/renamed/handlers/utils.ts +0 -22
  249. package/src/settings/index.ts +0 -50
@@ -1,11 +1,11 @@
1
1
  import { NodeTypes } from '@platformos/liquid-html-parser';
2
- import { LiquidHtmlNode, ThemeDocset } from '@platformos/platformos-check-common';
2
+ import { LiquidHtmlNode, PlatformOSDocset } from '@platformos/platformos-check-common';
3
3
  import { Hover } from 'vscode-languageserver';
4
4
  import { render } from '../../docset';
5
5
  import { BaseHoverProvider } from '../BaseHoverProvider';
6
6
 
7
7
  export class LiquidFilterHoverProvider implements BaseHoverProvider {
8
- constructor(private themeDocset: ThemeDocset) {}
8
+ constructor(private platformosDocset: PlatformOSDocset) {}
9
9
 
10
10
  async hover(currentNode: LiquidHtmlNode): Promise<Hover | null> {
11
11
  if (currentNode.type !== NodeTypes.LiquidFilter) {
@@ -13,7 +13,7 @@ export class LiquidFilterHoverProvider implements BaseHoverProvider {
13
13
  }
14
14
 
15
15
  const name = currentNode.name;
16
- const entries = await this.themeDocset.filters();
16
+ const entries = await this.platformosDocset.filters();
17
17
  const entry = entries.find((entry) => entry.name === name);
18
18
  if (!entry) {
19
19
  return null;
@@ -1,7 +1,7 @@
1
1
  import { describe, beforeEach, it, expect } from 'vitest';
2
2
  import { DocumentManager } from '../../documents';
3
3
  import { HoverProvider } from '../HoverProvider';
4
- import { MetafieldDefinitionMap, ObjectEntry } from '@platformos/platformos-check-common';
4
+ import { ObjectEntry } from '@platformos/platformos-check-common';
5
5
  import { TranslationProvider } from '@platformos/platformos-common';
6
6
  import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
7
7
 
@@ -57,10 +57,8 @@ describe('Module: LiquidObjectAttributeHoverProvider', async () => {
57
57
  objects: async () => _objects,
58
58
  liquidDrops: async () => _objects,
59
59
  tags: async () => [],
60
- systemTranslations: async () => ({}),
61
60
  },
62
61
  new TranslationProvider(new MockFileSystem({})),
63
- async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
64
62
  );
65
63
  });
66
64
 
@@ -1,7 +1,7 @@
1
1
  import { describe, beforeEach, it, expect } from 'vitest';
2
2
  import { DocumentManager } from '../../documents';
3
3
  import { HoverProvider } from '../HoverProvider';
4
- import { MetafieldDefinitionMap, ObjectEntry } from '@platformos/platformos-check-common';
4
+ import { ObjectEntry } from '@platformos/platformos-check-common';
5
5
  import { TranslationProvider } from '@platformos/platformos-common';
6
6
  import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
7
7
 
@@ -11,29 +11,36 @@ describe('Module: LiquidObjectHoverProvider', async () => {
11
11
  beforeEach(async () => {
12
12
  const _objects: ObjectEntry[] = [
13
13
  {
14
- name: 'product',
15
- description: 'product description',
14
+ name: 'context',
15
+ description: 'context description',
16
+ access: { global: true, parents: [], template: [] },
16
17
  return_type: [],
17
18
  properties: [
18
19
  {
19
- name: 'featured_image',
20
- return_type: [{ type: 'image', name: '' }],
20
+ name: 'posts',
21
+ return_type: [{ type: 'array', array_value: 'post' }],
21
22
  },
22
23
  {
23
- name: 'title',
24
- return_type: [{ type: 'string', name: '' }],
24
+ name: 'current_user',
25
+ return_type: [{ type: 'current_user', name: '' }],
25
26
  },
26
- { name: 'metafields' },
27
27
  ],
28
28
  },
29
29
  {
30
- name: 'all_products',
31
- return_type: [{ type: 'array', array_value: 'product' }],
32
- },
33
- {
34
- name: 'paginate',
35
- access: { global: false, parents: [], template: [] },
30
+ name: 'post',
31
+ description: 'post description',
36
32
  return_type: [],
33
+ properties: [
34
+ {
35
+ name: 'thumbnail',
36
+ return_type: [{ type: 'image', name: '' }],
37
+ },
38
+ {
39
+ name: 'title',
40
+ return_type: [{ type: 'string', name: '' }],
41
+ },
42
+ { name: 'metadata' },
43
+ ],
37
44
  },
38
45
  {
39
46
  name: 'forloop',
@@ -50,46 +57,10 @@ describe('Module: LiquidObjectHoverProvider', async () => {
50
57
  description: 'image description',
51
58
  access: { global: false, parents: [], template: [] },
52
59
  },
53
- {
54
- name: 'section',
55
- access: { global: false, parents: [], template: [] },
56
- },
57
- {
58
- name: 'block',
59
- access: { global: false, parents: [], template: [] },
60
- },
61
60
  {
62
61
  name: 'app',
63
62
  access: { global: false, parents: [], template: [] },
64
63
  },
65
- {
66
- name: 'predictive_search',
67
- access: { global: false, parents: [], template: [] },
68
- },
69
- {
70
- name: 'recommendations',
71
- access: { global: false, parents: [], template: [] },
72
- },
73
- {
74
- name: 'metafield',
75
- access: {
76
- global: false,
77
- template: [],
78
- parents: [],
79
- },
80
- properties: [
81
- {
82
- name: 'type',
83
- description: 'the type of the metafield',
84
- return_type: [{ type: 'string', name: '' }],
85
- },
86
- {
87
- name: 'value',
88
- description: 'the value of the metafield',
89
- return_type: [{ type: 'untyped', name: '' }],
90
- },
91
- ],
92
- },
93
64
  ];
94
65
 
95
66
  provider = new HoverProvider(
@@ -100,80 +71,41 @@ describe('Module: LiquidObjectHoverProvider', async () => {
100
71
  objects: async () => _objects,
101
72
  liquidDrops: async () => _objects,
102
73
  tags: async () => [],
103
- systemTranslations: async () => ({}),
104
74
  },
105
75
  new TranslationProvider(new MockFileSystem({})),
106
- async (_uri: string) => {
107
- return {
108
- article: [],
109
- blog: [],
110
- collection: [],
111
- company: [],
112
- company_location: [],
113
- location: [],
114
- market: [],
115
- order: [],
116
- page: [],
117
- product: [
118
- {
119
- key: 'color',
120
- name: 'color',
121
- namespace: 'custom',
122
- description: 'the color of the product',
123
- type: {
124
- category: 'COLOR',
125
- name: 'color',
126
- },
127
- },
128
- ],
129
- variant: [],
130
- shop: [],
131
- } as MetafieldDefinitionMap;
132
- },
133
76
  );
134
77
  });
135
78
 
136
- it('should return the hover description of the object', async () => {
79
+ it('should return the hover description of the global object', async () => {
137
80
  const contexts = [
138
- '{{ product }}',
139
- '{{ product█ }}',
140
- '{% echo product█ %}',
141
- '{% liquid\n echo product█ %}',
142
- '{% assign x = product %}{{ x█ }}',
143
- '{% for x in all_products %}{{ x█ }}{% endfor %}',
144
- '{% assign x = all_products[0] %}{{ x█ }}',
145
- '{% assign x█ = all_products[0] %}',
146
- // '{% for x█ in all_products %}{{ x }}{% endfor %}', // not supported yet...
81
+ '{{ context }}',
82
+ '{{ context█ }}',
83
+ '{% echo context█ %}',
84
+ '{% liquid\n echo context█ %}',
85
+ '{% assign x = context %}{{ x█ }}',
147
86
  ];
148
87
  for (const context of contexts) {
149
- await expect(provider).to.hover(context, expect.stringContaining('product description'));
150
- await expect(provider).to.hover(context, expect.stringMatching(/##* \w+: `product`/));
88
+ await expect(provider).to.hover(context, expect.stringContaining('context description'));
89
+ await expect(provider).to.hover(context, expect.stringMatching(/##* \w+: `context`/));
151
90
  }
152
91
  });
153
92
 
154
- it('should support paginate inside paginate tags', async () => {
155
- const context = `
156
- {% paginate all_products by 5 %}
157
- {{ paginate█ }}
158
- {% endpaginate %}
159
- `;
160
- await expect(provider).to.hover(context, expect.stringMatching(/##* paginate: `paginate`/));
161
- await expect(provider).to.hover('{{ paginate█ }}', null);
162
- });
163
-
164
- it('should support form inside form tags', async () => {
165
- const context = `
166
- {% form all_products by 5 %}
167
- {{ form█ }}
168
- {% endform %}
169
- `;
170
- await expect(provider).to.hover(context, expect.stringMatching(/##* form: `form`/));
171
- await expect(provider).to.hover('{{ form█ }}', null);
93
+ it('should return the hover description of an array item object', async () => {
94
+ const contexts = [
95
+ '{% for x in context.posts %}{{ x█ }}{% endfor %}',
96
+ '{% assign x = context.posts[0] %}{{ x█ }}',
97
+ '{% assign x█ = context.posts[0] %}',
98
+ // '{% for x█ in context.posts %}{{ x }}{% endfor %}', // not supported yet...
99
+ ];
100
+ for (const context of contexts) {
101
+ await expect(provider).to.hover(context, expect.stringContaining('post description'));
102
+ await expect(provider).to.hover(context, expect.stringMatching(/##* \w+: `post`/));
103
+ }
172
104
  });
173
105
 
174
106
  it('should support forloop inside for tags', async () => {
175
107
  const context = `
176
- {% for p in all_products %}
108
+ {% for p in context.posts %}
177
109
  {{ forloop█ }}
178
110
  {% endfor %}
179
111
  `;
@@ -183,7 +115,7 @@ describe('Module: LiquidObjectHoverProvider', async () => {
183
115
 
184
116
  it('should support tablerowloop inside tablerow tags', async () => {
185
117
  const context = `
186
- {% tablerow p in all_products %}
118
+ {% tablerow p in context.posts %}
187
119
  {{ tablerowloop█ }}
188
120
  {% endtablerow %}
189
121
  `;
@@ -220,12 +152,8 @@ describe('Module: LiquidObjectHoverProvider', async () => {
220
152
 
221
153
  it('should support contextual objects by relative path', async () => {
222
154
  const contexts: [string, string][] = [
223
- ['section', 'sections/my-section.liquid'],
224
- ['block', 'blocks/my-block.liquid'],
225
- ['predictive_search', 'sections/predictive-search.liquid'],
226
- ['recommendations', 'sections/recommendations.liquid'],
227
- ['app', 'blocks/recommendations.liquid'],
228
155
  ['app', 'app/views/partials/recommendations.liquid'],
156
+ ['app', 'app/lib/helpers/my-helper.liquid'],
229
157
  ];
230
158
  for (const [object, relativePath] of contexts) {
231
159
  const source = `{{ ${object}█ }}`;
@@ -237,38 +165,27 @@ describe('Module: LiquidObjectHoverProvider', async () => {
237
165
  }
238
166
  });
239
167
 
240
- it('should support metafields', async () => {
241
- await expect(provider).to.hover(
242
- '{{ product.metafields.custom█ }}',
243
- '### custom: `product_metafield_custom`',
244
- );
245
- await expect(provider).to.hover(
246
- '{{ product.metafields.custom.color█ }}',
247
- '### color: `metafield_color`\nthe color of the product',
248
- );
249
- });
250
-
251
168
  it('should return null when hovering over an undefined variable', async () => {
252
169
  await expect(provider).to.hover(`{{ unknown█ }}`, null);
253
170
  });
254
171
 
255
172
  it('should return something if the thing is knowingly untyped', async () => {
256
173
  await expect(provider).to.hover(
257
- `{% assign src = product.featured_image.src %}{{ src█ }}`,
174
+ `{% assign src = context.posts[0].thumbnail.src %}{{ src█ }}`,
258
175
  `### src: \`untyped\``,
259
176
  );
260
177
  });
261
178
 
262
179
  it('should still return null when hovering over an unknown variable out of scope', async () => {
263
180
  await expect(provider).to.hover(
264
- `{% for p in all_products %}
181
+ `{% for p in context.posts %}
265
182
  {{ forloop█ }}
266
183
  {% endfor %}
267
184
  {{ forloop }}`,
268
185
  expect.stringMatching(/##* forloop: `forloop`/),
269
186
  );
270
187
  await expect(provider).to.hover(
271
- `{% for p in all_products %}
188
+ `{% for p in context.posts %}
272
189
  {{ forloop }}
273
190
  {% endfor %}
274
191
  {{ forloop█ }}`,
@@ -1,7 +1,6 @@
1
1
  import { describe, beforeEach, it, expect } from 'vitest';
2
2
  import { DocumentManager } from '../../documents';
3
3
  import { HoverProvider } from '../HoverProvider';
4
- import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
5
4
  import { TranslationProvider } from '@platformos/platformos-common';
6
5
  import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
7
6
 
@@ -20,10 +19,8 @@ describe('Module: LiquidTagHoverProvider', async () => {
20
19
  { name: 'if', description: 'if statement description' },
21
20
  { name: 'echo', description: 'echo description' },
22
21
  ],
23
- systemTranslations: async () => ({}),
24
22
  },
25
23
  new TranslationProvider(new MockFileSystem({})),
26
- async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
27
24
  );
28
25
  });
29
26
 
@@ -1,11 +1,11 @@
1
1
  import { NodeTypes } from '@platformos/liquid-html-parser';
2
- import { LiquidHtmlNode, ThemeDocset } from '@platformos/platformos-check-common';
2
+ import { LiquidHtmlNode, PlatformOSDocset } from '@platformos/platformos-check-common';
3
3
  import { Hover } from 'vscode-languageserver';
4
4
  import { render } from '../../docset';
5
5
  import { BaseHoverProvider } from '../BaseHoverProvider';
6
6
 
7
7
  export class LiquidTagHoverProvider implements BaseHoverProvider {
8
- constructor(public themeDocset: ThemeDocset) {}
8
+ constructor(public platformosDocset: PlatformOSDocset) {}
9
9
 
10
10
  async hover(currentNode: LiquidHtmlNode): Promise<Hover | null> {
11
11
  if (
@@ -17,7 +17,7 @@ export class LiquidTagHoverProvider implements BaseHoverProvider {
17
17
  }
18
18
 
19
19
  const name = currentNode.name;
20
- const entries = await this.themeDocset.tags();
20
+ const entries = await this.platformosDocset.tags();
21
21
  const entry = entries.find((entry) => entry.name === name);
22
22
  if (!entry) {
23
23
  return null;
@@ -1,16 +1,16 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { DocumentManager } from '../../documents';
3
3
  import { HoverProvider } from '../HoverProvider';
4
- import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
4
+
5
5
  import { GetDocDefinitionForURI, DocDefinition } from '@platformos/platformos-check-common';
6
6
  import { TranslationProvider } from '@platformos/platformos-common';
7
7
  import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
8
8
 
9
- const uri = 'file:///snippets/product-card.liquid';
9
+ const uri = 'file:///app/views/partials/product-card.liquid';
10
10
 
11
- describe('Module: RenderSnippetHoverProvider', async () => {
11
+ describe('Module: RenderPartialHoverProvider', async () => {
12
12
  let provider: HoverProvider;
13
- const mockSnippetDefinition: DocDefinition = {
13
+ const mockPartialDefinition: DocDefinition = {
14
14
  uri,
15
15
  liquidDoc: {
16
16
  parameters: [
@@ -36,10 +36,10 @@ describe('Module: RenderSnippetHoverProvider', async () => {
36
36
  };
37
37
 
38
38
  describe('hover', () => {
39
- it('should return snippet definition with all parameters', async () => {
40
- provider = createProvider(async () => mockSnippetDefinition);
39
+ it('should return partial definition with all parameters', async () => {
40
+ provider = createProvider(async () => mockPartialDefinition);
41
41
  // prettier-ignore
42
- const expectedHoverContent =
42
+ const expectedHoverContent =
43
43
  `### product-card
44
44
 
45
45
  **Description:**
@@ -59,13 +59,13 @@ This is a description
59
59
  });
60
60
 
61
61
  it('should return nothing if not in render tag', async () => {
62
- await expect(provider).to.hover(`{% assign asdf = 'snippet' %}`, null);
63
- await expect(provider).to.hover(`{{ 'snippet' }}`, null);
62
+ await expect(provider).to.hover(`{% assign asdf = 'any-string' %}`, null);
63
+ await expect(provider).to.hover(`{{ 'any-string' }}`, null);
64
64
  });
65
65
  });
66
66
  });
67
67
 
68
- const createProvider = (getSnippetDefinition: GetDocDefinitionForURI) => {
68
+ const createProvider = (getPartialDefinition: GetDocDefinitionForURI) => {
69
69
  return new HoverProvider(
70
70
  new DocumentManager(),
71
71
  {
@@ -74,12 +74,9 @@ const createProvider = (getSnippetDefinition: GetDocDefinitionForURI) => {
74
74
  objects: async () => [],
75
75
  liquidDrops: async () => [],
76
76
  tags: async () => [],
77
- systemTranslations: async () => ({}),
78
77
  },
79
78
  new TranslationProvider(new MockFileSystem({})),
80
- async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
81
79
  async () => ({}),
82
- async () => [],
83
- getSnippetDefinition,
80
+ getPartialDefinition,
84
81
  );
85
82
  };
@@ -22,11 +22,7 @@ export class RenderPartialHoverProvider implements BaseHoverProvider {
22
22
  }
23
23
 
24
24
  const partialName = currentNode.value;
25
- const docDefinition = await this.getDocDefinitionForURI(
26
- params.textDocument.uri,
27
- 'app/views/partials',
28
- partialName,
29
- );
25
+ const docDefinition = await this.getDocDefinitionForURI(params.textDocument.uri, partialName);
30
26
 
31
27
  return {
32
28
  contents: {
@@ -1,17 +1,17 @@
1
1
  import { describe, beforeEach, it, expect } from 'vitest';
2
2
  import { DocumentManager } from '../../documents';
3
3
  import { HoverProvider } from '../HoverProvider';
4
- import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
4
+
5
5
  import { GetDocDefinitionForURI, DocDefinition } from '@platformos/platformos-check-common';
6
6
  import { TranslationProvider } from '@platformos/platformos-common';
7
7
  import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
8
8
 
9
- const uri = 'file:///snippets/product-card.liquid';
9
+ const uri = 'file:///app/views/partials/product-card.liquid';
10
10
 
11
- describe('Module: RenderSnippetParameterHoverProvider', async () => {
11
+ describe('Module: RenderPartialParameterHoverProvider', async () => {
12
12
  let provider: HoverProvider;
13
- let getSnippetDefinition: GetDocDefinitionForURI;
14
- const mockSnippetDefinition: DocDefinition = {
13
+ let getPartialDefinition: GetDocDefinitionForURI;
14
+ const mockPartialDefinition: DocDefinition = {
15
15
  uri,
16
16
  liquidDoc: {
17
17
  parameters: [
@@ -28,12 +28,12 @@ describe('Module: RenderSnippetParameterHoverProvider', async () => {
28
28
 
29
29
  describe('hover', () => {
30
30
  beforeEach(() => {
31
- provider = createProvider(async () => mockSnippetDefinition);
31
+ provider = createProvider(async () => mockPartialDefinition);
32
32
  });
33
33
 
34
34
  it('should return null if doc definition not found', async () => {
35
- getSnippetDefinition = async () => undefined;
36
- provider = createProvider(getSnippetDefinition);
35
+ getPartialDefinition = async () => undefined;
36
+ provider = createProvider(getPartialDefinition);
37
37
  await expect(provider).to.hover(`{% render 'product-card' tit█le: 'value' %}`, null);
38
38
  });
39
39
 
@@ -50,7 +50,7 @@ describe('Module: RenderSnippetParameterHoverProvider', async () => {
50
50
  });
51
51
  });
52
52
 
53
- const createProvider = (getSnippetDefinition: GetDocDefinitionForURI) => {
53
+ const createProvider = (getPartialDefinition: GetDocDefinitionForURI) => {
54
54
  return new HoverProvider(
55
55
  new DocumentManager(),
56
56
  {
@@ -59,12 +59,9 @@ const createProvider = (getSnippetDefinition: GetDocDefinitionForURI) => {
59
59
  objects: async () => [],
60
60
  liquidDrops: async () => [],
61
61
  tags: async () => [],
62
- systemTranslations: async () => ({}),
63
62
  },
64
63
  new TranslationProvider(new MockFileSystem({})),
65
- async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
66
64
  async () => ({}),
67
- async () => [],
68
- getSnippetDefinition,
65
+ getPartialDefinition,
69
66
  );
70
67
  };
@@ -17,15 +17,14 @@ export class RenderPartialParameterHoverProvider implements BaseHoverProvider {
17
17
  currentNode.type !== NodeTypes.NamedArgument ||
18
18
  !parentNode ||
19
19
  parentNode.type !== NodeTypes.RenderMarkup ||
20
- parentNode.snippet.type !== NodeTypes.String
20
+ parentNode.partial.type !== NodeTypes.String
21
21
  ) {
22
22
  return null;
23
23
  }
24
24
 
25
25
  const docDefinition = await this.getDocDefinitionForURI(
26
26
  params.textDocument.uri,
27
- 'app/views/partials',
28
- parentNode.snippet.value,
27
+ parentNode.partial.value,
29
28
  );
30
29
 
31
30
  const paramName = currentNode.name;
@@ -1,7 +1,7 @@
1
1
  import { describe, beforeEach, it, expect } from 'vitest';
2
2
  import { DocumentManager } from '../../documents';
3
3
  import { HoverProvider } from '../HoverProvider';
4
- import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
4
+
5
5
  import { TranslationProvider } from '@platformos/platformos-common';
6
6
  import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
7
7
 
@@ -17,7 +17,6 @@ describe('Module: TranslationHoverProvider', async () => {
17
17
  objects: async () => [],
18
18
  liquidDrops: async () => [],
19
19
  tags: async () => [],
20
- systemTranslations: async () => ({}),
21
20
  },
22
21
  new TranslationProvider(
23
22
  new MockFileSystem({
@@ -32,8 +31,6 @@ describe('Module: TranslationHoverProvider', async () => {
32
31
  `,
33
32
  }),
34
33
  ),
35
- async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
36
- undefined,
37
34
  undefined,
38
35
  undefined,
39
36
  async () => '.',
@@ -6,13 +6,13 @@ import { renderTranslation } from '../../translations';
6
6
  import { BaseHoverProvider } from '../BaseHoverProvider';
7
7
  import { TranslationProvider } from '@platformos/platformos-common';
8
8
  import { URI } from 'vscode-uri';
9
- import { FindThemeRootURI } from '../../../src/internal-types';
9
+ import { FindAppRootURI } from '../../../src/internal-types';
10
10
 
11
11
  export class TranslationHoverProvider implements BaseHoverProvider {
12
12
  constructor(
13
13
  public documentManager: DocumentManager,
14
14
  private translationProvider: TranslationProvider,
15
- private findThemeRootURI: FindThemeRootURI,
15
+ private findAppRootURI: FindAppRootURI,
16
16
  ) {}
17
17
 
18
18
  async hover(
@@ -33,7 +33,7 @@ export class TranslationHoverProvider implements BaseHoverProvider {
33
33
  return null;
34
34
  }
35
35
 
36
- const root = await this.findThemeRootURI(params.textDocument.uri);
36
+ const root = await this.findAppRootURI(params.textDocument.uri);
37
37
  if (!root) {
38
38
  return null;
39
39
  }
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import {
2
- Config as ThemeCheckConfig,
2
+ Config as PlatformOSCheckConfig,
3
3
  allChecks,
4
4
  recommended as recommendedChecks,
5
5
  SourceCodeType,
@@ -11,19 +11,16 @@ export * from './types';
11
11
  export { visit } from '@platformos/platformos-check-common';
12
12
  export {
13
13
  Reference,
14
- ThemeGraph,
14
+ AppGraph,
15
15
  SerializableEdge,
16
16
  SerializableNode,
17
- ThemeModule,
18
- CssModule,
19
- JsonModule,
20
- JavaScriptModule,
17
+ AppModule,
21
18
  LiquidModule,
22
19
  } from '@platformos/platformos-graph';
23
20
  export { debounce, memo, parseJSON, ArgumentTypes } from './utils';
24
21
  export { startServer } from './server';
25
22
  export {
26
- ThemeCheckConfig,
23
+ PlatformOSCheckConfig,
27
24
  recommendedChecks,
28
25
  allChecks,
29
26
  AbstractFileSystem,
@@ -1 +1 @@
1
- export type FindThemeRootURI = (uri: string) => Promise<string | null>;
1
+ export type FindAppRootURI = (uri: string) => Promise<string | null>;