@platformos/platformos-language-server-common 0.0.6 → 0.0.8

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 (247) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/PropertyShapeInference.d.ts +18 -0
  3. package/dist/PropertyShapeInference.js +58 -0
  4. package/dist/PropertyShapeInference.js.map +1 -1
  5. package/dist/TypeSystem.d.ts +4 -9
  6. package/dist/TypeSystem.js +234 -388
  7. package/dist/TypeSystem.js.map +1 -1
  8. package/dist/completions/CompletionsProvider.d.ts +6 -10
  9. package/dist/completions/CompletionsProvider.js +6 -9
  10. package/dist/completions/CompletionsProvider.js.map +1 -1
  11. package/dist/completions/params/LiquidCompletionParams.js +4 -16
  12. package/dist/completions/params/LiquidCompletionParams.js.map +1 -1
  13. package/dist/completions/providers/ContentForCompletionProvider.js +2 -4
  14. package/dist/completions/providers/ContentForCompletionProvider.js.map +1 -1
  15. package/dist/completions/providers/FilterCompletionProvider.js.map +1 -1
  16. package/dist/completions/providers/FilterNamedParameterCompletionProvider.d.ts +3 -3
  17. package/dist/completions/providers/FilterNamedParameterCompletionProvider.js +6 -6
  18. package/dist/completions/providers/FilterNamedParameterCompletionProvider.js.map +1 -1
  19. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.d.ts +3 -3
  20. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js +3 -3
  21. package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js.map +1 -1
  22. package/dist/completions/providers/LiquidTagsCompletionProvider.d.ts +3 -3
  23. package/dist/completions/providers/LiquidTagsCompletionProvider.js +3 -3
  24. package/dist/completions/providers/LiquidTagsCompletionProvider.js.map +1 -1
  25. package/dist/completions/providers/RenderPartialParameterCompletionProvider.js +1 -1
  26. package/dist/completions/providers/RenderPartialParameterCompletionProvider.js.map +1 -1
  27. package/dist/completions/providers/TranslationCompletionProvider.js +1 -1
  28. package/dist/completions/providers/TranslationCompletionProvider.js.map +1 -1
  29. package/dist/completions/providers/index.d.ts +0 -3
  30. package/dist/completions/providers/index.js +1 -7
  31. package/dist/completions/providers/index.js.map +1 -1
  32. package/dist/css/CSSLanguageService.d.ts +19 -5
  33. package/dist/css/CSSLanguageService.js +77 -63
  34. package/dist/css/CSSLanguageService.js.map +1 -1
  35. package/dist/definitions/DefinitionProvider.d.ts +1 -1
  36. package/dist/definitions/DefinitionProvider.js +1 -3
  37. package/dist/definitions/DefinitionProvider.js.map +1 -1
  38. package/dist/diagnostics/offenseToDiagnostic.js +1 -1
  39. package/dist/diagnostics/offenseToDiagnostic.js.map +1 -1
  40. package/dist/diagnostics/runChecks.d.ts +3 -5
  41. package/dist/diagnostics/runChecks.js +12 -64
  42. package/dist/diagnostics/runChecks.js.map +1 -1
  43. package/dist/docset/MarkdownRenderer.js +1 -1
  44. package/dist/docset/MarkdownRenderer.js.map +1 -1
  45. package/dist/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.d.ts +1 -1
  46. package/dist/documentLinks/DocumentLinksProvider.d.ts +3 -3
  47. package/dist/documentLinks/DocumentLinksProvider.js +3 -3
  48. package/dist/documentLinks/DocumentLinksProvider.js.map +1 -1
  49. package/dist/documents/DocumentManager.d.ts +4 -5
  50. package/dist/documents/DocumentManager.js +12 -11
  51. package/dist/documents/DocumentManager.js.map +1 -1
  52. package/dist/documents/types.d.ts +16 -3
  53. package/dist/documents/types.js +3 -3
  54. package/dist/documents/types.js.map +1 -1
  55. package/dist/formatting/OnTypeFormattingProvider.d.ts +1 -1
  56. package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.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/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.d.ts +1 -1
  92. package/dist/progress.js.map +1 -1
  93. package/dist/rename/RenameProvider.d.ts +2 -2
  94. package/dist/rename/RenameProvider.js +2 -2
  95. package/dist/rename/RenameProvider.js.map +1 -1
  96. package/dist/rename/providers/LiquidVariableRenameProvider.d.ts +3 -3
  97. package/dist/rename/providers/LiquidVariableRenameProvider.js +4 -4
  98. package/dist/rename/providers/LiquidVariableRenameProvider.js.map +1 -1
  99. package/dist/renamed/RenameHandler.d.ts +2 -3
  100. package/dist/renamed/RenameHandler.js +3 -8
  101. package/dist/renamed/RenameHandler.js.map +1 -1
  102. package/dist/renamed/handlers/AssetRenameHandler.d.ts +3 -3
  103. package/dist/renamed/handlers/AssetRenameHandler.js +5 -5
  104. package/dist/renamed/handlers/AssetRenameHandler.js.map +1 -1
  105. package/dist/renamed/handlers/PartialRenameHandler.d.ts +3 -3
  106. package/dist/renamed/handlers/PartialRenameHandler.js +5 -5
  107. package/dist/renamed/handlers/PartialRenameHandler.js.map +1 -1
  108. package/dist/renamed/handlers/utils.d.ts +1 -1
  109. package/dist/server/AppGraphManager.d.ts +32 -0
  110. package/dist/server/AppGraphManager.js +155 -0
  111. package/dist/server/AppGraphManager.js.map +1 -0
  112. package/dist/server/Configuration.js.map +1 -1
  113. package/dist/server/startServer.d.ts +2 -2
  114. package/dist/server/startServer.js +62 -164
  115. package/dist/server/startServer.js.map +1 -1
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/dist/types.d.ts +33 -54
  118. package/dist/types.js +21 -26
  119. package/dist/types.js.map +1 -1
  120. package/dist/utils/liquidDoc.js +1 -1
  121. package/dist/utils/liquidDoc.js.map +1 -1
  122. package/dist/utils/uri.d.ts +0 -8
  123. package/dist/utils/uri.js +1 -17
  124. package/dist/utils/uri.js.map +1 -1
  125. package/package.json +9 -9
  126. package/src/PropertyShapeInference.ts +76 -1
  127. package/src/TypeSystem.spec.ts +187 -452
  128. package/src/TypeSystem.ts +253 -459
  129. package/src/completions/CompletionsProvider.ts +13 -34
  130. package/src/completions/params/LiquidCompletionParams.spec.ts +0 -9
  131. package/src/completions/params/LiquidCompletionParams.ts +4 -14
  132. package/src/completions/params/fix.spec.ts +0 -3
  133. package/src/completions/providers/FilterCompletionProvider.spec.ts +2 -8
  134. package/src/completions/providers/FilterCompletionProvider.ts +6 -6
  135. package/src/completions/providers/FilterNamedParameterCompletionProvider.spec.ts +1 -5
  136. package/src/completions/providers/FilterNamedParameterCompletionProvider.ts +6 -6
  137. package/src/completions/providers/HtmlAttributeCompletionProvider.spec.ts +1 -4
  138. package/src/completions/providers/HtmlAttributeValueCompletionProvider.spec.ts +1 -4
  139. package/src/completions/providers/HtmlTagCompletionProvider.spec.ts +1 -4
  140. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.spec.ts +1 -28
  141. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.ts +3 -3
  142. package/src/completions/providers/LiquidDocTagCompletionProvider.spec.ts +1 -26
  143. package/src/completions/providers/LiquidTagsCompletionProvider.spec.ts +2 -16
  144. package/src/completions/providers/LiquidTagsCompletionProvider.ts +3 -3
  145. package/src/completions/providers/ObjectAttributeCompletionProvider.spec.ts +2 -31
  146. package/src/completions/providers/ObjectCompletionProvider.spec.ts +34 -123
  147. package/src/completions/providers/PartialCompletionProvider.spec.ts +4 -13
  148. package/src/completions/providers/RenderPartialParameterCompletionProvider.spec.ts +3 -5
  149. package/src/completions/providers/RenderPartialParameterCompletionProvider.ts +0 -1
  150. package/src/completions/providers/TranslationCompletionProvider.spec.ts +1 -4
  151. package/src/completions/providers/TranslationCompletionProvider.ts +1 -1
  152. package/src/completions/providers/index.ts +0 -3
  153. package/src/css/CSSLanguageService.ts +97 -81
  154. package/src/definitions/DefinitionProvider.ts +0 -6
  155. package/src/definitions/providers/TranslationStringDefinitionProvider.spec.ts +1 -5
  156. package/src/diagnostics/offenseToDiagnostic.ts +1 -1
  157. package/src/diagnostics/runChecks.spec.ts +16 -24
  158. package/src/diagnostics/runChecks.ts +17 -91
  159. package/src/docset/MarkdownRenderer.ts +1 -1
  160. package/src/documentLinks/DocumentLinksProvider.ts +3 -3
  161. package/src/documents/DocumentManager.spec.ts +12 -97
  162. package/src/documents/DocumentManager.ts +13 -14
  163. package/src/documents/types.ts +18 -9
  164. package/src/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.ts +1 -3
  165. package/src/hover/HoverProvider.ts +9 -21
  166. package/src/hover/providers/HtmlAttributeHoverProvider.spec.ts +1 -3
  167. package/src/hover/providers/HtmlAttributeValueHoverProvider.spec.ts +1 -3
  168. package/src/hover/providers/HtmlTagHoverProvider.spec.ts +1 -3
  169. package/src/hover/providers/LiquidDocTagHoverProvider.spec.ts +0 -3
  170. package/src/hover/providers/LiquidFilterArgumentHoverProvider.spec.ts +0 -3
  171. package/src/hover/providers/LiquidFilterArgumentHoverProvider.ts +3 -3
  172. package/src/hover/providers/LiquidFilterHoverProvider.spec.ts +0 -3
  173. package/src/hover/providers/LiquidFilterHoverProvider.ts +3 -3
  174. package/src/hover/providers/LiquidObjectAttributeHoverProvider.spec.ts +1 -3
  175. package/src/hover/providers/LiquidObjectHoverProvider.spec.ts +46 -129
  176. package/src/hover/providers/LiquidTagHoverProvider.spec.ts +0 -3
  177. package/src/hover/providers/LiquidTagHoverProvider.ts +3 -3
  178. package/src/hover/providers/RenderPartialHoverProvider.spec.ts +1 -4
  179. package/src/hover/providers/RenderPartialHoverProvider.ts +1 -5
  180. package/src/hover/providers/RenderPartialParameterHoverProvider.spec.ts +1 -4
  181. package/src/hover/providers/RenderPartialParameterHoverProvider.ts +0 -1
  182. package/src/hover/providers/TranslationHoverProvider.spec.ts +1 -4
  183. package/src/hover/providers/TranslationHoverProvider.ts +3 -3
  184. package/src/index.ts +2 -5
  185. package/src/internal-types.ts +1 -1
  186. package/src/json/JSONContributions.ts +4 -61
  187. package/src/json/JSONLanguageService.ts +19 -117
  188. package/src/json/test/test-helpers.ts +4 -35
  189. package/src/json/utils.ts +0 -27
  190. package/src/progress.ts +4 -1
  191. package/src/rename/RenameProvider.ts +3 -3
  192. package/src/rename/providers/LiquidVariableRenameProvider.spec.ts +4 -4
  193. package/src/rename/providers/LiquidVariableRenameProvider.ts +4 -4
  194. package/src/renamed/RenameHandler.ts +4 -9
  195. package/src/renamed/handlers/AssetRenameHandler.spec.ts +3 -3
  196. package/src/renamed/handlers/AssetRenameHandler.ts +5 -5
  197. package/src/renamed/handlers/PartialRenameHandler.spec.ts +2 -2
  198. package/src/renamed/handlers/PartialRenameHandler.ts +5 -5
  199. package/src/renamed/handlers/utils.ts +1 -1
  200. package/src/server/{ThemeGraphManager.ts → AppGraphManager.ts} +21 -90
  201. package/src/server/Configuration.ts +4 -1
  202. package/src/server/startServer.spec.ts +7 -9
  203. package/src/server/startServer.ts +65 -217
  204. package/src/test/CompletionItemsAssertion.spec.ts +1 -4
  205. package/src/types.ts +33 -63
  206. package/src/utils/liquidDoc.ts +1 -1
  207. package/src/utils/uri.ts +0 -14
  208. package/src/completions/providers/ContentForBlockTypeCompletionProvider.spec.ts +0 -41
  209. package/src/completions/providers/ContentForBlockTypeCompletionProvider.ts +0 -42
  210. package/src/completions/providers/ContentForCompletionProvider.spec.ts +0 -96
  211. package/src/completions/providers/ContentForCompletionProvider.ts +0 -113
  212. package/src/completions/providers/ContentForParameterCompletionProvider.spec.ts +0 -362
  213. package/src/completions/providers/ContentForParameterCompletionProvider.ts +0 -187
  214. package/src/completions/providers/data/contentForParameterCompletionOptions.ts +0 -9
  215. package/src/css/CSSLanguageService.spec.ts +0 -161
  216. package/src/css/test/test-helpers.ts +0 -30
  217. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.spec.ts +0 -96
  218. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.ts +0 -82
  219. package/src/hover/providers/ContentForArgumentHoverProvider.spec.ts +0 -76
  220. package/src/hover/providers/ContentForArgumentHoverProvider.ts +0 -56
  221. package/src/hover/providers/ContentForTypeHoverProvider.spec.ts +0 -91
  222. package/src/hover/providers/ContentForTypeHoverProvider.ts +0 -42
  223. package/src/json/JSONLanguageService.spec.ts +0 -424
  224. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.spec.ts +0 -163
  225. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.ts +0 -121
  226. package/src/json/completions/providers/BlockTypeCompletionProvider.spec.ts +0 -137
  227. package/src/json/completions/providers/BlockTypeCompletionProvider.ts +0 -108
  228. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.spec.ts +0 -132
  229. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.ts +0 -120
  230. package/src/json/completions/providers/SchemaTranslationCompletionProvider.ts +0 -51
  231. package/src/json/completions/providers/SettingsPropertyCompletionProvider.spec.ts +0 -211
  232. package/src/json/completions/providers/SettingsPropertyCompletionProvider.ts +0 -75
  233. package/src/json/documentLinks/DocumentLinksProvider.spec.ts +0 -223
  234. package/src/json/documentLinks/DocumentLinksProvider.ts +0 -61
  235. package/src/json/hover/providers/BlockSettingsHoverProvider.spec.ts +0 -292
  236. package/src/json/hover/providers/BlockSettingsHoverProvider.ts +0 -99
  237. package/src/json/hover/providers/SchemaTranslationHoverProvider.ts +0 -35
  238. package/src/json/hover/providers/SettingsHoverProvider.spec.ts +0 -139
  239. package/src/json/hover/providers/SettingsHoverProvider.ts +0 -79
  240. package/src/json/schemaSettings.spec.ts +0 -103
  241. package/src/json/schemaSettings.ts +0 -53
  242. package/src/plugins/css.ts +0 -12
  243. package/src/renamed/handlers/BlockRenameHandler.spec.ts +0 -399
  244. package/src/renamed/handlers/BlockRenameHandler.ts +0 -402
  245. package/src/renamed/handlers/SectionRenameHandler.spec.ts +0 -321
  246. package/src/renamed/handlers/SectionRenameHandler.ts +0 -224
  247. package/src/settings/index.ts +0 -50
