@platformos/platformos-language-server-common 0.0.7 → 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 (239) hide show
  1. package/CHANGELOG.md +10 -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/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 +4 -16
  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 +12 -11
  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 +0 -8
  120. package/dist/utils/uri.js +1 -17
  121. package/dist/utils/uri.js.map +1 -1
  122. package/package.json +4 -4
  123. package/src/PropertyShapeInference.ts +76 -1
  124. package/src/TypeSystem.spec.ts +188 -450
  125. package/src/TypeSystem.ts +251 -457
  126. package/src/completions/CompletionsProvider.ts +13 -34
  127. package/src/completions/params/LiquidCompletionParams.spec.ts +0 -9
  128. package/src/completions/params/LiquidCompletionParams.ts +4 -14
  129. package/src/completions/params/fix.spec.ts +0 -3
  130. package/src/completions/providers/FilterCompletionProvider.spec.ts +2 -8
  131. package/src/completions/providers/FilterNamedParameterCompletionProvider.spec.ts +1 -5
  132. package/src/completions/providers/FilterNamedParameterCompletionProvider.ts +6 -6
  133. package/src/completions/providers/HtmlAttributeCompletionProvider.spec.ts +1 -4
  134. package/src/completions/providers/HtmlAttributeValueCompletionProvider.spec.ts +1 -4
  135. package/src/completions/providers/HtmlTagCompletionProvider.spec.ts +1 -4
  136. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.spec.ts +1 -28
  137. package/src/completions/providers/LiquidDocParamTypeCompletionProvider.ts +3 -3
  138. package/src/completions/providers/LiquidDocTagCompletionProvider.spec.ts +1 -26
  139. package/src/completions/providers/LiquidTagsCompletionProvider.spec.ts +2 -16
  140. package/src/completions/providers/LiquidTagsCompletionProvider.ts +3 -3
  141. package/src/completions/providers/ObjectAttributeCompletionProvider.spec.ts +2 -31
  142. package/src/completions/providers/ObjectCompletionProvider.spec.ts +34 -123
  143. package/src/completions/providers/PartialCompletionProvider.spec.ts +4 -13
  144. package/src/completions/providers/RenderPartialParameterCompletionProvider.spec.ts +3 -5
  145. package/src/completions/providers/RenderPartialParameterCompletionProvider.ts +0 -1
  146. package/src/completions/providers/TranslationCompletionProvider.spec.ts +1 -4
  147. package/src/completions/providers/index.ts +0 -3
  148. package/src/css/CSSLanguageService.ts +97 -81
  149. package/src/definitions/DefinitionProvider.ts +0 -6
  150. package/src/definitions/providers/TranslationStringDefinitionProvider.spec.ts +1 -5
  151. package/src/diagnostics/offenseToDiagnostic.ts +1 -1
  152. package/src/diagnostics/runChecks.spec.ts +16 -24
  153. package/src/diagnostics/runChecks.ts +17 -91
  154. package/src/docset/MarkdownRenderer.ts +1 -1
  155. package/src/documentLinks/DocumentLinksProvider.ts +3 -3
  156. package/src/documents/DocumentManager.spec.ts +12 -97
  157. package/src/documents/DocumentManager.ts +13 -14
  158. package/src/documents/types.ts +18 -9
  159. package/src/hover/HoverProvider.ts +9 -21
  160. package/src/hover/providers/HtmlAttributeHoverProvider.spec.ts +1 -3
  161. package/src/hover/providers/HtmlAttributeValueHoverProvider.spec.ts +1 -3
  162. package/src/hover/providers/HtmlTagHoverProvider.spec.ts +1 -3
  163. package/src/hover/providers/LiquidDocTagHoverProvider.spec.ts +0 -3
  164. package/src/hover/providers/LiquidFilterArgumentHoverProvider.spec.ts +0 -3
  165. package/src/hover/providers/LiquidFilterArgumentHoverProvider.ts +3 -3
  166. package/src/hover/providers/LiquidFilterHoverProvider.spec.ts +0 -3
  167. package/src/hover/providers/LiquidFilterHoverProvider.ts +3 -3
  168. package/src/hover/providers/LiquidObjectAttributeHoverProvider.spec.ts +1 -3
  169. package/src/hover/providers/LiquidObjectHoverProvider.spec.ts +46 -129
  170. package/src/hover/providers/LiquidTagHoverProvider.spec.ts +0 -3
  171. package/src/hover/providers/LiquidTagHoverProvider.ts +3 -3
  172. package/src/hover/providers/RenderPartialHoverProvider.spec.ts +1 -4
  173. package/src/hover/providers/RenderPartialHoverProvider.ts +1 -5
  174. package/src/hover/providers/RenderPartialParameterHoverProvider.spec.ts +1 -4
  175. package/src/hover/providers/RenderPartialParameterHoverProvider.ts +0 -1
  176. package/src/hover/providers/TranslationHoverProvider.spec.ts +1 -4
  177. package/src/hover/providers/TranslationHoverProvider.ts +3 -3
  178. package/src/index.ts +2 -5
  179. package/src/internal-types.ts +1 -1
  180. package/src/json/JSONContributions.ts +4 -61
  181. package/src/json/JSONLanguageService.ts +19 -117
  182. package/src/json/test/test-helpers.ts +4 -35
  183. package/src/json/utils.ts +0 -27
  184. package/src/rename/RenameProvider.ts +3 -3
  185. package/src/rename/providers/LiquidVariableRenameProvider.spec.ts +4 -4
  186. package/src/rename/providers/LiquidVariableRenameProvider.ts +4 -4
  187. package/src/renamed/RenameHandler.ts +4 -9
  188. package/src/renamed/handlers/AssetRenameHandler.spec.ts +3 -3
  189. package/src/renamed/handlers/AssetRenameHandler.ts +5 -5
  190. package/src/renamed/handlers/PartialRenameHandler.spec.ts +2 -2
  191. package/src/renamed/handlers/PartialRenameHandler.ts +5 -5
  192. package/src/renamed/handlers/utils.ts +1 -1
  193. package/src/server/{ThemeGraphManager.ts → AppGraphManager.ts} +21 -90
  194. package/src/server/startServer.spec.ts +7 -9
  195. package/src/server/startServer.ts +65 -217
  196. package/src/test/CompletionItemsAssertion.spec.ts +1 -4
  197. package/src/types.ts +33 -63
  198. package/src/utils/liquidDoc.ts +1 -1
  199. package/src/utils/uri.ts +0 -14
  200. package/src/completions/providers/ContentForBlockTypeCompletionProvider.spec.ts +0 -41
  201. package/src/completions/providers/ContentForBlockTypeCompletionProvider.ts +0 -42
  202. package/src/completions/providers/ContentForCompletionProvider.spec.ts +0 -96
  203. package/src/completions/providers/ContentForCompletionProvider.ts +0 -113
  204. package/src/completions/providers/ContentForParameterCompletionProvider.spec.ts +0 -362
  205. package/src/completions/providers/ContentForParameterCompletionProvider.ts +0 -187
  206. package/src/completions/providers/data/contentForParameterCompletionOptions.ts +0 -9
  207. package/src/css/CSSLanguageService.spec.ts +0 -159
  208. package/src/css/test/test-helpers.ts +0 -30
  209. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.spec.ts +0 -96
  210. package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.ts +0 -82
  211. package/src/hover/providers/ContentForArgumentHoverProvider.spec.ts +0 -76
  212. package/src/hover/providers/ContentForArgumentHoverProvider.ts +0 -56
  213. package/src/hover/providers/ContentForTypeHoverProvider.spec.ts +0 -91
  214. package/src/hover/providers/ContentForTypeHoverProvider.ts +0 -42
  215. package/src/json/JSONLanguageService.spec.ts +0 -424
  216. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.spec.ts +0 -163
  217. package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.ts +0 -121
  218. package/src/json/completions/providers/BlockTypeCompletionProvider.spec.ts +0 -137
  219. package/src/json/completions/providers/BlockTypeCompletionProvider.ts +0 -108
  220. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.spec.ts +0 -132
  221. package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.ts +0 -120
  222. package/src/json/completions/providers/SchemaTranslationCompletionProvider.ts +0 -51
  223. package/src/json/completions/providers/SettingsPropertyCompletionProvider.spec.ts +0 -211
  224. package/src/json/completions/providers/SettingsPropertyCompletionProvider.ts +0 -75
  225. package/src/json/documentLinks/DocumentLinksProvider.spec.ts +0 -223
  226. package/src/json/documentLinks/DocumentLinksProvider.ts +0 -61
  227. package/src/json/hover/providers/BlockSettingsHoverProvider.spec.ts +0 -292
  228. package/src/json/hover/providers/BlockSettingsHoverProvider.ts +0 -99
  229. package/src/json/hover/providers/SchemaTranslationHoverProvider.ts +0 -35
  230. package/src/json/hover/providers/SettingsHoverProvider.spec.ts +0 -139
  231. package/src/json/hover/providers/SettingsHoverProvider.ts +0 -79
  232. package/src/json/schemaSettings.spec.ts +0 -103
  233. package/src/json/schemaSettings.ts +0 -53
  234. package/src/plugins/css.ts +0 -12
  235. package/src/renamed/handlers/BlockRenameHandler.spec.ts +0 -399
  236. package/src/renamed/handlers/BlockRenameHandler.ts +0 -402
  237. package/src/renamed/handlers/SectionRenameHandler.spec.ts +0 -321
  238. package/src/renamed/handlers/SectionRenameHandler.ts +0 -224
  239. package/src/settings/index.ts +0 -50
