@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.
- package/CHANGELOG.md +10 -0
- package/dist/PropertyShapeInference.d.ts +18 -0
- package/dist/PropertyShapeInference.js +58 -0
- package/dist/PropertyShapeInference.js.map +1 -1
- package/dist/TypeSystem.d.ts +4 -9
- package/dist/TypeSystem.js +234 -388
- package/dist/TypeSystem.js.map +1 -1
- package/dist/codeActions/providers/GenerateDocBlockProvider.d.ts +10 -0
- package/dist/codeActions/providers/GenerateDocBlockProvider.js +39 -0
- package/dist/codeActions/providers/GenerateDocBlockProvider.js.map +1 -0
- package/dist/commands/providers/GenerateDocBlockCommandProvider.d.ts +19 -0
- package/dist/commands/providers/GenerateDocBlockCommandProvider.js +64 -0
- package/dist/commands/providers/GenerateDocBlockCommandProvider.js.map +1 -0
- package/dist/completions/CompletionsProvider.d.ts +6 -10
- package/dist/completions/CompletionsProvider.js +6 -9
- package/dist/completions/CompletionsProvider.js.map +1 -1
- package/dist/completions/params/LiquidCompletionParams.js +4 -16
- package/dist/completions/params/LiquidCompletionParams.js.map +1 -1
- package/dist/completions/providers/ContentForCompletionProvider.js +2 -4
- package/dist/completions/providers/ContentForCompletionProvider.js.map +1 -1
- package/dist/completions/providers/FilterNamedParameterCompletionProvider.d.ts +3 -3
- package/dist/completions/providers/FilterNamedParameterCompletionProvider.js +6 -6
- package/dist/completions/providers/FilterNamedParameterCompletionProvider.js.map +1 -1
- package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.d.ts +3 -3
- package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js +3 -3
- package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js.map +1 -1
- package/dist/completions/providers/LiquidTagsCompletionProvider.d.ts +3 -3
- package/dist/completions/providers/LiquidTagsCompletionProvider.js +3 -3
- package/dist/completions/providers/LiquidTagsCompletionProvider.js.map +1 -1
- package/dist/completions/providers/RenderPartialParameterCompletionProvider.js +1 -1
- package/dist/completions/providers/RenderPartialParameterCompletionProvider.js.map +1 -1
- package/dist/completions/providers/index.d.ts +0 -3
- package/dist/completions/providers/index.js +1 -7
- package/dist/completions/providers/index.js.map +1 -1
- package/dist/css/CSSLanguageService.d.ts +19 -5
- package/dist/css/CSSLanguageService.js +77 -63
- package/dist/css/CSSLanguageService.js.map +1 -1
- package/dist/definitions/DefinitionProvider.d.ts +1 -1
- package/dist/definitions/DefinitionProvider.js +1 -3
- package/dist/definitions/DefinitionProvider.js.map +1 -1
- package/dist/diagnostics/offenseToDiagnostic.js +1 -1
- package/dist/diagnostics/offenseToDiagnostic.js.map +1 -1
- package/dist/diagnostics/runChecks.d.ts +3 -5
- package/dist/diagnostics/runChecks.js +12 -64
- package/dist/diagnostics/runChecks.js.map +1 -1
- package/dist/docset/MarkdownRenderer.js +1 -1
- package/dist/docset/MarkdownRenderer.js.map +1 -1
- package/dist/documentLinks/DocumentLinksProvider.d.ts +3 -3
- package/dist/documentLinks/DocumentLinksProvider.js +3 -3
- package/dist/documentLinks/DocumentLinksProvider.js.map +1 -1
- package/dist/documents/DocumentManager.d.ts +4 -5
- package/dist/documents/DocumentManager.js +12 -11
- package/dist/documents/DocumentManager.js.map +1 -1
- package/dist/documents/types.d.ts +16 -3
- package/dist/documents/types.js +3 -3
- package/dist/documents/types.js.map +1 -1
- package/dist/hover/HoverProvider.d.ts +5 -8
- package/dist/hover/HoverProvider.js +8 -14
- package/dist/hover/HoverProvider.js.map +1 -1
- package/dist/hover/providers/LiquidFilterArgumentHoverProvider.d.ts +3 -3
- package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js +3 -3
- package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js.map +1 -1
- package/dist/hover/providers/LiquidFilterHoverProvider.d.ts +3 -3
- package/dist/hover/providers/LiquidFilterHoverProvider.js +3 -3
- package/dist/hover/providers/LiquidFilterHoverProvider.js.map +1 -1
- package/dist/hover/providers/LiquidTagHoverProvider.d.ts +3 -3
- package/dist/hover/providers/LiquidTagHoverProvider.js +3 -3
- package/dist/hover/providers/LiquidTagHoverProvider.js.map +1 -1
- package/dist/hover/providers/RenderPartialHoverProvider.js +1 -1
- package/dist/hover/providers/RenderPartialHoverProvider.js.map +1 -1
- package/dist/hover/providers/RenderPartialParameterHoverProvider.js +1 -1
- package/dist/hover/providers/RenderPartialParameterHoverProvider.js.map +1 -1
- package/dist/hover/providers/TranslationHoverProvider.d.ts +3 -3
- package/dist/hover/providers/TranslationHoverProvider.js +3 -3
- package/dist/hover/providers/TranslationHoverProvider.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal-types.d.ts +1 -1
- package/dist/json/JSONContributions.d.ts +1 -5
- package/dist/json/JSONContributions.js +4 -36
- package/dist/json/JSONContributions.js.map +1 -1
- package/dist/json/JSONLanguageService.d.ts +4 -12
- package/dist/json/JSONLanguageService.js +17 -80
- package/dist/json/JSONLanguageService.js.map +1 -1
- package/dist/json/test/test-helpers.d.ts +1 -3
- package/dist/json/test/test-helpers.js +3 -19
- package/dist/json/test/test-helpers.js.map +1 -1
- package/dist/json/utils.d.ts +0 -5
- package/dist/json/utils.js +0 -24
- package/dist/json/utils.js.map +1 -1
- package/dist/rename/RenameProvider.d.ts +2 -2
- package/dist/rename/RenameProvider.js +2 -2
- package/dist/rename/RenameProvider.js.map +1 -1
- package/dist/rename/providers/LiquidVariableRenameProvider.d.ts +3 -3
- package/dist/rename/providers/LiquidVariableRenameProvider.js +4 -4
- package/dist/rename/providers/LiquidVariableRenameProvider.js.map +1 -1
- package/dist/renamed/RenameHandler.d.ts +2 -3
- package/dist/renamed/RenameHandler.js +3 -8
- package/dist/renamed/RenameHandler.js.map +1 -1
- package/dist/renamed/handlers/AssetRenameHandler.d.ts +3 -3
- package/dist/renamed/handlers/AssetRenameHandler.js +5 -5
- package/dist/renamed/handlers/AssetRenameHandler.js.map +1 -1
- package/dist/renamed/handlers/PartialRenameHandler.d.ts +3 -3
- package/dist/renamed/handlers/PartialRenameHandler.js +5 -5
- package/dist/renamed/handlers/PartialRenameHandler.js.map +1 -1
- package/dist/renamed/handlers/utils.d.ts +1 -1
- package/dist/server/AppGraphManager.d.ts +32 -0
- package/dist/server/AppGraphManager.js +155 -0
- package/dist/server/AppGraphManager.js.map +1 -0
- package/dist/server/startServer.d.ts +2 -2
- package/dist/server/startServer.js +62 -164
- package/dist/server/startServer.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +33 -54
- package/dist/types.js +21 -26
- package/dist/types.js.map +1 -1
- package/dist/utils/liquidDoc.js +1 -1
- package/dist/utils/liquidDoc.js.map +1 -1
- package/dist/utils/uri.d.ts +0 -8
- package/dist/utils/uri.js +1 -17
- package/dist/utils/uri.js.map +1 -1
- package/package.json +4 -4
- package/src/PropertyShapeInference.ts +76 -1
- package/src/TypeSystem.spec.ts +188 -450
- package/src/TypeSystem.ts +251 -457
- package/src/completions/CompletionsProvider.ts +13 -34
- package/src/completions/params/LiquidCompletionParams.spec.ts +0 -9
- package/src/completions/params/LiquidCompletionParams.ts +4 -14
- package/src/completions/params/fix.spec.ts +0 -3
- package/src/completions/providers/FilterCompletionProvider.spec.ts +2 -8
- package/src/completions/providers/FilterNamedParameterCompletionProvider.spec.ts +1 -5
- package/src/completions/providers/FilterNamedParameterCompletionProvider.ts +6 -6
- package/src/completions/providers/HtmlAttributeCompletionProvider.spec.ts +1 -4
- package/src/completions/providers/HtmlAttributeValueCompletionProvider.spec.ts +1 -4
- package/src/completions/providers/HtmlTagCompletionProvider.spec.ts +1 -4
- package/src/completions/providers/LiquidDocParamTypeCompletionProvider.spec.ts +1 -28
- package/src/completions/providers/LiquidDocParamTypeCompletionProvider.ts +3 -3
- package/src/completions/providers/LiquidDocTagCompletionProvider.spec.ts +1 -26
- package/src/completions/providers/LiquidTagsCompletionProvider.spec.ts +2 -16
- package/src/completions/providers/LiquidTagsCompletionProvider.ts +3 -3
- package/src/completions/providers/ObjectAttributeCompletionProvider.spec.ts +2 -31
- package/src/completions/providers/ObjectCompletionProvider.spec.ts +34 -123
- package/src/completions/providers/PartialCompletionProvider.spec.ts +4 -13
- package/src/completions/providers/RenderPartialParameterCompletionProvider.spec.ts +3 -5
- package/src/completions/providers/RenderPartialParameterCompletionProvider.ts +0 -1
- package/src/completions/providers/TranslationCompletionProvider.spec.ts +1 -4
- package/src/completions/providers/index.ts +0 -3
- package/src/css/CSSLanguageService.ts +97 -81
- package/src/definitions/DefinitionProvider.ts +0 -6
- package/src/definitions/providers/TranslationStringDefinitionProvider.spec.ts +1 -5
- package/src/diagnostics/offenseToDiagnostic.ts +1 -1
- package/src/diagnostics/runChecks.spec.ts +16 -24
- package/src/diagnostics/runChecks.ts +17 -91
- package/src/docset/MarkdownRenderer.ts +1 -1
- package/src/documentLinks/DocumentLinksProvider.ts +3 -3
- package/src/documents/DocumentManager.spec.ts +12 -97
- package/src/documents/DocumentManager.ts +13 -14
- package/src/documents/types.ts +18 -9
- package/src/hover/HoverProvider.ts +9 -21
- package/src/hover/providers/HtmlAttributeHoverProvider.spec.ts +1 -3
- package/src/hover/providers/HtmlAttributeValueHoverProvider.spec.ts +1 -3
- package/src/hover/providers/HtmlTagHoverProvider.spec.ts +1 -3
- package/src/hover/providers/LiquidDocTagHoverProvider.spec.ts +0 -3
- package/src/hover/providers/LiquidFilterArgumentHoverProvider.spec.ts +0 -3
- package/src/hover/providers/LiquidFilterArgumentHoverProvider.ts +3 -3
- package/src/hover/providers/LiquidFilterHoverProvider.spec.ts +0 -3
- package/src/hover/providers/LiquidFilterHoverProvider.ts +3 -3
- package/src/hover/providers/LiquidObjectAttributeHoverProvider.spec.ts +1 -3
- package/src/hover/providers/LiquidObjectHoverProvider.spec.ts +46 -129
- package/src/hover/providers/LiquidTagHoverProvider.spec.ts +0 -3
- package/src/hover/providers/LiquidTagHoverProvider.ts +3 -3
- package/src/hover/providers/RenderPartialHoverProvider.spec.ts +1 -4
- package/src/hover/providers/RenderPartialHoverProvider.ts +1 -5
- package/src/hover/providers/RenderPartialParameterHoverProvider.spec.ts +1 -4
- package/src/hover/providers/RenderPartialParameterHoverProvider.ts +0 -1
- package/src/hover/providers/TranslationHoverProvider.spec.ts +1 -4
- package/src/hover/providers/TranslationHoverProvider.ts +3 -3
- package/src/index.ts +2 -5
- package/src/internal-types.ts +1 -1
- package/src/json/JSONContributions.ts +4 -61
- package/src/json/JSONLanguageService.ts +19 -117
- package/src/json/test/test-helpers.ts +4 -35
- package/src/json/utils.ts +0 -27
- package/src/rename/RenameProvider.ts +3 -3
- package/src/rename/providers/LiquidVariableRenameProvider.spec.ts +4 -4
- package/src/rename/providers/LiquidVariableRenameProvider.ts +4 -4
- package/src/renamed/RenameHandler.ts +4 -9
- package/src/renamed/handlers/AssetRenameHandler.spec.ts +3 -3
- package/src/renamed/handlers/AssetRenameHandler.ts +5 -5
- package/src/renamed/handlers/PartialRenameHandler.spec.ts +2 -2
- package/src/renamed/handlers/PartialRenameHandler.ts +5 -5
- package/src/renamed/handlers/utils.ts +1 -1
- package/src/server/{ThemeGraphManager.ts → AppGraphManager.ts} +21 -90
- package/src/server/startServer.spec.ts +7 -9
- package/src/server/startServer.ts +65 -217
- package/src/test/CompletionItemsAssertion.spec.ts +1 -4
- package/src/types.ts +33 -63
- package/src/utils/liquidDoc.ts +1 -1
- package/src/utils/uri.ts +0 -14
- package/src/completions/providers/ContentForBlockTypeCompletionProvider.spec.ts +0 -41
- package/src/completions/providers/ContentForBlockTypeCompletionProvider.ts +0 -42
- package/src/completions/providers/ContentForCompletionProvider.spec.ts +0 -96
- package/src/completions/providers/ContentForCompletionProvider.ts +0 -113
- package/src/completions/providers/ContentForParameterCompletionProvider.spec.ts +0 -362
- package/src/completions/providers/ContentForParameterCompletionProvider.ts +0 -187
- package/src/completions/providers/data/contentForParameterCompletionOptions.ts +0 -9
- package/src/css/CSSLanguageService.spec.ts +0 -159
- package/src/css/test/test-helpers.ts +0 -30
- package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.spec.ts +0 -96
- package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.ts +0 -82
- package/src/hover/providers/ContentForArgumentHoverProvider.spec.ts +0 -76
- package/src/hover/providers/ContentForArgumentHoverProvider.ts +0 -56
- package/src/hover/providers/ContentForTypeHoverProvider.spec.ts +0 -91
- package/src/hover/providers/ContentForTypeHoverProvider.ts +0 -42
- package/src/json/JSONLanguageService.spec.ts +0 -424
- package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.spec.ts +0 -163
- package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.ts +0 -121
- package/src/json/completions/providers/BlockTypeCompletionProvider.spec.ts +0 -137
- package/src/json/completions/providers/BlockTypeCompletionProvider.ts +0 -108
- package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.spec.ts +0 -132
- package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.ts +0 -120
- package/src/json/completions/providers/SchemaTranslationCompletionProvider.ts +0 -51
- package/src/json/completions/providers/SettingsPropertyCompletionProvider.spec.ts +0 -211
- package/src/json/completions/providers/SettingsPropertyCompletionProvider.ts +0 -75
- package/src/json/documentLinks/DocumentLinksProvider.spec.ts +0 -223
- package/src/json/documentLinks/DocumentLinksProvider.ts +0 -61
- package/src/json/hover/providers/BlockSettingsHoverProvider.spec.ts +0 -292
- package/src/json/hover/providers/BlockSettingsHoverProvider.ts +0 -99
- package/src/json/hover/providers/SchemaTranslationHoverProvider.ts +0 -35
- package/src/json/hover/providers/SettingsHoverProvider.spec.ts +0 -139
- package/src/json/hover/providers/SettingsHoverProvider.ts +0 -79
- package/src/json/schemaSettings.spec.ts +0 -103
- package/src/json/schemaSettings.ts +0 -53
- package/src/plugins/css.ts +0 -12
- package/src/renamed/handlers/BlockRenameHandler.spec.ts +0 -399
- package/src/renamed/handlers/BlockRenameHandler.ts +0 -402
- package/src/renamed/handlers/SectionRenameHandler.spec.ts +0 -321
- package/src/renamed/handlers/SectionRenameHandler.ts +0 -224
- package/src/settings/index.ts +0 -50
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GetDocDefinitionForURI,
|
|
3
|
-
MetafieldDefinitionMap,
|
|
4
3
|
SourceCodeType,
|
|
5
|
-
|
|
4
|
+
PlatformOSDocset,
|
|
6
5
|
} from '@platformos/platformos-check-common';
|
|
7
6
|
import type { AbstractFileSystem, DocumentsLocator } from '@platformos/platformos-common';
|
|
8
7
|
import { CompletionItem, CompletionParams } from 'vscode-languageserver';
|
|
9
8
|
import { TypeSystem } from '../TypeSystem';
|
|
10
9
|
import { DocumentManager } from '../documents';
|
|
11
|
-
import {
|
|
12
|
-
import { GetThemeSettingsSchemaForURI } from '../settings';
|
|
10
|
+
import { FindAppRootURI } from '../internal-types';
|
|
13
11
|
import { GetTranslationsForURI } from '../translations';
|
|
14
12
|
import { createLiquidCompletionParams } from './params';
|
|
15
13
|
import {
|
|
16
|
-
ContentForCompletionProvider,
|
|
17
|
-
ContentForBlockTypeCompletionProvider,
|
|
18
|
-
ContentForParameterCompletionProvider,
|
|
19
14
|
FilterCompletionProvider,
|
|
20
15
|
FilterNamedParameterCompletionProvider,
|
|
21
16
|
HtmlAttributeCompletionProvider,
|
|
@@ -35,19 +30,16 @@ import { GetPartialNamesForURI } from './providers/PartialCompletionProvider';
|
|
|
35
30
|
|
|
36
31
|
export interface CompletionProviderDependencies {
|
|
37
32
|
documentManager: DocumentManager;
|
|
38
|
-
|
|
33
|
+
platformosDocset: PlatformOSDocset;
|
|
39
34
|
getTranslationsForURI?: GetTranslationsForURI;
|
|
40
35
|
getPartialNamesForURI?: GetPartialNamesForURI;
|
|
41
|
-
getThemeSettingsSchemaForURI?: GetThemeSettingsSchemaForURI;
|
|
42
|
-
getMetafieldDefinitions: (rootUri: string) => Promise<MetafieldDefinitionMap>;
|
|
43
36
|
getDocDefinitionForURI?: GetDocDefinitionForURI;
|
|
44
|
-
getThemeBlockNames?: (rootUri: string, includePrivate: boolean) => Promise<string[]>;
|
|
45
37
|
/** File system for reading GraphQL files */
|
|
46
38
|
fs?: AbstractFileSystem;
|
|
47
39
|
/** Locator for finding documents by type */
|
|
48
40
|
documentsLocator?: DocumentsLocator;
|
|
49
41
|
/** Function to find the theme root URI for a given file */
|
|
50
|
-
|
|
42
|
+
findAppRootURI?: FindAppRootURI;
|
|
51
43
|
log?: (message: string) => void;
|
|
52
44
|
/** Callback to notify when unable to infer properties for a variable */
|
|
53
45
|
notifyUnableToInferProperties?: (variableName: string) => void;
|
|
@@ -56,52 +48,39 @@ export interface CompletionProviderDependencies {
|
|
|
56
48
|
export class CompletionsProvider {
|
|
57
49
|
private providers: Provider[] = [];
|
|
58
50
|
readonly documentManager: DocumentManager;
|
|
59
|
-
readonly
|
|
51
|
+
readonly platformosDocset: PlatformOSDocset;
|
|
60
52
|
readonly log: (message: string) => void;
|
|
61
53
|
|
|
62
54
|
constructor({
|
|
63
55
|
documentManager,
|
|
64
|
-
|
|
65
|
-
getMetafieldDefinitions,
|
|
56
|
+
platformosDocset,
|
|
66
57
|
getTranslationsForURI = async () => ({}),
|
|
67
58
|
getPartialNamesForURI = async () => [],
|
|
68
|
-
|
|
69
|
-
getDocDefinitionForURI = async (uri, _relativePath) => ({ uri }),
|
|
70
|
-
getThemeBlockNames = async (_rootUri: string, _includePrivate: boolean) => [],
|
|
59
|
+
getDocDefinitionForURI = async (uri, _partialName) => ({ uri }),
|
|
71
60
|
fs,
|
|
72
61
|
documentsLocator,
|
|
73
|
-
|
|
62
|
+
findAppRootURI,
|
|
74
63
|
log = () => {},
|
|
75
64
|
}: CompletionProviderDependencies) {
|
|
76
65
|
this.documentManager = documentManager;
|
|
77
|
-
this.
|
|
66
|
+
this.platformosDocset = platformosDocset;
|
|
78
67
|
this.log = log;
|
|
79
|
-
const typeSystem = new TypeSystem(
|
|
80
|
-
themeDocset,
|
|
81
|
-
getThemeSettingsSchemaForURI,
|
|
82
|
-
getMetafieldDefinitions,
|
|
83
|
-
fs,
|
|
84
|
-
documentsLocator,
|
|
85
|
-
findThemeRootURI,
|
|
86
|
-
);
|
|
68
|
+
const typeSystem = new TypeSystem(platformosDocset, fs, documentsLocator, findAppRootURI);
|
|
87
69
|
|
|
88
70
|
this.providers = [
|
|
89
|
-
new ContentForCompletionProvider(),
|
|
90
|
-
new ContentForBlockTypeCompletionProvider(getThemeBlockNames),
|
|
91
|
-
new ContentForParameterCompletionProvider(getDocDefinitionForURI),
|
|
92
71
|
new HtmlTagCompletionProvider(),
|
|
93
72
|
new HtmlAttributeCompletionProvider(documentManager),
|
|
94
73
|
new HtmlAttributeValueCompletionProvider(),
|
|
95
|
-
new LiquidTagsCompletionProvider(
|
|
74
|
+
new LiquidTagsCompletionProvider(platformosDocset),
|
|
96
75
|
new ObjectCompletionProvider(typeSystem),
|
|
97
76
|
new ObjectAttributeCompletionProvider(typeSystem),
|
|
98
77
|
new FilterCompletionProvider(typeSystem),
|
|
99
78
|
new TranslationCompletionProvider(documentManager, getTranslationsForURI),
|
|
100
79
|
new PartialCompletionProvider(getPartialNamesForURI),
|
|
101
80
|
new RenderPartialParameterCompletionProvider(getDocDefinitionForURI),
|
|
102
|
-
new FilterNamedParameterCompletionProvider(
|
|
81
|
+
new FilterNamedParameterCompletionProvider(platformosDocset),
|
|
103
82
|
new LiquidDocTagCompletionProvider(),
|
|
104
|
-
new LiquidDocParamTypeCompletionProvider(
|
|
83
|
+
new LiquidDocParamTypeCompletionProvider(platformosDocset),
|
|
105
84
|
];
|
|
106
85
|
}
|
|
107
86
|
|
|
@@ -140,7 +140,6 @@ describe('Module: LiquidCompletionParams', async () => {
|
|
|
140
140
|
`{% render '█' %}`,
|
|
141
141
|
`{% render 'snip', var: '█' %}`,
|
|
142
142
|
`{% content_for '█' %}`,
|
|
143
|
-
`{% content_for 'block', id: '█' %}`,
|
|
144
143
|
];
|
|
145
144
|
for (const context of contexts) {
|
|
146
145
|
const { completionContext } = createLiquidParamsFromContext(context);
|
|
@@ -181,8 +180,6 @@ describe('Module: LiquidCompletionParams', async () => {
|
|
|
181
180
|
`{% assign x = a['b█ %}`,
|
|
182
181
|
`{% for a in b█ %}`,
|
|
183
182
|
`{% for a in b reversed limit: a█ %}`,
|
|
184
|
-
`{% paginate b by a█ %}`,
|
|
185
|
-
`{% paginate b by col, window_size: a█ %}`,
|
|
186
183
|
`{% if a█ %}`,
|
|
187
184
|
`{% if a > b█ %}`,
|
|
188
185
|
`{% if a > b or c█ %}`,
|
|
@@ -193,7 +190,6 @@ describe('Module: LiquidCompletionParams', async () => {
|
|
|
193
190
|
`{% cycle a█ %}`,
|
|
194
191
|
`{% cycle 'foo', a█ %}`,
|
|
195
192
|
`{% cycle 'foo': a█ %}`,
|
|
196
|
-
`{% content_for 'foo', v: █ %}`,
|
|
197
193
|
`{% render 'snip', var: a█ %}`,
|
|
198
194
|
`{% render 'snip' for col█ as item %}`,
|
|
199
195
|
`{% render 'snip' with object█ as name %}`,
|
|
@@ -206,7 +202,6 @@ describe('Module: LiquidCompletionParams', async () => {
|
|
|
206
202
|
endif
|
|
207
203
|
%}`,
|
|
208
204
|
`{% for x in (1..a█) %}`,
|
|
209
|
-
// `{% paginate a█ by 50 %}`,
|
|
210
205
|
`<a-{{ a█ }}`,
|
|
211
206
|
`<a data-{{ a█ }}`,
|
|
212
207
|
`<a data={{ a█ }}`,
|
|
@@ -234,8 +229,6 @@ describe('Module: LiquidCompletionParams', async () => {
|
|
|
234
229
|
`{% assign x = a['█ %}`,
|
|
235
230
|
`{% for a in █ %}`,
|
|
236
231
|
`{% for a in b reversed limit: █ %}`,
|
|
237
|
-
`{% paginate b by █ %}`,
|
|
238
|
-
`{% paginate b by col, window_size: █ %}`,
|
|
239
232
|
`{% if █ %}`,
|
|
240
233
|
`{% if a > █ %}`,
|
|
241
234
|
`{% if a > b or █ %}`,
|
|
@@ -246,12 +239,10 @@ describe('Module: LiquidCompletionParams', async () => {
|
|
|
246
239
|
`{% cycle █ %}`,
|
|
247
240
|
`{% cycle 'foo', █ %}`,
|
|
248
241
|
`{% cycle 'foo': █ %}`,
|
|
249
|
-
`{% content_for 'snip', var: █ %}`,
|
|
250
242
|
`{% render 'snip', var: █ %}`,
|
|
251
243
|
`{% render 'snip' for █ as item %}`,
|
|
252
244
|
`{% render 'snip' with █ as name %}`,
|
|
253
245
|
`{% for x in (1..█) %}`,
|
|
254
|
-
// `{% paginate a█ by 50 %}`,
|
|
255
246
|
`<a-{{ █ }}`,
|
|
256
247
|
`<a data-{{ █ }}`,
|
|
257
248
|
`<a data={{ █ }}`,
|
|
@@ -360,21 +360,8 @@ function findCurrentNode(
|
|
|
360
360
|
break;
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
-
case NodeTypes.PaginateMarkup: {
|
|
364
|
-
if (isNotEmpty(current.args)) {
|
|
365
|
-
finder.current = last(current.args);
|
|
366
|
-
} else if (isCovered(cursor, current.collection.position)) {
|
|
367
|
-
finder.current = current.collection;
|
|
368
|
-
} else if (isCovered(cursor, current.pageSize.position)) {
|
|
369
|
-
finder.current = current.pageSize;
|
|
370
|
-
}
|
|
371
|
-
break;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
363
|
case NodeTypes.ContentForMarkup: {
|
|
375
|
-
if (
|
|
376
|
-
finder.current = last(current.args);
|
|
377
|
-
} else if (isCovered(cursor, current.contentForType.position)) {
|
|
364
|
+
if (isCovered(cursor, current.contentForType.position)) {
|
|
378
365
|
finder.current = current.contentForType;
|
|
379
366
|
}
|
|
380
367
|
|
|
@@ -444,6 +431,9 @@ function findCurrentNode(
|
|
|
444
431
|
case NodeTypes.LiquidDocDescriptionNode:
|
|
445
432
|
case NodeTypes.LiquidDocPromptNode:
|
|
446
433
|
case NodeTypes.RenderAliasExpression:
|
|
434
|
+
case NodeTypes.JsonHashLiteral:
|
|
435
|
+
case NodeTypes.JsonArrayLiteral:
|
|
436
|
+
case NodeTypes.JsonKeyValuePair:
|
|
447
437
|
case NodeTypes.BackgroundMarkup:
|
|
448
438
|
case NodeTypes.BackgroundInlineMarkup:
|
|
449
439
|
case NodeTypes.CacheMarkup:
|
|
@@ -86,8 +86,6 @@ describe('Unit: fix', async () => {
|
|
|
86
86
|
`{% assign x = a['█']%}`,
|
|
87
87
|
`{% for a in █%}`,
|
|
88
88
|
`{% for a in b reversed limit: █%}`,
|
|
89
|
-
`{% paginate b by █%}`,
|
|
90
|
-
`{% paginate b by col, window_size: █%}`,
|
|
91
89
|
`{% if █%}`,
|
|
92
90
|
`{% if a > █%}`,
|
|
93
91
|
`{% if a > b or █%}`,
|
|
@@ -102,7 +100,6 @@ describe('Unit: fix', async () => {
|
|
|
102
100
|
`{% render 'snip' for █%}`,
|
|
103
101
|
`{% render 'snip' with █%}`,
|
|
104
102
|
`{% for x in (1..█)%}`,
|
|
105
|
-
// `{% paginate █ by 50 %}`,
|
|
106
103
|
`<a-{{ █}}>`,
|
|
107
104
|
`<a data-{{ █}}>`,
|
|
108
105
|
`<a data={{ █}}>`,
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FilterEntry,
|
|
3
|
-
MetafieldDefinitionMap,
|
|
4
|
-
ObjectEntry,
|
|
5
|
-
} from '@platformos/platformos-check-common';
|
|
1
|
+
import { FilterEntry, ObjectEntry } from '@platformos/platformos-check-common';
|
|
6
2
|
import { InsertTextFormat, type TextEdit } from 'vscode-languageserver';
|
|
7
3
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
8
4
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
@@ -129,15 +125,13 @@ describe('Module: FilterCompletionProvider', async () => {
|
|
|
129
125
|
beforeEach(async () => {
|
|
130
126
|
provider = new CompletionsProvider({
|
|
131
127
|
documentManager: new DocumentManager(),
|
|
132
|
-
|
|
128
|
+
platformosDocset: {
|
|
133
129
|
graphQL: async () => null,
|
|
134
130
|
filters: async () => filters,
|
|
135
131
|
objects: async () => objects,
|
|
136
132
|
liquidDrops: async () => [],
|
|
137
133
|
tags: async () => [],
|
|
138
|
-
systemTranslations: async () => ({}),
|
|
139
134
|
},
|
|
140
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
141
135
|
});
|
|
142
136
|
});
|
|
143
137
|
|
|
@@ -2,8 +2,6 @@ import { describe, beforeEach, it, expect } from 'vitest';
|
|
|
2
2
|
import { InsertTextFormat, type TextEdit } from 'vscode-languageserver';
|
|
3
3
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
4
4
|
|
|
5
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
6
|
-
|
|
7
5
|
import { DocumentManager } from '../../documents';
|
|
8
6
|
import { CompletionsProvider } from '../CompletionsProvider';
|
|
9
7
|
import { CURSOR } from '../params';
|
|
@@ -14,7 +12,7 @@ describe('Module: ObjectCompletionProvider', async () => {
|
|
|
14
12
|
beforeEach(async () => {
|
|
15
13
|
provider = new CompletionsProvider({
|
|
16
14
|
documentManager: new DocumentManager(),
|
|
17
|
-
|
|
15
|
+
platformosDocset: {
|
|
18
16
|
graphQL: async () => null,
|
|
19
17
|
filters: async () => [
|
|
20
18
|
{
|
|
@@ -47,9 +45,7 @@ describe('Module: ObjectCompletionProvider', async () => {
|
|
|
47
45
|
objects: async () => [],
|
|
48
46
|
liquidDrops: async () => [],
|
|
49
47
|
tags: async () => [],
|
|
50
|
-
systemTranslations: async () => ({}),
|
|
51
48
|
},
|
|
52
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
53
49
|
});
|
|
54
50
|
});
|
|
55
51
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LiquidVariableLookup, NodeTypes } from '@platformos/liquid-html-parser';
|
|
2
|
-
import {
|
|
2
|
+
import { PlatformOSDocset } from '@platformos/platformos-check-common';
|
|
3
3
|
import {
|
|
4
4
|
CompletionItem,
|
|
5
5
|
CompletionItemKind,
|
|
@@ -11,7 +11,7 @@ import { Provider, createCompletionItem } from './common';
|
|
|
11
11
|
import { AugmentedLiquidSourceCode } from '../../documents';
|
|
12
12
|
|
|
13
13
|
export class FilterNamedParameterCompletionProvider implements Provider {
|
|
14
|
-
constructor(private readonly
|
|
14
|
+
constructor(private readonly platformosDocset: PlatformOSDocset) {}
|
|
15
15
|
|
|
16
16
|
async completions(params: LiquidCompletionParams): Promise<CompletionItem[]> {
|
|
17
17
|
if (!params.completionContext) return [];
|
|
@@ -34,7 +34,7 @@ export class FilterNamedParameterCompletionProvider implements Provider {
|
|
|
34
34
|
return [];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
const filters = await this.
|
|
37
|
+
const filters = await this.platformosDocset.filters();
|
|
38
38
|
const foundFilter = filters.find((f) => f.name === currentContext.name);
|
|
39
39
|
|
|
40
40
|
if (!foundFilter?.parameters) {
|
|
@@ -92,7 +92,7 @@ export class FilterNamedParameterCompletionProvider implements Provider {
|
|
|
92
92
|
// If the cursor is inside the parameter or at the end and it's the same
|
|
93
93
|
// value as the one we're offering a completion for then we want to restrict
|
|
94
94
|
// the insert to just the name of the parameter.
|
|
95
|
-
// e.g. `{{
|
|
95
|
+
// e.g. `{{ context | parameterize: in█put: 'hello' }}` and we're offering `input`
|
|
96
96
|
if (node.name + remainingText.slice(0, existingParameterOffset) == name) {
|
|
97
97
|
newText = name;
|
|
98
98
|
format = InsertTextFormat.PlainText;
|
|
@@ -101,8 +101,8 @@ export class FilterNamedParameterCompletionProvider implements Provider {
|
|
|
101
101
|
|
|
102
102
|
// If the cursor is at the beginning of the string we can consider all
|
|
103
103
|
// options and should not replace any text.
|
|
104
|
-
// e.g. `{{
|
|
105
|
-
// e.g. `{{
|
|
104
|
+
// e.g. `{{ context | parameterize: █input: 'hello' }}`
|
|
105
|
+
// e.g. `{{ context | parameterize: █ }}`
|
|
106
106
|
if (node.name === '█') {
|
|
107
107
|
end = start;
|
|
108
108
|
}
|
|
@@ -3,7 +3,6 @@ import { DocumentManager } from '../../documents';
|
|
|
3
3
|
import { CompletionsProvider } from '../CompletionsProvider';
|
|
4
4
|
import { HtmlData } from '../../docset';
|
|
5
5
|
import { sortByName } from './common';
|
|
6
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
7
6
|
|
|
8
7
|
const globalAttributeNames = [...HtmlData.globalAttributes].sort(sortByName).map((x) => x.name);
|
|
9
8
|
const aTag = HtmlData.tags.find((x) => x.name === 'a')!;
|
|
@@ -15,15 +14,13 @@ describe('Module: HtmlAttributeCompletionProvider', async () => {
|
|
|
15
14
|
beforeEach(async () => {
|
|
16
15
|
provider = new CompletionsProvider({
|
|
17
16
|
documentManager: new DocumentManager(),
|
|
18
|
-
|
|
17
|
+
platformosDocset: {
|
|
19
18
|
graphQL: async () => null,
|
|
20
19
|
filters: async () => [],
|
|
21
20
|
objects: async () => [],
|
|
22
21
|
liquidDrops: async () => [],
|
|
23
22
|
tags: async () => [],
|
|
24
|
-
systemTranslations: async () => ({}),
|
|
25
23
|
},
|
|
26
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
27
24
|
});
|
|
28
25
|
});
|
|
29
26
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { CompletionsProvider } from '../CompletionsProvider';
|
|
4
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
5
4
|
|
|
6
5
|
describe('Module: HtmlAttributeValueCompletionProvider', async () => {
|
|
7
6
|
let provider: CompletionsProvider;
|
|
@@ -9,15 +8,13 @@ describe('Module: HtmlAttributeValueCompletionProvider', async () => {
|
|
|
9
8
|
beforeEach(async () => {
|
|
10
9
|
provider = new CompletionsProvider({
|
|
11
10
|
documentManager: new DocumentManager(),
|
|
12
|
-
|
|
11
|
+
platformosDocset: {
|
|
13
12
|
graphQL: async () => null,
|
|
14
13
|
filters: async () => [],
|
|
15
14
|
objects: async () => [],
|
|
16
15
|
liquidDrops: async () => [],
|
|
17
16
|
tags: async () => [],
|
|
18
|
-
systemTranslations: async () => ({}),
|
|
19
17
|
},
|
|
20
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
21
18
|
});
|
|
22
19
|
});
|
|
23
20
|
|
|
@@ -3,7 +3,6 @@ import { DocumentManager } from '../../documents';
|
|
|
3
3
|
import { CompletionsProvider } from '../CompletionsProvider';
|
|
4
4
|
import { HtmlData } from '../../docset';
|
|
5
5
|
import { sortByName } from './common';
|
|
6
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
7
6
|
|
|
8
7
|
const allTagNames = [...HtmlData.tags].sort(sortByName).map((x) => x.name);
|
|
9
8
|
|
|
@@ -13,15 +12,13 @@ describe('Module: HtmlTagCompletionProvider', async () => {
|
|
|
13
12
|
beforeEach(async () => {
|
|
14
13
|
provider = new CompletionsProvider({
|
|
15
14
|
documentManager: new DocumentManager(),
|
|
16
|
-
|
|
15
|
+
platformosDocset: {
|
|
17
16
|
graphQL: async () => null,
|
|
18
17
|
filters: async () => [],
|
|
19
18
|
objects: async () => [],
|
|
20
19
|
liquidDrops: async () => [],
|
|
21
20
|
tags: async () => [],
|
|
22
|
-
systemTranslations: async () => ({}),
|
|
23
21
|
},
|
|
24
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
25
22
|
});
|
|
26
23
|
});
|
|
27
24
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { CompletionsProvider } from '../CompletionsProvider';
|
|
3
3
|
import { DocumentManager } from '../../documents';
|
|
4
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
5
4
|
import { BasicParamTypes } from '@platformos/platformos-check-common';
|
|
6
5
|
|
|
7
6
|
describe('Module: LiquidDocParamTypeCompletionProvider', async () => {
|
|
@@ -10,7 +9,7 @@ describe('Module: LiquidDocParamTypeCompletionProvider', async () => {
|
|
|
10
9
|
beforeEach(async () => {
|
|
11
10
|
provider = new CompletionsProvider({
|
|
12
11
|
documentManager: new DocumentManager(),
|
|
13
|
-
|
|
12
|
+
platformosDocset: {
|
|
14
13
|
graphQL: async () => null,
|
|
15
14
|
filters: async () => [],
|
|
16
15
|
objects: async () => [],
|
|
@@ -20,9 +19,7 @@ describe('Module: LiquidDocParamTypeCompletionProvider', async () => {
|
|
|
20
19
|
},
|
|
21
20
|
],
|
|
22
21
|
tags: async () => [],
|
|
23
|
-
systemTranslations: async () => ({}),
|
|
24
22
|
},
|
|
25
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
26
23
|
});
|
|
27
24
|
});
|
|
28
25
|
|
|
@@ -37,13 +34,6 @@ describe('Module: LiquidDocParamTypeCompletionProvider', async () => {
|
|
|
37
34
|
}
|
|
38
35
|
});
|
|
39
36
|
|
|
40
|
-
it('offers completions within liquid doc tag for blocks', async () => {
|
|
41
|
-
await expect(provider).to.complete(
|
|
42
|
-
{ source: `{% doc %} @█`, relativePath: 'file://blocks/file.liquid' },
|
|
43
|
-
['param', 'example', 'description'],
|
|
44
|
-
);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
37
|
it("does not offer completion if it's not within liquid doc's param type tag", async () => {
|
|
48
38
|
const sources = [
|
|
49
39
|
`{% doc %} @param {}█`,
|
|
@@ -59,21 +49,4 @@ describe('Module: LiquidDocParamTypeCompletionProvider', async () => {
|
|
|
59
49
|
);
|
|
60
50
|
}
|
|
61
51
|
});
|
|
62
|
-
|
|
63
|
-
it("does not offer completion if it's not within a snippet or block", async () => {
|
|
64
|
-
await expect(provider).to.complete(
|
|
65
|
-
{ source: `{% doc %} @param {█`, relativePath: 'file://sections/file.liquid' },
|
|
66
|
-
[],
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
await expect(provider).to.complete(
|
|
70
|
-
{ source: `{% doc %} @param {█`, relativePath: 'file://templates/file.liquid' },
|
|
71
|
-
[],
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
await expect(provider).to.complete(
|
|
75
|
-
{ source: `{% doc %} @param {█`, relativePath: 'file://layout/file.liquid' },
|
|
76
|
-
[],
|
|
77
|
-
);
|
|
78
|
-
});
|
|
79
52
|
});
|
|
@@ -6,11 +6,11 @@ import { filePathSupportsLiquidDoc } from '@platformos/platformos-check-common';
|
|
|
6
6
|
import {
|
|
7
7
|
getValidParamTypes,
|
|
8
8
|
SupportedDocTagTypes,
|
|
9
|
-
|
|
9
|
+
PlatformOSDocset,
|
|
10
10
|
} from '@platformos/platformos-check-common';
|
|
11
11
|
|
|
12
12
|
export class LiquidDocParamTypeCompletionProvider implements Provider {
|
|
13
|
-
constructor(private readonly
|
|
13
|
+
constructor(private readonly platformosDocset: PlatformOSDocset) {}
|
|
14
14
|
|
|
15
15
|
async completions(params: LiquidCompletionParams): Promise<CompletionItem[]> {
|
|
16
16
|
if (!params.completionContext) return [];
|
|
@@ -44,7 +44,7 @@ export class LiquidDocParamTypeCompletionProvider implements Provider {
|
|
|
44
44
|
return [];
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
const liquidDrops = await this.
|
|
47
|
+
const liquidDrops = await this.platformosDocset.liquidDrops();
|
|
48
48
|
|
|
49
49
|
return Array.from(getValidParamTypes(liquidDrops)).map(([label, description]) => {
|
|
50
50
|
const documentation = description
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { CompletionsProvider } from '../CompletionsProvider';
|
|
3
3
|
import { DocumentManager } from '../../documents';
|
|
4
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
5
4
|
|
|
6
5
|
describe('Module: LiquidDocTagCompletionProvider', async () => {
|
|
7
6
|
let provider: CompletionsProvider;
|
|
@@ -9,15 +8,13 @@ describe('Module: LiquidDocTagCompletionProvider', async () => {
|
|
|
9
8
|
beforeEach(async () => {
|
|
10
9
|
provider = new CompletionsProvider({
|
|
11
10
|
documentManager: new DocumentManager(),
|
|
12
|
-
|
|
11
|
+
platformosDocset: {
|
|
13
12
|
graphQL: async () => null,
|
|
14
13
|
filters: async () => [],
|
|
15
14
|
objects: async () => [],
|
|
16
15
|
liquidDrops: async () => [],
|
|
17
16
|
tags: async () => [],
|
|
18
|
-
systemTranslations: async () => ({}),
|
|
19
17
|
},
|
|
20
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
21
18
|
});
|
|
22
19
|
});
|
|
23
20
|
|
|
@@ -32,13 +29,6 @@ describe('Module: LiquidDocTagCompletionProvider', async () => {
|
|
|
32
29
|
);
|
|
33
30
|
});
|
|
34
31
|
|
|
35
|
-
it('offers completions within liquid doc tag for blocks', async () => {
|
|
36
|
-
await expect(provider).to.complete(
|
|
37
|
-
{ source: `{% doc %} @█`, relativePath: 'file://blocks/file.liquid' },
|
|
38
|
-
['param', 'example', 'description'],
|
|
39
|
-
);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
32
|
it("does not offer completion if it doesn't start with @", async () => {
|
|
43
33
|
await expect(provider).to.complete(
|
|
44
34
|
{ source: `{% doc %} █`, relativePath: 'file://app/views/partials/file.liquid' },
|
|
@@ -53,21 +43,6 @@ describe('Module: LiquidDocTagCompletionProvider', async () => {
|
|
|
53
43
|
);
|
|
54
44
|
});
|
|
55
45
|
|
|
56
|
-
it('does not offer completion if it is not a snippet file or block', async () => {
|
|
57
|
-
await expect(provider).to.complete(
|
|
58
|
-
{ source: `{% doc %} @█`, relativePath: 'file://sections/file.liquid' },
|
|
59
|
-
[],
|
|
60
|
-
);
|
|
61
|
-
await expect(provider).to.complete(
|
|
62
|
-
{ source: `{% doc %} @█`, relativePath: 'file://templates/file.liquid' },
|
|
63
|
-
[],
|
|
64
|
-
);
|
|
65
|
-
await expect(provider).to.complete(
|
|
66
|
-
{ source: `{% doc %} @█`, relativePath: 'file://layout/file.liquid' },
|
|
67
|
-
[],
|
|
68
|
-
);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
46
|
describe('nodes that accept free-form text', () => {
|
|
72
47
|
it('offers completions when @ is at the start of a new line following an implicit description', async () => {
|
|
73
48
|
await expect(provider).to.complete(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { CompletionsProvider } from '../CompletionsProvider';
|
|
4
|
-
import {
|
|
4
|
+
import { TagEntry } from '@platformos/platformos-check-common';
|
|
5
5
|
import { InsertTextFormat, InsertTextMode, TextEdit } from 'vscode-languageserver-protocol';
|
|
6
6
|
|
|
7
7
|
const caseSyntax = `{% case variable %}
|
|
@@ -83,15 +83,13 @@ describe('Module: LiquidTagsCompletionProvider', async () => {
|
|
|
83
83
|
beforeEach(async () => {
|
|
84
84
|
provider = new CompletionsProvider({
|
|
85
85
|
documentManager: new DocumentManager(),
|
|
86
|
-
|
|
86
|
+
platformosDocset: {
|
|
87
87
|
graphQL: async () => null,
|
|
88
88
|
filters: async () => [],
|
|
89
89
|
objects: async () => [],
|
|
90
90
|
liquidDrops: async () => [],
|
|
91
91
|
tags: async () => tags,
|
|
92
|
-
systemTranslations: async () => ({}),
|
|
93
92
|
},
|
|
94
|
-
getMetafieldDefinitions: async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
95
93
|
});
|
|
96
94
|
});
|
|
97
95
|
|
|
@@ -109,9 +107,6 @@ describe('Module: LiquidTagsCompletionProvider', async () => {
|
|
|
109
107
|
await expect(provider).to.complete('{% comment %} hello there {% end', ['endcomment']);
|
|
110
108
|
await expect(provider).to.complete('{% if cond %} hello {% else %} then {% end', ['endif']);
|
|
111
109
|
await expect(provider).to.complete('{% for i in (1..3) %}{% end', ['endfor']);
|
|
112
|
-
await expect(provider).to.complete('{% javascript %} console.log("hi") {% end', [
|
|
113
|
-
'endjavascript',
|
|
114
|
-
]);
|
|
115
110
|
await expect(provider).to.complete('{% form "cart", cart %} ... {% end', ['endform']);
|
|
116
111
|
});
|
|
117
112
|
|
|
@@ -138,10 +133,6 @@ describe('Module: LiquidTagsCompletionProvider', async () => {
|
|
|
138
133
|
'endif',
|
|
139
134
|
]);
|
|
140
135
|
await expect(provider).to.complete('{% for i in (1..3) %}{% e', ['echo', 'endfor']);
|
|
141
|
-
await expect(provider).to.complete('{% javascript %} console.log("hi") {% e', [
|
|
142
|
-
'echo',
|
|
143
|
-
'endjavascript',
|
|
144
|
-
]);
|
|
145
136
|
await expect(provider).to.complete('{% form "cart", cart %} ... {% e', ['echo', 'endform']);
|
|
146
137
|
});
|
|
147
138
|
|
|
@@ -149,7 +140,6 @@ describe('Module: LiquidTagsCompletionProvider', async () => {
|
|
|
149
140
|
await expect(provider).to.complete('{% comment %} hello there {% endz', []);
|
|
150
141
|
await expect(provider).to.complete('{% if cond %} hello {% else %} then {% endz', []);
|
|
151
142
|
await expect(provider).to.complete('{% for i in (1..3) %}{% endz', []);
|
|
152
|
-
await expect(provider).to.complete('{% javascript %} console.log("hi") {% endz', []);
|
|
153
143
|
await expect(provider).to.complete('{% form "cart", cart %} ... {% endz', []);
|
|
154
144
|
});
|
|
155
145
|
|
|
@@ -165,10 +155,6 @@ describe('Module: LiquidTagsCompletionProvider', async () => {
|
|
|
165
155
|
allTags.concat('endif'),
|
|
166
156
|
);
|
|
167
157
|
await expect(provider).to.complete('{% for i in (1..3) %}{% ', allTags.concat('endfor'));
|
|
168
|
-
await expect(provider).to.complete(
|
|
169
|
-
'{% javascript %} console.log("hi") {% ',
|
|
170
|
-
allTags.concat('endjavascript'),
|
|
171
|
-
);
|
|
172
158
|
await expect(provider).to.complete(
|
|
173
159
|
'{% form "cart", cart %} ... {% ',
|
|
174
160
|
allTags.concat('endform'),
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
NodeTypes,
|
|
8
8
|
RAW_TAGS,
|
|
9
9
|
} from '@platformos/liquid-html-parser';
|
|
10
|
-
import { TagEntry,
|
|
10
|
+
import { TagEntry, PlatformOSDocset } from '@platformos/platformos-check-common';
|
|
11
11
|
import {
|
|
12
12
|
CompletionItem,
|
|
13
13
|
CompletionItemKind,
|
|
@@ -23,7 +23,7 @@ import { CURSOR, LiquidCompletionParams } from '../params';
|
|
|
23
23
|
import { Provider, createCompletionItem, sortByName } from './common';
|
|
24
24
|
|
|
25
25
|
export class LiquidTagsCompletionProvider implements Provider {
|
|
26
|
-
constructor(private readonly
|
|
26
|
+
constructor(private readonly platformosDocset: PlatformOSDocset) {}
|
|
27
27
|
|
|
28
28
|
async completions(params: LiquidCompletionParams): Promise<CompletionItem[]> {
|
|
29
29
|
if (!params.completionContext) return [];
|
|
@@ -39,7 +39,7 @@ export class LiquidTagsCompletionProvider implements Provider {
|
|
|
39
39
|
|
|
40
40
|
const partial = node.name.replace(CURSOR, '');
|
|
41
41
|
const blockParent = findParentNode(partial, ancestors);
|
|
42
|
-
const tags = await this.
|
|
42
|
+
const tags = await this.platformosDocset.tags();
|
|
43
43
|
return tags
|
|
44
44
|
.filter(({ name }) => name.startsWith(partial))
|
|
45
45
|
.sort(sortByName)
|