@@ -1,10 +1,4 @@
1
- import {
2
- path,
3
- Section,
4
- Setting,
5
- ThemeBlock,
6
- ThemeSchemaType,
7
- } from '@platformos/platformos-check-common';
1
+ import { path } from '@platformos/platformos-check-common';
8
2
  import { AbstractFileSystem } from '@platformos/platformos-common';
9
3
  import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
10
4
  import { assert, beforeEach, describe, expect, it, vi } from 'vitest';
@@ -23,7 +17,7 @@ describe('Module: DocumentManager', () => {
23
17
  documentManager = new DocumentManager();
24
18
  });
25
19
 
26
- it('should return a theme for a root', () => {
20
+ it('should return an app for a root', () => {
27
21
  // these will be different in windows vs unix
28
22
  const rootUri = URI.file(__dirname);
29
23
  const fileUri = Utils.joinPath(rootUri, 'test.liquid');
@@ -31,12 +25,12 @@ describe('Module: DocumentManager', () => {
31
25
  // We expect forward slash paths (windows path get normalized)
32
26
  expect(fileUri.path).not.to.include('\\');
33
27
  documentManager.open(fileUri.toString(), '{{ "hi" }}', 0);
34
- const theme = documentManager.theme(path.normalize(rootUri));
35
- expect(theme).to.have.lengthOf(1);
36
- expect(theme[0].uri).not.to.include('\\');
28
+ const app = documentManager.app(path.normalize(rootUri));
29
+ expect(app).to.have.lengthOf(1);
30
+ expect(app[0].uri).not.to.include('\\');
37
31
  // `fileURI.toString()` lowercases c: in 'C:\dir\path'
38
32
  // Without the URI.parse().path, this test was failing for a dumb reason
39
- expect(theme[0].uri).to.equal(path.normalize(fileUri));
33
+ expect(app[0].uri).to.equal(path.normalize(fileUri));
40
34
  });
41
35
 
42
36
  describe('when initialized with an abstract file system', () => {
@@ -70,15 +64,15 @@ describe('Module: DocumentManager', () => {
70
64
  expect(sc.version).to.equal(0);
71
65
  });
72
66
 
73
- describe('Unit: theme(rootUri, includeFilesFromDisk)', () => {
67
+ describe('Unit: app(rootUri, includeFilesFromDisk)', () => {
74
68
  it('only returns the source codes of the opened files by default', () => {
75
- const theme = documentManager.theme('mock-fs:/');
76
- expect(theme).to.have.lengthOf(0);
69
+ const app = documentManager.app('mock-fs:/');
70
+ expect(app).to.have.lengthOf(0);
77
71
  });
78
72
 
79
73
  it('returns all the files when called with includeFilesFromDisk', async () => {
80
- const theme = documentManager.theme('mock-fs:/', true);
81
- expect(theme).to.have.lengthOf(2);
74
+ const app = documentManager.app('mock-fs:/', true);
75
+ expect(app).to.have.lengthOf(2);
82
76
  });
83
77
  });
84
78
 
@@ -110,7 +104,7 @@ describe('Module: DocumentManager', () => {
110
104
  await documentManager.preload('mock-fs:/');
111
105
  await documentManager.preload('mock-fs:/');
112
106
  expect(vi.mocked(fs.readFile)).toHaveBeenCalledTimes(
113
- documentManager.theme('mock-fs:/', true).length,
107
+ documentManager.app('mock-fs:/', true).length,
114
108
  );
115
109
  });
116
110
  });
@@ -194,83 +188,4 @@ describe('Module: DocumentManager', () => {
194
188
  );
195
189
  });
196
190
  });
197
-
198
- describe('when initialized with a fs, getModeForURI, and isValidSchema', () => {
199
- const mockFsRoot = path.normalize('mock-fs:/theme');
200
- const sectionSchema: Section.Schema = {
201
- name: 'hello',
202
- settings: [{ type: 'number' as Setting.Type.Number, id: 'my_num' }],
203
- default: { settings: { my_num: 1 } },
204
- };
205
- const blockSchema: ThemeBlock.Schema = {
206
- name: 'world',
207
- blocks: [{ type: '@theme' }],
208
- };
209
-
210
- beforeEach(async () => {
211
- fs = new MockFileSystem(
212
- {
213
- 'sections/foo.liquid': `
214
- {% schema %}
215
- ${JSON.stringify(sectionSchema, null, 2)}
216
- {% endschema %}`,
217
- 'blocks/bar.liquid': `
218
- {% schema %}
219
- ${JSON.stringify(blockSchema, null, 2)}
220
- {% endschema %}`,
221
- },
222
- mockFsRoot,
223
- );
224
- documentManager = new DocumentManager(
225
- fs,
226
- undefined,
227
- undefined,
228
- async () => 'theme',
229
- async () => true, // let's assume they are valid for testing purposes...
230
- );
231
- await documentManager.preload(mockFsRoot);
232
- });
233
-
234
- it('should augment section files with a getSchema property that resolves to a type-safe schema', async () => {
235
- const section = documentManager.get(path.join(mockFsRoot, 'sections/foo.liquid'));
236
- assert(section);
237
- assert(section.type === 'LiquidHtml');
238
- const schema = await section.getSchema();
239
- assert(schema);
240
- assert(schema.type === ThemeSchemaType.Section);
241
- expect(schema.parsed).to.eql(sectionSchema);
242
- const validSchema = schema.validSchema;
243
- assert(!(validSchema instanceof Error));
244
-
245
- // Note below that validSchema.name is accessed in a type-safe manner
246
- expect(validSchema.name).to.equal(sectionSchema.name);
247
- assert(validSchema.settings);
248
- for (const setting of validSchema.settings) {
249
- assert(setting.type);
250
- assert(setting.id);
251
- }
252
-
253
- // Default is a section-only property
254
- assert(validSchema.default);
255
- });
256
-
257
- it('should augment block files with a getSchema property that resolves to a type-safe schema', async () => {
258
- const block = documentManager.get(path.join(mockFsRoot, 'blocks/bar.liquid'));
259
- assert(block);
260
- assert(block.type === 'LiquidHtml');
261
- const schema = await block.getSchema();
262
- assert(schema);
263
- assert(schema.type === ThemeSchemaType.Block);
264
- expect(schema.parsed).to.eql(blockSchema);
265
- const validSchema = schema.validSchema;
266
- assert(!(validSchema instanceof Error));
267
-
268
- // Note below that validSchema.name is accessed in a type-safe manner
269
- expect(validSchema.name).to.equal(blockSchema.name);
270
- assert(validSchema.blocks);
271
- for (const block of validSchema.blocks) {
272
- assert(block.type);
273
- }
274
- });
275
- });
276
191
  });
@@ -4,13 +4,11 @@ import {
4
4
  path,
5
5
  recursiveReadDirectory,
6
6
  SourceCodeType,
7
- Theme,
7
+ App,
8
8
  toSourceCode,
9
- toSchema,
10
9
  UriString,
11
10
  IsValidSchema,
12
11
  memo,
13
- Mode,
14
12
  isError,
15
13
  } from '@platformos/platformos-check-common';
16
14
 
@@ -40,7 +38,6 @@ export class DocumentManager {
40
38
  private readonly fs?: AbstractFileSystem,
41
39
  private readonly connection?: Connection,
42
40
  private readonly clientCapabilities?: ClientCapabilities,
43
- private readonly getModeForUri?: (uri: UriString) => Promise<Mode>,
44
41
  private readonly isValidSchema?: IsValidSchema,
45
42
  ) {
46
43
  this.sourceCodes = new Map();
@@ -78,12 +75,12 @@ export class DocumentManager {
78
75
  this.set(newUri, sourceCode.source, sourceCode.version);
79
76
  }
80
77
 
81
- public theme(root: UriString, includeFilesFromDisk = false): AugmentedSourceCode[] {
78
+ public app(root: UriString, includeFilesFromDisk = false): AugmentedSourceCode[] {
82
79
  return [...this.sourceCodes.values()]
83
80
  .filter((sourceCode) => sourceCode.uri.startsWith(root))
84
81
  .filter(
85
82
  (sourceCode) => includeFilesFromDisk || sourceCode.version !== undefined,
86
- ) satisfies Theme;
83
+ ) satisfies App;
87
84
  }
88
85
 
89
86
  public get openDocuments(): AugmentedSourceCode[] {
@@ -109,8 +106,8 @@ export class DocumentManager {
109
106
 
110
107
  private set(uri: UriString, source: string, version: number | undefined) {
111
108
  uri = path.normalize(uri);
112
- // We only support json and liquid files.
113
- if (!/\.(json|liquid|graphql)$/.test(uri) || /\.(s?css|js).liquid$/.test(uri)) {
109
+ // We only support json, liquid, graphql, and yaml files.
110
+ if (!/\.(json|liquid|graphql|ya?ml)$/.test(uri) || /\.(s?css|js).liquid$/.test(uri)) {
114
111
  return;
115
112
  }
116
113
 
@@ -119,7 +116,7 @@ export class DocumentManager {
119
116
 
120
117
  /**
121
118
  * The preload method is used to pre-load and pre-parse all the files in the
122
- * theme. It is smart and only will load files that are not already in the
119
+ * app. It is smart and only will load files that are not already in the
123
120
  * DocumentManager.
124
121
  *
125
122
  * Files that are loaded from the AbstractFileSystem will have a version of `undefined`.
@@ -137,7 +134,7 @@ export class DocumentManager {
137
134
  const filesToLoad = await recursiveReadDirectory(
138
135
  this.fs,
139
136
  rootUri,
140
- ([uri]) => /\.(liquid|json|graphql)$/.test(uri) && !this.sourceCodes.has(uri),
137
+ ([uri]) => /\.(liquid|json|graphql|ya?ml)$/.test(uri) && !this.sourceCodes.has(uri),
141
138
  );
142
139
 
143
140
  progress.report(10, 'Preloading files');
@@ -189,16 +186,18 @@ export class DocumentManager {
189
186
  ...sourceCode,
190
187
  textDocument,
191
188
  };
189
+ case SourceCodeType.YAML:
190
+ return {
191
+ ...sourceCode,
192
+ textDocument,
193
+ };
192
194
  case SourceCodeType.LiquidHtml:
193
195
  return {
194
196
  ...sourceCode,
195
197
  textDocument,
196
198
  /** Lazy and only computed once per file version */
197
199
  getSchema: memo(async () => {
198
- if (!this.getModeForUri || !this.isValidSchema) return undefined;
199
-
200
- const mode = await this.getModeForUri!(uri);
201
- return toSchema(mode, uri, sourceCode, this.isValidSchema, false);
200
+ return undefined;
202
201
  }),
203
202
  /** Lazy and only computed once per file version */
204
203
  getLiquidDoc: memo(async () => {
@@ -1,13 +1,19 @@
1
- import {
2
- SourceCodeType,
3
- SourceCode,
4
- SectionSchema,
5
- ThemeBlockSchema,
6
- AppBlockSchema,
7
- } from '@platformos/platformos-check-common';
1
+ import { SourceCodeType, SourceCode } from '@platformos/platformos-check-common';
2
+ import { JSONNode } from '@platformos/platformos-check-common';
8
3
  import { TextDocument } from 'vscode-languageserver-textdocument';
9
4
  import { DocDefinition } from '@platformos/platformos-check-common';
10
5
 
6
+ /**
7
+ * Reserved for future use. platformOS does not use `{% schema %}` blocks,
8
+ * so `getSchema()` always returns `undefined`.
9
+ */
10
+ export interface SchemaObject {
11
+ parsed: any;
12
+ validSchema?: unknown;
13
+ ast: JSONNode | Error;
14
+ offset: number;
15
+ }
16
+
11
17
  /** Util type to add the common `textDocument` property to the SourceCode. */
12
18
  type _AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = SourceCode<SCT> & {
13
19
  textDocument: TextDocument;
@@ -25,7 +31,7 @@ export type AugmentedGraphQLSourceCode = _AugmentedSourceCode<SourceCodeType.Gra
25
31
  * about cache invalidation and will mean we'll parse the schema at most once.
26
32
  */
27
33
  export type AugmentedLiquidSourceCode = _AugmentedSourceCode<SourceCodeType.LiquidHtml> & {
28
- getSchema: () => Promise<SectionSchema | ThemeBlockSchema | AppBlockSchema | undefined>;
34
+ getSchema: () => Promise<SchemaObject | undefined>;
29
35
  getLiquidDoc: () => Promise<DocDefinition | undefined>;
30
36
  };
31
37
 
@@ -39,10 +45,13 @@ export type AugmentedLiquidSourceCode = _AugmentedSourceCode<SourceCodeType.Liqu
39
45
  * AugmentedSourceCode<SourceCodeType.JSON> -> AugmentedJsonSourceCode
40
46
  * AugmentedSourceCode<SourceCodeType.LiquidHtml> -> AugmentedLiquidSourceCode
41
47
  */
48
+ export type AugmentedYAMLSourceCode = _AugmentedSourceCode<SourceCodeType.YAML>;
49
+
42
50
  export type AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = {
43
51
  [SourceCodeType.JSON]: AugmentedJsonSourceCode;
44
52
  [SourceCodeType.LiquidHtml]: AugmentedLiquidSourceCode;
45
53
  [SourceCodeType.GraphQL]: AugmentedGraphQLSourceCode;
54
+ [SourceCodeType.YAML]: AugmentedYAMLSourceCode;
46
55
  }[SCT];
47
56
 
48
57
  export const isLiquidSourceCode = (file: AugmentedSourceCode): file is AugmentedLiquidSourceCode =>
@@ -51,5 +60,5 @@ export const isLiquidSourceCode = (file: AugmentedSourceCode): file is Augmented
51
60
  export const isJsonSourceCode = (file: AugmentedSourceCode): file is AugmentedJsonSourceCode =>
52
61
  file.type === SourceCodeType.JSON;
53
62
 
54
- export const isGraphQLSourceceCode = (file: AugmentedSourceCode): file is AugmentedJsonSourceCode =>
63
+ export const isGraphQLSourceCode = (file: AugmentedSourceCode): file is AugmentedJsonSourceCode =>
55
64
  file.type === SourceCodeType.GraphQL;
@@ -52,9 +52,7 @@ const defer = (fn: () => void) => setTimeout(fn, 10);
52
52
  * </div>
53
53
  * ```
54
54
  */
55
- export class HtmlElementAutoclosingOnTypeFormattingProvider
56
- implements BaseOnTypeFormattingProvider
57
- {
55
+ export class HtmlElementAutoclosingOnTypeFormattingProvider implements BaseOnTypeFormattingProvider {
58
56
  constructor(private setCursorPosition: SetCursorPosition) {}
59
57
 
60
58
  onTypeFormatting(
@@ -1,8 +1,7 @@
1
1
  import {
2
2
  GetDocDefinitionForURI,
3
- MetafieldDefinitionMap,
4
3
  SourceCodeType,
5
- ThemeDocset,
4
+ PlatformOSDocset,
6
5
  } from '@platformos/platformos-check-common';
7
6
  import { Hover, HoverParams } from 'vscode-languageserver';
8
7
  import { TypeSystem } from '../TypeSystem';
@@ -23,42 +22,31 @@ import {
23
22
  } from './providers';
24
23
  import { HtmlAttributeValueHoverProvider } from './providers/HtmlAttributeValueHoverProvider';
25
24
  import { findCurrentNode } from '@platformos/platformos-check-common';
26
- import { GetThemeSettingsSchemaForURI } from '../settings';
27
25
  import { LiquidDocTagHoverProvider } from './providers/LiquidDocTagHoverProvider';
28
- import { ContentForArgumentHoverProvider } from './providers/ContentForArgumentHoverProvider';
29
- import { ContentForTypeHoverProvider } from './providers/ContentForTypeHoverProvider';
30
26
  import { TranslationProvider } from '@platformos/platformos-common';
31
- import { FindThemeRootURI } from '../../src/internal-types';
27
+ import { FindAppRootURI } from '../../src/internal-types';
32
28
  export class HoverProvider {
33
29
  private providers: BaseHoverProvider[] = [];
34
30
 
35
31
  constructor(
36
32
  readonly documentManager: DocumentManager,
37
- readonly themeDocset: ThemeDocset,
33
+ readonly platformosDocset: PlatformOSDocset,
38
34
  readonly translationProvider: TranslationProvider,
39
- readonly getMetafieldDefinitions: (rootUri: string) => Promise<MetafieldDefinitionMap>,
40
35
  readonly getTranslationsForURI: GetTranslationsForURI = async () => ({}),
41
- readonly getSettingsSchemaForURI: GetThemeSettingsSchemaForURI = async () => [],
42
36
  readonly getDocDefinitionForURI: GetDocDefinitionForURI = async () => undefined,
43
- readonly findThemeRootURI: FindThemeRootURI = async () => null,
37
+ readonly findAppRootURI: FindAppRootURI = async () => null,
44
38
  ) {
45
- const typeSystem = new TypeSystem(
46
- themeDocset,
47
- getSettingsSchemaForURI,
48
- getMetafieldDefinitions,
49
- );
39
+ const typeSystem = new TypeSystem(platformosDocset);
50
40
  this.providers = [
51
- new ContentForArgumentHoverProvider(getDocDefinitionForURI),
52
- new ContentForTypeHoverProvider(getDocDefinitionForURI),
53
- new LiquidTagHoverProvider(themeDocset),
54
- new LiquidFilterArgumentHoverProvider(themeDocset),
55
- new LiquidFilterHoverProvider(themeDocset),
41
+ new LiquidTagHoverProvider(platformosDocset),
42
+ new LiquidFilterArgumentHoverProvider(platformosDocset),
43
+ new LiquidFilterHoverProvider(platformosDocset),
56
44
  new LiquidObjectHoverProvider(typeSystem),
57
45
  new LiquidObjectAttributeHoverProvider(typeSystem),
58
46
  new HtmlTagHoverProvider(),
59
47
  new HtmlAttributeHoverProvider(),
60
48
  new HtmlAttributeValueHoverProvider(),
61
- new TranslationHoverProvider(documentManager, translationProvider, findThemeRootURI),
49
+ new TranslationHoverProvider(documentManager, translationProvider, findAppRootURI),
62
50
  new RenderPartialHoverProvider(getDocDefinitionForURI),
63
51
  new RenderPartialParameterHoverProvider(getDocDefinitionForURI),
64
52
  new LiquidDocTagHoverProvider(documentManager),
@@ -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,10 +17,8 @@ describe('Module: HtmlAttributeHoverProvider', async () => {
17
17
  objects: async () => [],
18
18
  liquidDrops: async () => [],
19
19
  tags: async () => [],
20
- systemTranslations: async () => ({}),
21
20
  },
22
21
  new TranslationProvider(new MockFileSystem({}, '.')),
23
- async (_rootUri: string) => ({} as MetafieldDefinitionMap),
24
22
  );
25
23
  });
26
24
 
@@ -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,10 +17,8 @@ describe('Module: HtmlAttributeHoverProvider', async () => {
17
17
  objects: async () => [],
18
18
  liquidDrops: async () => [],
19
19
  tags: async () => [],
20
- systemTranslations: async () => ({}),
21
20
  },
22
21
  new TranslationProvider(new MockFileSystem({}, '.')),
23
- async (_rootUri: string) => ({} as MetafieldDefinitionMap),
24
22
  );
25
23
  });
26
24
 
@@ -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,10 +17,8 @@ describe('Module: HtmlTagHoverProvider', async () => {
17
17
  objects: async () => [],
18
18
  liquidDrops: async () => [],
19
19
  tags: async () => [],
20
- systemTranslations: async () => ({}),
21
20
  },
22
21
  new TranslationProvider(new MockFileSystem({})),
23
- async (_rootUri: string) => ({} as MetafieldDefinitionMap),
24
22
  );
25
23
  });
26
24
 
@@ -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 '../../../../platformos-check-common/src/test/test-setup';
6
5
  import { formatLiquidDocTagHandle, SUPPORTED_LIQUID_DOC_TAG_HANDLES } from '../../utils/liquidDoc';
7
6
  import { TranslationProvider } from '@platformos/platformos-common';
@@ -19,10 +18,8 @@ describe('Module: RenderSnippetParameterHoverProvider', async () => {
19
18
  objects: async () => [],
20
19
  liquidDrops: async () => [],
21
20
  tags: async () => [],
22
- systemTranslations: async () => ({}),
23
21
  },
24
22
  new TranslationProvider(new MockFileSystem({})),
25
- async (_rootUri: string) => ({} as MetafieldDefinitionMap),
26
23
  );
27
24
  });
28
25
 
@@ -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
 
@@ -33,10 +32,8 @@ describe('Module: LiquidFilterArgumentHoverProvider', async () => {
33
32
  objects: async () => [],
34
33
  liquidDrops: async () => [],
35
34
  tags: async () => [],
36
- systemTranslations: async () => ({}),
37
35
  },
38
36
  new TranslationProvider(new MockFileSystem({})),
39
- async (_rootUri: string) => ({} as MetafieldDefinitionMap),
40
37
  );
41
38
  });
42
39
 
@@ -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 LiquidFilterArgumentHoverProvider implements BaseHoverProvider {
8
- constructor(private themeDocset: ThemeDocset) {}
8
+ constructor(private platformosDocset: PlatformOSDocset) {}
9
9
 
10
10
  async hover(currentNode: LiquidHtmlNode, ancestors: LiquidHtmlNode[]): Promise<Hover | null> {
11
11
  const parentNode = ancestors.at(-1);
@@ -19,7 +19,7 @@ export class LiquidFilterArgumentHoverProvider implements BaseHoverProvider {
19
19
  }
20
20
 
21
21
  const parentName = parentNode.name;
22
- const entries = await this.themeDocset.filters();
22
+ const entries = await this.platformosDocset.filters();
23
23
  const entry = entries.find((entry) => entry.name === parentName);
24
24
 
25
25
  if (!entry) {
@@ -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
 
@@ -24,10 +23,8 @@ describe('Module: LiquidFilterHoverProvider', async () => {
24
23
  objects: async () => [],
25
24
  liquidDrops: async () => [],
26
25
  tags: async () => [],
27
- systemTranslations: async () => ({}),
28
26
  },
29
27
  new TranslationProvider(new MockFileSystem({})),
30
- async (_rootUri: string) => ({} as MetafieldDefinitionMap),
31
28
  );
32
29
  });
33
30
 
@@ -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