@@ -1,17 +1,11 @@
1
1
  import {
2
- AugmentedThemeDocset,
2
+ AugmentedPlatformOSDocset,
3
3
  DocDefinition,
4
4
  findRoot as findConfigFileRoot,
5
5
  isError,
6
6
  makeFileExists,
7
7
  makeGetDefaultLocaleFileUri,
8
- makeGetDefaultSchemaLocaleFileUri,
9
- makeGetDefaultSchemaTranslations,
10
- makeGetDefaultTranslations,
11
- makeGetMetafieldDefinitions,
12
8
  memoize,
13
- MetafieldDefinitionMap,
14
- parseJSON,
15
9
  path,
16
10
  SourceCodeType,
17
11
  UriString,
@@ -24,14 +18,12 @@ import {
24
18
  InitializeResult,
25
19
  ShowDocumentRequest,
26
20
  TextDocumentSyncKind,
27
- WorkspaceFolder,
28
21
  } from 'vscode-languageserver';
29
22
  import { ClientCapabilities } from '../ClientCapabilities';
30
23
  import { CodeActionKinds, CodeActionsProvider } from '../codeActions';
31
24
  import { Commands, ExecuteCommandProvider } from '../commands';
32
25
  import { CompletionsProvider } from '../completions';
33
26
  import { GetPartialNamesForURI } from '../completions/providers/PartialCompletionProvider';
34
- import { CSSLanguageService } from '../css/CSSLanguageService';
35
27
  import { DefinitionProvider } from '../definitions/DefinitionProvider';
36
28
  import { DiagnosticsManager, makeRunChecks } from '../diagnostics';
37
29
  import { DocumentHighlightsProvider } from '../documentHighlights/DocumentHighlightsProvider';
@@ -39,6 +31,7 @@ import { DocumentLinksProvider } from '../documentLinks';
39
31
  import { AugmentedJsonSourceCode, DocumentManager } from '../documents';
40
32
  import { OnTypeFormattingProvider } from '../formatting';
41
33
  import { HoverProvider } from '../hover';
34
+ import { CSSLanguageService } from '../css/CSSLanguageService';
42
35
  import { JSONLanguageService } from '../json/JSONLanguageService';
43
36
  import { LinkedEditingRangesProvider } from '../linkedEditingRanges/LinkedEditingRangesProvider';
44
37
  import { RenameProvider } from '../rename/RenameProvider';
@@ -46,17 +39,16 @@ import { RenameHandler } from '../renamed/RenameHandler';
46
39
  import { GetTranslationsForURI } from '../translations';
47
40
  import {
48
41
  Dependencies,
49
- ThemeGraphDeadCodeRequest,
50
- ThemeGraphDependenciesRequest,
51
- ThemeGraphReferenceRequest,
52
- ThemeGraphRootRequest,
42
+ AppGraphDependenciesRequest,
43
+ AppGraphReferenceRequest,
44
+ AppGraphRootRequest,
53
45
  } from '../types';
54
46
  import { debounce } from '../utils';
55
47
  import { VERSION } from '../version';
56
48
  import { CachedFileSystem } from './CachedFileSystem';
57
49
  import { Configuration, INCLUDE_FILES_FROM_DISK } from './Configuration';
58
50
  import { safe } from './safe';
59
- import { ThemeGraphManager } from './ThemeGraphManager';
51
+ import { AppGraphManager } from './AppGraphManager';
60
52
  import { DocumentsLocator } from '@platformos/platformos-common';
61
53
  import { relative } from '@platformos/platformos-check-common/src/path';
62
54
  import { URI } from 'vscode-uri';
@@ -84,7 +76,7 @@ const hasUnsupportedDocument = (params: any) => {
84
76
  * This code runs in node and the browser, it can't talk to the file system
85
77
  * or make requests. Stuff like that should be injected.
86
78
  *
87
- * In browser, theme-check-js wants these things:
79
+ * In browser, platformos-check-js wants these things:
88
80
  * - fileExists(path)
89
81
  * - defaultTranslations
90
82
  *
@@ -97,8 +89,7 @@ export function startServer(
97
89
  loadConfig: injectedLoadConfig,
98
90
  log = defaultLogger,
99
91
  jsonValidationSet,
100
- themeDocset: remoteThemeDocset,
101
- fetchMetafieldDefinitionsForURI,
92
+ platformosDocset: remotePlatformOSDocset,
102
93
  }: Dependencies,
103
94
  ) {
104
95
  const fs = new CachedFileSystem(injectedFs);
@@ -111,21 +102,15 @@ export function startServer(
111
102
  fs,
112
103
  connection,
113
104
  clientCapabilities,
114
- getModeForURI,
115
105
  isValidSchema,
116
106
  );
117
- const themeGraphManager = new ThemeGraphManager(
118
- connection,
119
- documentManager,
120
- fs,
121
- findThemeRootURI,
122
- );
107
+ const appGraphManager = new AppGraphManager(connection, documentManager, fs, findAppRootURI);
123
108
  const diagnosticsManager = new DiagnosticsManager(connection);
124
109
  const documentsLocator = new DocumentsLocator(fs);
125
110
  const translationProvider = new TranslationProvider(fs);
126
111
  const documentLinksProvider = new DocumentLinksProvider(
127
112
  documentManager,
128
- findThemeRootURI,
113
+ findAppRootURI,
129
114
  documentsLocator,
130
115
  translationProvider,
131
116
  );
@@ -150,87 +135,50 @@ export function startServer(
150
135
  connection,
151
136
  clientCapabilities,
152
137
  documentManager,
153
- findThemeRootURI,
138
+ findAppRootURI,
154
139
  );
155
140
  const renameHandler = new RenameHandler(
156
141
  connection,
157
142
  clientCapabilities,
158
143
  documentManager,
159
- findThemeRootURI,
144
+ findAppRootURI,
160
145
  );
161
146
 
162
- async function findThemeRootURI(uri: string): Promise<string | null> {
147
+ async function findAppRootURI(uri: string): Promise<string | null> {
163
148
  const rootUri = await findConfigFileRoot(uri, fileExists);
164
149
  if (!rootUri) return null;
165
150
  const config = await loadConfig(rootUri, fs);
166
151
  return config.rootUri;
167
152
  }
168
153
 
169
- const getMetafieldDefinitionsForRootUri = memoize(
170
- makeGetMetafieldDefinitions(fs),
171
- (rootUri) => rootUri,
172
- );
173
-
174
- const getMetafieldDefinitions: NonNullable<Dependencies['getMetafieldDefinitions']> = async (
175
- uri: string,
176
- ) => {
177
- const rootUri = await findThemeRootURI(uri);
178
- if (!rootUri) {
179
- return {} as MetafieldDefinitionMap;
180
- }
181
-
182
- return getMetafieldDefinitionsForRootUri(rootUri);
183
- };
184
-
185
154
  // These are augmented here so that the caching is maintained over different runs.
186
- const themeDocset = new AugmentedThemeDocset(remoteThemeDocset);
187
- const cssLanguageService = new CSSLanguageService(documentManager);
155
+ const platformosDocset = new AugmentedPlatformOSDocset(remotePlatformOSDocset);
188
156
  const runChecks = debounce(
189
157
  makeRunChecks(documentManager, diagnosticsManager, {
190
158
  fs,
191
159
  loadConfig,
192
- themeDocset,
160
+ platformosDocset,
193
161
  jsonValidationSet,
194
- getMetafieldDefinitions,
195
- cssLanguageService,
196
- themeGraphManager,
162
+ appGraphManager,
197
163
  includeFilesFromDisk: () => configuration[INCLUDE_FILES_FROM_DISK],
198
164
  }),
199
165
  100,
200
166
  );
201
167
 
202
- const getTranslationsForURI: GetTranslationsForURI = async (uri) => {
203
- const rootURI = await findThemeRootURI(uri);
204
- if (!rootURI) return {};
205
-
206
- const theme = documentManager.theme(rootURI, configuration[INCLUDE_FILES_FROM_DISK]);
207
- const getDefaultTranslations = makeGetDefaultTranslations(fs, theme, rootURI);
208
- const [defaultTranslations, shopifyTranslations] = await Promise.all([
209
- getDefaultTranslations(),
210
- themeDocset.systemTranslations(),
211
- ]);
212
-
213
- return { ...shopifyTranslations, ...defaultTranslations };
214
- };
215
-
216
- const getSchemaTranslationsForURI: GetTranslationsForURI = async (uri) => {
217
- const rootURI = await findThemeRootURI(uri);
218
- if (!rootURI) return {};
219
-
220
- const theme = documentManager.theme(rootURI, configuration[INCLUDE_FILES_FROM_DISK]);
221
- const getDefaultSchemaTranslations = makeGetDefaultSchemaTranslations(fs, theme, rootURI);
222
- return getDefaultSchemaTranslations();
223
- };
168
+ // In platformOS, there are no built-in system translations. User-defined translations
169
+ // are resolved via TranslationProvider at the point of lookup.
170
+ const getTranslationsForURI: GetTranslationsForURI = async (_uri) => ({});
224
171
 
225
172
  const getDocDefinitionForURI = async (
226
173
  uri: UriString,
227
- category: 'app/views/partials' | 'blocks',
228
174
  name: string,
229
175
  ): Promise<DocDefinition | undefined> => {
230
- const rootUri = await findThemeRootURI(uri);
176
+ const rootUri = await findAppRootURI(uri);
231
177
  if (!rootUri) return undefined;
232
178
 
233
- const fileUri = path.join(rootUri, category, `${name}.liquid`);
179
+ const fileUri = await documentsLocator.locate(URI.parse(rootUri), 'render', name);
180
+ if (!fileUri) return undefined;
181
+
234
182
  const file = documentManager.get(fileUri);
235
183
 
236
184
  if (!file || file.type !== SourceCodeType.LiquidHtml || isError(file.ast)) {
@@ -242,7 +190,7 @@ export function startServer(
242
190
 
243
191
  const getPartialNamesForURI: GetPartialNamesForURI = safe(
244
192
  async (uri: string, partial: string, type: string | undefined) => {
245
- const rootUri = await findThemeRootURI(uri);
193
+ const rootUri = await findAppRootURI(uri);
246
194
  if (!rootUri) return [];
247
195
 
248
196
  return await documentsLocator.list(URI.parse(rootUri), type, partial);
@@ -250,52 +198,6 @@ export function startServer(
250
198
  [],
251
199
  );
252
200
 
253
- const getThemeSettingsSchemaForURI = safe(async (uri: string) => {
254
- const rootUri = await findThemeRootURI(uri);
255
- if (!rootUri) return [];
256
-
257
- const settingsSchemaUri = path.join(rootUri, 'config', 'settings_schema.json');
258
- const contents = await fs.readFile(settingsSchemaUri);
259
- const json = parseJSON(contents);
260
- if (isError(json) || !Array.isArray(json)) {
261
- throw new Error('Settings JSON file not in correct format');
262
- }
263
- return json;
264
- }, []);
265
-
266
- async function getModeForURI(uri: string) {
267
- const rootUri = await findConfigFileRoot(uri, fileExists);
268
- if (!rootUri) return 'theme';
269
- const config = await loadConfig(rootUri, fs);
270
- return config.context;
271
- }
272
-
273
- const getThemeBlockNames = safe(async (uri: string, includePrivate: boolean) => {
274
- const rootUri = await findThemeRootURI(uri);
275
- if (!rootUri) return [];
276
-
277
- const blocks = await fs.readDirectory(path.join(rootUri, 'blocks'));
278
- const blockNames = blocks.map(([uri]) => path.basename(uri, '.liquid'));
279
-
280
- if (includePrivate) {
281
- return blockNames;
282
- }
283
-
284
- return blockNames.filter((blockName) => !blockName.startsWith('_'));
285
- }, []);
286
-
287
- async function getThemeBlockSchema(uri: string, name: string) {
288
- const rootUri = await findThemeRootURI(uri);
289
- if (!rootUri) return;
290
-
291
- const blockUri = path.join(rootUri, 'blocks', `${name}.liquid`);
292
- const doc = documentManager.get(blockUri);
293
- if (!doc || doc.type !== SourceCodeType.LiquidHtml) {
294
- return;
295
- }
296
- return doc.getSchema();
297
- }
298
-
299
201
  // Defined as a function to solve a circular dependency (doc manager & json
300
202
  // lang service both need each other)
301
203
  async function isValidSchema(uri: string, jsonString: string) {
@@ -304,7 +206,7 @@ export function startServer(
304
206
 
305
207
  const getDefaultLocaleFileUri = makeGetDefaultLocaleFileUri(fs);
306
208
  async function getDefaultLocaleSourceCode(uri: string) {
307
- const rootUri = await findThemeRootURI(uri);
209
+ const rootUri = await findAppRootURI(uri);
308
210
  if (!rootUri) return null;
309
211
 
310
212
  const defaultLocaleFileUri = await getDefaultLocaleFileUri(rootUri);
@@ -313,43 +215,19 @@ export function startServer(
313
215
  return (documentManager.get(defaultLocaleFileUri) as AugmentedJsonSourceCode) ?? null;
314
216
  }
315
217
 
316
- const getDefaultSchemaLocaleFileUri = makeGetDefaultSchemaLocaleFileUri(fs);
317
- async function getDefaultSchemaLocaleSourceCode(uri: string) {
318
- const rootUri = await findThemeRootURI(uri);
319
- if (!rootUri) return null;
320
-
321
- const defaultLocaleFileUri = await getDefaultSchemaLocaleFileUri(rootUri);
322
- if (!defaultLocaleFileUri) return null;
323
-
324
- return (documentManager.get(defaultLocaleFileUri) as AugmentedJsonSourceCode) ?? null;
325
- }
326
- const definitionsProvider = new DefinitionProvider(
327
- documentManager,
328
- getDefaultLocaleSourceCode,
329
- getDefaultSchemaLocaleSourceCode,
330
- );
331
- const jsonLanguageService = new JSONLanguageService(
332
- documentManager,
333
- jsonValidationSet,
334
- getSchemaTranslationsForURI,
335
- getModeForURI,
336
- getThemeBlockNames,
337
- getThemeBlockSchema,
338
- findThemeRootURI,
339
- );
218
+ const definitionsProvider = new DefinitionProvider(documentManager, getDefaultLocaleSourceCode);
219
+ const jsonLanguageService = new JSONLanguageService(documentManager, jsonValidationSet);
220
+ const cssLanguageService = new CSSLanguageService(documentManager);
340
221
  const completionsProvider = new CompletionsProvider({
341
222
  documentManager,
342
- themeDocset,
223
+ platformosDocset,
343
224
  getTranslationsForURI,
344
225
  getPartialNamesForURI,
345
- getThemeSettingsSchemaForURI,
346
226
  log,
347
- getThemeBlockNames,
348
- getMetafieldDefinitions,
349
227
  getDocDefinitionForURI,
350
228
  fs,
351
229
  documentsLocator,
352
- findThemeRootURI,
230
+ findAppRootURI,
353
231
  notifyUnableToInferProperties: (variableName: string) => {
354
232
  connection.window.showInformationMessage(
355
233
  `Unable to infer properties for '${variableName}'. Property completion is only supported for variables from parse_json, to_hash, or graphql.`,
@@ -358,13 +236,11 @@ export function startServer(
358
236
  });
359
237
  const hoverProvider = new HoverProvider(
360
238
  documentManager,
361
- themeDocset,
239
+ platformosDocset,
362
240
  translationProvider,
363
- getMetafieldDefinitions,
364
241
  getTranslationsForURI,
365
- getThemeSettingsSchemaForURI,
366
242
  getDocDefinitionForURI,
367
- findThemeRootURI,
243
+ findAppRootURI,
368
244
  );
369
245
 
370
246
  const executeCommandProvider = new ExecuteCommandProvider(
@@ -375,22 +251,10 @@ export function startServer(
375
251
  connection,
376
252
  );
377
253
 
378
- const fetchMetafieldDefinitionsForWorkspaceFolders = async (folders: WorkspaceFolder[]) => {
379
- if (!fetchMetafieldDefinitionsForURI) return;
380
-
381
- for (let folder of folders) {
382
- const mode = await getModeForURI(folder.uri);
383
-
384
- if (mode === 'theme') {
385
- fetchMetafieldDefinitionsForURI(folder.uri);
386
- }
387
- }
388
- };
389
-
390
254
  connection.onInitialize((params) => {
391
255
  clientCapabilities.setup(params.capabilities, params.initializationOptions);
392
- cssLanguageService.setup(params.capabilities);
393
256
  jsonLanguageService.setup(params.capabilities);
257
+ cssLanguageService.setup(params.capabilities);
394
258
  configuration.setup();
395
259
 
396
260
  const fileOperationRegistrationOptions: FileOperationRegistrationOptions = {
@@ -452,7 +316,7 @@ export function startServer(
452
316
  },
453
317
  },
454
318
  serverInfo: {
455
- name: 'theme-language-server',
319
+ name: 'platformos-language-server',
456
320
  version: VERSION,
457
321
  },
458
322
  };
@@ -475,20 +339,11 @@ export function startServer(
475
339
  {
476
340
  globPattern: '**/*.graphql',
477
341
  },
342
+ {
343
+ globPattern: '**/*.css',
344
+ },
478
345
  ],
479
346
  });
480
-
481
- if (clientCapabilities.hasWorkspaceFoldersSupport) {
482
- connection.workspace.getWorkspaceFolders().then(async (folders) => {
483
- if (!folders) return;
484
-
485
- fetchMetafieldDefinitionsForWorkspaceFolders(folders);
486
- });
487
-
488
- connection.workspace.onDidChangeWorkspaceFolders(async (params) => {
489
- fetchMetafieldDefinitionsForWorkspaceFolders(params.added);
490
- });
491
- }
492
347
  });
493
348
 
494
349
  connection.onDidChangeConfiguration((_params) => {
@@ -498,6 +353,10 @@ export function startServer(
498
353
  connection.onDidOpenTextDocument(async (params) => {
499
354
  if (hasUnsupportedDocument(params)) return;
500
355
  const { uri, text, version } = params.textDocument;
356
+ if (uri.endsWith('.css')) {
357
+ cssLanguageService.open(uri, text, version);
358
+ return;
359
+ }
501
360
  documentManager.open(uri, text, version);
502
361
  if (await configuration.shouldCheckOnOpen()) {
503
362
  runChecks([uri]);
@@ -516,7 +375,7 @@ export function startServer(
516
375
  // If we open a file that we know is liquid, then we can kind of guarantee
517
376
  // we'll find a theme root and we'll preload that.
518
377
  if (await configuration.shouldPreloadOnBoot()) {
519
- const rootUri = await findThemeRootURI(uri);
378
+ const rootUri = await findAppRootURI(uri);
520
379
  if (rootUri) {
521
380
  documentManager.preload(rootUri);
522
381
  }
@@ -526,6 +385,10 @@ export function startServer(
526
385
  connection.onDidChangeTextDocument(async (params) => {
527
386
  if (hasUnsupportedDocument(params)) return;
528
387
  const { uri, version } = params.textDocument;
388
+ if (uri.endsWith('.css')) {
389
+ cssLanguageService.change(uri, params.contentChanges[0].text, version);
390
+ return;
391
+ }
529
392
  documentManager.change(uri, params.contentChanges[0].text, version);
530
393
  if (await configuration.shouldCheckOnChange()) {
531
394
  runChecks([uri]);
@@ -546,6 +409,10 @@ export function startServer(
546
409
  connection.onDidCloseTextDocument((params) => {
547
410
  if (hasUnsupportedDocument(params)) return;
548
411
  const { uri } = params.textDocument;
412
+ if (uri.endsWith('.css')) {
413
+ cssLanguageService.close(uri);
414
+ return;
415
+ }
549
416
  documentManager.close(uri);
550
417
  diagnosticsManager.clear(uri);
551
418
  });
@@ -637,13 +504,12 @@ export function startServer(
637
504
  fs.stat.invalidate(oldUri);
638
505
  fs.stat.invalidate(newUri);
639
506
 
640
- themeGraphManager.rename(oldUri, newUri);
507
+ appGraphManager.rename(oldUri, newUri);
641
508
  }
642
509
 
643
- // We should complete refactors before running theme check
644
510
  await renameHandler.onDidRenameFiles(params);
645
511
 
646
- // MissingAssets/MissingSnippet should be rerun when a file is deleted
512
+ // MissingAssets/MissingPartial should be rerun when a file is deleted
647
513
  // since the file rename might cause an error.
648
514
  runChecks.force(triggerUris);
649
515
  });
@@ -659,7 +525,6 @@ export function startServer(
659
525
  *
660
526
  * Not redundant for operations that happen outside of the editor
661
527
  * - git pull, checkout, reset, stash pop, etc.
662
- * - shopify theme metafields pull
663
528
  * - etc.
664
529
  *
665
530
  * It always runs and onDid* will never fire without a corresponding onDidChangeWatchedFiles.
@@ -672,8 +537,8 @@ export function startServer(
672
537
  const triggerUris = params.changes.map((change) => change.uri);
673
538
  const updates: Promise<any>[] = [];
674
539
  for (const change of params.changes) {
675
- // Theme Check config changes should clear the config cache
676
- if (change.uri.endsWith('.theme-check.yml')) {
540
+ // App Check config changes should clear the config cache
541
+ if (change.uri.endsWith('.platformos-check.yml')) {
677
542
  loadConfig.clearCache();
678
543
  continue;
679
544
  }
@@ -690,7 +555,7 @@ export function startServer(
690
555
  fs.readDirectory.invalidate(path.dirname(change.uri));
691
556
  fs.readFile.invalidate(change.uri);
692
557
  fs.stat.invalidate(change.uri);
693
- themeGraphManager.create(change.uri);
558
+ appGraphManager.create(change.uri);
694
559
  // If a file is created under out feet, we update its contents.
695
560
  updates.push(documentManager.changeFromDisk(change.uri));
696
561
  break;
@@ -699,7 +564,7 @@ export function startServer(
699
564
  // A changed file invalidates readFile and stat (but not readDirectory)
700
565
  fs.readFile.invalidate(change.uri);
701
566
  fs.stat.invalidate(change.uri);
702
- themeGraphManager.change(change.uri);
567
+ appGraphManager.change(change.uri);
703
568
  // If the file is not open, we update its contents in the doc manager
704
569
  // If it is open, then we don't need to update it because the document manager
705
570
  // will have the version from the editor.
@@ -713,60 +578,43 @@ export function startServer(
713
578
  fs.readDirectory.invalidate(path.dirname(change.uri));
714
579
  fs.readFile.invalidate(change.uri);
715
580
  fs.stat.invalidate(change.uri);
716
- themeGraphManager.delete(change.uri);
581
+ appGraphManager.delete(change.uri);
717
582
  // If a file is deleted, it's removed from the document manager
718
583
  documentManager.delete(change.uri);
719
584
  break;
720
585
  }
721
586
 
722
- if (change.uri.endsWith('metafields.json')) {
723
- updates.push(
724
- findThemeRootURI(change.uri).then((rootUri) => {
725
- if (rootUri) {
726
- getMetafieldDefinitionsForRootUri.invalidate(rootUri);
727
- }
728
- }),
729
- );
730
- }
587
+ // metafields.json support removed
731
588
  }
732
589
 
733
590
  await Promise.all(updates);
734
591
 
735
- // MissingAssets/MissingSnippet should be rerun when a file is deleted
592
+ // MissingAssets/MissingPartial should be rerun when a file is deleted
736
593
  // since an error might be introduced (and vice versa).
737
594
  runChecks.force(triggerUris);
738
595
  });
739
596
 
740
- connection.onRequest(ThemeGraphReferenceRequest.type, async (params) => {
597
+ connection.onRequest(AppGraphReferenceRequest.type, async (params) => {
741
598
  if (hasUnsupportedDocument(params)) return [];
742
599
  const { uri, offset, includeIndirect } = params;
743
- return themeGraphManager.getReferences(uri, offset, { includeIndirect }).catch((_) => []);
600
+ return appGraphManager.getReferences(uri, offset, { includeIndirect }).catch((_) => []);
744
601
  });
745
602
 
746
- connection.onRequest(ThemeGraphDependenciesRequest.type, async (params) => {
603
+ connection.onRequest(AppGraphDependenciesRequest.type, async (params) => {
747
604
  if (hasUnsupportedDocument(params)) return [];
748
605
  const { uri, offset, includeIndirect } = params;
749
- return themeGraphManager.getDependencies(uri, offset, { includeIndirect }).catch((_) => []);
606
+ return appGraphManager.getDependencies(uri, offset, { includeIndirect }).catch((_) => []);
750
607
  });
751
608
 
752
- connection.onRequest(ThemeGraphRootRequest.type, async (params) => {
609
+ connection.onRequest(AppGraphRootRequest.type, async (params) => {
753
610
  if (hasUnsupportedDocument(params)) return '';
754
611
  const { uri } = params;
755
- const rootUri = await findThemeRootURI(uri).catch((_) => undefined);
612
+ const rootUri = await findAppRootURI(uri).catch((_) => undefined);
756
613
  if (!rootUri || path.dirname(rootUri) === rootUri) {
757
614
  console.error(uri);
758
615
  }
759
616
  return rootUri;
760
617
  });
761
618
 
762
- connection.onRequest(ThemeGraphDeadCodeRequest.type, async (params) => {
763
- if (hasUnsupportedDocument(params)) return [];
764
- const { uri } = params;
765
- const rootUri = await findThemeRootURI(uri);
766
- if (!rootUri) return [];
767
- const deadFiles = await themeGraphManager.deadCode(rootUri);
768
- return deadFiles;
769
- });
770
-
771
619
  connection.listen();
772
620
  }
@@ -1,7 +1,6 @@
1
1
  import { expect, describe, it, beforeEach } from 'vitest';
2
2
  import { CompletionsProvider } from '../completions';
3
3
  import { DocumentManager } from '../documents';
4
- import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
5
4
 
6
5
  describe('Module: CompletionItemsAssertion', () => {
7
6
  let provider: CompletionsProvider;
@@ -11,15 +10,13 @@ describe('Module: CompletionItemsAssertion', () => {
11
10
  documentManager = new DocumentManager();
12
11
  provider = new CompletionsProvider({
13
12
  documentManager,
14
- themeDocset: {
13
+ platformosDocset: {
15
14
  graphQL: async () => null,
16
15
  filters: async () => [],
17
16
  objects: async () => [],
18
17
  liquidDrops: async () => [],
19
18
  tags: async () => [{ name: 'render' }],
20
- systemTranslations: async () => ({}),
21
19
  },
22
- getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
23
20
  });
24
21
  });
25
22