@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.
- package/CHANGELOG.md +20 -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/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/FilterCompletionProvider.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/TranslationCompletionProvider.js +1 -1
- package/dist/completions/providers/TranslationCompletionProvider.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/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.d.ts +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/formatting/OnTypeFormattingProvider.d.ts +1 -1
- package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.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/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.d.ts +1 -1
- package/dist/progress.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/Configuration.js.map +1 -1
- 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 +9 -9
- package/src/PropertyShapeInference.ts +76 -1
- package/src/TypeSystem.spec.ts +187 -452
- package/src/TypeSystem.ts +253 -459
- 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/FilterCompletionProvider.ts +6 -6
- 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/TranslationCompletionProvider.ts +1 -1
- 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/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.ts +1 -3
- 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/progress.ts +4 -1
- 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/Configuration.ts +4 -1
- 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 -161
- 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,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 {
|
|
4
|
+
import { ObjectEntry } from '@platformos/platformos-check-common';
|
|
5
5
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
6
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
7
|
|
|
@@ -11,29 +11,36 @@ describe('Module: LiquidObjectHoverProvider', async () => {
|
|
|
11
11
|
beforeEach(async () => {
|
|
12
12
|
const _objects: ObjectEntry[] = [
|
|
13
13
|
{
|
|
14
|
-
name: '
|
|
15
|
-
description: '
|
|
14
|
+
name: 'context',
|
|
15
|
+
description: 'context description',
|
|
16
|
+
access: { global: true, parents: [], template: [] },
|
|
16
17
|
return_type: [],
|
|
17
18
|
properties: [
|
|
18
19
|
{
|
|
19
|
-
name: '
|
|
20
|
-
return_type: [{ type: '
|
|
20
|
+
name: 'posts',
|
|
21
|
+
return_type: [{ type: 'array', array_value: 'post' }],
|
|
21
22
|
},
|
|
22
23
|
{
|
|
23
|
-
name: '
|
|
24
|
-
return_type: [{ type: '
|
|
24
|
+
name: 'current_user',
|
|
25
|
+
return_type: [{ type: 'current_user', name: '' }],
|
|
25
26
|
},
|
|
26
|
-
{ name: 'metafields' },
|
|
27
27
|
],
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
name: '
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: 'paginate',
|
|
35
|
-
access: { global: false, parents: [], template: [] },
|
|
30
|
+
name: 'post',
|
|
31
|
+
description: 'post description',
|
|
36
32
|
return_type: [],
|
|
33
|
+
properties: [
|
|
34
|
+
{
|
|
35
|
+
name: 'thumbnail',
|
|
36
|
+
return_type: [{ type: 'image', name: '' }],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'title',
|
|
40
|
+
return_type: [{ type: 'string', name: '' }],
|
|
41
|
+
},
|
|
42
|
+
{ name: 'metadata' },
|
|
43
|
+
],
|
|
37
44
|
},
|
|
38
45
|
{
|
|
39
46
|
name: 'forloop',
|
|
@@ -50,46 +57,10 @@ describe('Module: LiquidObjectHoverProvider', async () => {
|
|
|
50
57
|
description: 'image description',
|
|
51
58
|
access: { global: false, parents: [], template: [] },
|
|
52
59
|
},
|
|
53
|
-
{
|
|
54
|
-
name: 'section',
|
|
55
|
-
access: { global: false, parents: [], template: [] },
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
name: 'block',
|
|
59
|
-
access: { global: false, parents: [], template: [] },
|
|
60
|
-
},
|
|
61
60
|
{
|
|
62
61
|
name: 'app',
|
|
63
62
|
access: { global: false, parents: [], template: [] },
|
|
64
63
|
},
|
|
65
|
-
{
|
|
66
|
-
name: 'predictive_search',
|
|
67
|
-
access: { global: false, parents: [], template: [] },
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: 'recommendations',
|
|
71
|
-
access: { global: false, parents: [], template: [] },
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
name: 'metafield',
|
|
75
|
-
access: {
|
|
76
|
-
global: false,
|
|
77
|
-
template: [],
|
|
78
|
-
parents: [],
|
|
79
|
-
},
|
|
80
|
-
properties: [
|
|
81
|
-
{
|
|
82
|
-
name: 'type',
|
|
83
|
-
description: 'the type of the metafield',
|
|
84
|
-
return_type: [{ type: 'string', name: '' }],
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
name: 'value',
|
|
88
|
-
description: 'the value of the metafield',
|
|
89
|
-
return_type: [{ type: 'untyped', name: '' }],
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
},
|
|
93
64
|
];
|
|
94
65
|
|
|
95
66
|
provider = new HoverProvider(
|
|
@@ -100,80 +71,41 @@ describe('Module: LiquidObjectHoverProvider', async () => {
|
|
|
100
71
|
objects: async () => _objects,
|
|
101
72
|
liquidDrops: async () => _objects,
|
|
102
73
|
tags: async () => [],
|
|
103
|
-
systemTranslations: async () => ({}),
|
|
104
74
|
},
|
|
105
75
|
new TranslationProvider(new MockFileSystem({})),
|
|
106
|
-
async (_uri: string) => {
|
|
107
|
-
return {
|
|
108
|
-
article: [],
|
|
109
|
-
blog: [],
|
|
110
|
-
collection: [],
|
|
111
|
-
company: [],
|
|
112
|
-
company_location: [],
|
|
113
|
-
location: [],
|
|
114
|
-
market: [],
|
|
115
|
-
order: [],
|
|
116
|
-
page: [],
|
|
117
|
-
product: [
|
|
118
|
-
{
|
|
119
|
-
key: 'color',
|
|
120
|
-
name: 'color',
|
|
121
|
-
namespace: 'custom',
|
|
122
|
-
description: 'the color of the product',
|
|
123
|
-
type: {
|
|
124
|
-
category: 'COLOR',
|
|
125
|
-
name: 'color',
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
],
|
|
129
|
-
variant: [],
|
|
130
|
-
shop: [],
|
|
131
|
-
} as MetafieldDefinitionMap;
|
|
132
|
-
},
|
|
133
76
|
);
|
|
134
77
|
});
|
|
135
78
|
|
|
136
|
-
it('should return the hover description of the object', async () => {
|
|
79
|
+
it('should return the hover description of the global object', async () => {
|
|
137
80
|
const contexts = [
|
|
138
|
-
'{{
|
|
139
|
-
'{{
|
|
140
|
-
'{% echo
|
|
141
|
-
'{% liquid\n echo
|
|
142
|
-
'{% assign x =
|
|
143
|
-
'{% for x in all_products %}{{ x█ }}{% endfor %}',
|
|
144
|
-
'{% assign x = all_products[0] %}{{ x█ }}',
|
|
145
|
-
'{% assign x█ = all_products[0] %}',
|
|
146
|
-
// '{% for x█ in all_products %}{{ x }}{% endfor %}', // not supported yet...
|
|
81
|
+
'{{ con█text }}',
|
|
82
|
+
'{{ context█ }}',
|
|
83
|
+
'{% echo context█ %}',
|
|
84
|
+
'{% liquid\n echo context█ %}',
|
|
85
|
+
'{% assign x = context %}{{ x█ }}',
|
|
147
86
|
];
|
|
148
87
|
for (const context of contexts) {
|
|
149
|
-
await expect(provider).to.hover(context, expect.stringContaining('
|
|
150
|
-
await expect(provider).to.hover(context, expect.stringMatching(/##* \w+: `
|
|
88
|
+
await expect(provider).to.hover(context, expect.stringContaining('context description'));
|
|
89
|
+
await expect(provider).to.hover(context, expect.stringMatching(/##* \w+: `context`/));
|
|
151
90
|
}
|
|
152
91
|
});
|
|
153
92
|
|
|
154
|
-
it('should
|
|
155
|
-
const
|
|
156
|
-
{%
|
|
157
|
-
|
|
158
|
-
{%
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const context = `
|
|
166
|
-
{% form all_products by 5 %}
|
|
167
|
-
{{ form█ }}
|
|
168
|
-
{% endform %}
|
|
169
|
-
`;
|
|
170
|
-
await expect(provider).to.hover(context, expect.stringMatching(/##* form: `form`/));
|
|
171
|
-
await expect(provider).to.hover('{{ form█ }}', null);
|
|
93
|
+
it('should return the hover description of an array item object', async () => {
|
|
94
|
+
const contexts = [
|
|
95
|
+
'{% for x in context.posts %}{{ x█ }}{% endfor %}',
|
|
96
|
+
'{% assign x = context.posts[0] %}{{ x█ }}',
|
|
97
|
+
'{% assign x█ = context.posts[0] %}',
|
|
98
|
+
// '{% for x█ in context.posts %}{{ x }}{% endfor %}', // not supported yet...
|
|
99
|
+
];
|
|
100
|
+
for (const context of contexts) {
|
|
101
|
+
await expect(provider).to.hover(context, expect.stringContaining('post description'));
|
|
102
|
+
await expect(provider).to.hover(context, expect.stringMatching(/##* \w+: `post`/));
|
|
103
|
+
}
|
|
172
104
|
});
|
|
173
105
|
|
|
174
106
|
it('should support forloop inside for tags', async () => {
|
|
175
107
|
const context = `
|
|
176
|
-
{% for p in
|
|
108
|
+
{% for p in context.posts %}
|
|
177
109
|
{{ forloop█ }}
|
|
178
110
|
{% endfor %}
|
|
179
111
|
`;
|
|
@@ -183,7 +115,7 @@ describe('Module: LiquidObjectHoverProvider', async () => {
|
|
|
183
115
|
|
|
184
116
|
it('should support tablerowloop inside tablerow tags', async () => {
|
|
185
117
|
const context = `
|
|
186
|
-
{% tablerow p in
|
|
118
|
+
{% tablerow p in context.posts %}
|
|
187
119
|
{{ tablerowloop█ }}
|
|
188
120
|
{% endtablerow %}
|
|
189
121
|
`;
|
|
@@ -220,12 +152,8 @@ describe('Module: LiquidObjectHoverProvider', async () => {
|
|
|
220
152
|
|
|
221
153
|
it('should support contextual objects by relative path', async () => {
|
|
222
154
|
const contexts: [string, string][] = [
|
|
223
|
-
['section', 'sections/my-section.liquid'],
|
|
224
|
-
['block', 'blocks/my-block.liquid'],
|
|
225
|
-
['predictive_search', 'sections/predictive-search.liquid'],
|
|
226
|
-
['recommendations', 'sections/recommendations.liquid'],
|
|
227
|
-
['app', 'blocks/recommendations.liquid'],
|
|
228
155
|
['app', 'app/views/partials/recommendations.liquid'],
|
|
156
|
+
['app', 'app/lib/helpers/my-helper.liquid'],
|
|
229
157
|
];
|
|
230
158
|
for (const [object, relativePath] of contexts) {
|
|
231
159
|
const source = `{{ ${object}█ }}`;
|
|
@@ -237,38 +165,27 @@ describe('Module: LiquidObjectHoverProvider', async () => {
|
|
|
237
165
|
}
|
|
238
166
|
});
|
|
239
167
|
|
|
240
|
-
it('should support metafields', async () => {
|
|
241
|
-
await expect(provider).to.hover(
|
|
242
|
-
'{{ product.metafields.custom█ }}',
|
|
243
|
-
'### custom: `product_metafield_custom`',
|
|
244
|
-
);
|
|
245
|
-
await expect(provider).to.hover(
|
|
246
|
-
'{{ product.metafields.custom.color█ }}',
|
|
247
|
-
'### color: `metafield_color`\nthe color of the product',
|
|
248
|
-
);
|
|
249
|
-
});
|
|
250
|
-
|
|
251
168
|
it('should return null when hovering over an undefined variable', async () => {
|
|
252
169
|
await expect(provider).to.hover(`{{ unknown█ }}`, null);
|
|
253
170
|
});
|
|
254
171
|
|
|
255
172
|
it('should return something if the thing is knowingly untyped', async () => {
|
|
256
173
|
await expect(provider).to.hover(
|
|
257
|
-
`{% assign src =
|
|
174
|
+
`{% assign src = context.posts[0].thumbnail.src %}{{ src█ }}`,
|
|
258
175
|
`### src: \`untyped\``,
|
|
259
176
|
);
|
|
260
177
|
});
|
|
261
178
|
|
|
262
179
|
it('should still return null when hovering over an unknown variable out of scope', async () => {
|
|
263
180
|
await expect(provider).to.hover(
|
|
264
|
-
`{% for p in
|
|
181
|
+
`{% for p in context.posts %}
|
|
265
182
|
{{ forloop█ }}
|
|
266
183
|
{% endfor %}
|
|
267
184
|
{{ forloop }}`,
|
|
268
185
|
expect.stringMatching(/##* forloop: `forloop`/),
|
|
269
186
|
);
|
|
270
187
|
await expect(provider).to.hover(
|
|
271
|
-
`{% for p in
|
|
188
|
+
`{% for p in context.posts %}
|
|
272
189
|
{{ forloop }}
|
|
273
190
|
{% endfor %}
|
|
274
191
|
{{ forloop█ }}`,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
5
4
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
5
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
6
|
|
|
@@ -20,10 +19,8 @@ describe('Module: LiquidTagHoverProvider', async () => {
|
|
|
20
19
|
{ name: 'if', description: 'if statement description' },
|
|
21
20
|
{ name: 'echo', description: 'echo description' },
|
|
22
21
|
],
|
|
23
|
-
systemTranslations: async () => ({}),
|
|
24
22
|
},
|
|
25
23
|
new TranslationProvider(new MockFileSystem({})),
|
|
26
|
-
async (_rootUri: string) => ({} as MetafieldDefinitionMap),
|
|
27
24
|
);
|
|
28
25
|
});
|
|
29
26
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { NodeTypes } from '@platformos/liquid-html-parser';
|
|
2
|
-
import { LiquidHtmlNode,
|
|
2
|
+
import { LiquidHtmlNode, PlatformOSDocset } from '@platformos/platformos-check-common';
|
|
3
3
|
import { Hover } from 'vscode-languageserver';
|
|
4
4
|
import { render } from '../../docset';
|
|
5
5
|
import { BaseHoverProvider } from '../BaseHoverProvider';
|
|
6
6
|
|
|
7
7
|
export class LiquidTagHoverProvider implements BaseHoverProvider {
|
|
8
|
-
constructor(public
|
|
8
|
+
constructor(public platformosDocset: PlatformOSDocset) {}
|
|
9
9
|
|
|
10
10
|
async hover(currentNode: LiquidHtmlNode): Promise<Hover | null> {
|
|
11
11
|
if (
|
|
@@ -17,7 +17,7 @@ export class LiquidTagHoverProvider implements BaseHoverProvider {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
const name = currentNode.name;
|
|
20
|
-
const entries = await this.
|
|
20
|
+
const entries = await this.platformosDocset.tags();
|
|
21
21
|
const entry = entries.find((entry) => entry.name === name);
|
|
22
22
|
if (!entry) {
|
|
23
23
|
return null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
import { GetDocDefinitionForURI, DocDefinition } from '@platformos/platformos-check-common';
|
|
6
6
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
7
7
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
@@ -74,12 +74,9 @@ const createProvider = (getSnippetDefinition: GetDocDefinitionForURI) => {
|
|
|
74
74
|
objects: async () => [],
|
|
75
75
|
liquidDrops: async () => [],
|
|
76
76
|
tags: async () => [],
|
|
77
|
-
systemTranslations: async () => ({}),
|
|
78
77
|
},
|
|
79
78
|
new TranslationProvider(new MockFileSystem({})),
|
|
80
|
-
async (_rootUri: string) => ({} as MetafieldDefinitionMap),
|
|
81
79
|
async () => ({}),
|
|
82
|
-
async () => [],
|
|
83
80
|
getSnippetDefinition,
|
|
84
81
|
);
|
|
85
82
|
};
|
|
@@ -22,11 +22,7 @@ export class RenderPartialHoverProvider implements BaseHoverProvider {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
const partialName = currentNode.value;
|
|
25
|
-
const docDefinition = await this.getDocDefinitionForURI(
|
|
26
|
-
params.textDocument.uri,
|
|
27
|
-
'app/views/partials',
|
|
28
|
-
partialName,
|
|
29
|
-
);
|
|
25
|
+
const docDefinition = await this.getDocDefinitionForURI(params.textDocument.uri, partialName);
|
|
30
26
|
|
|
31
27
|
return {
|
|
32
28
|
contents: {
|
|
@@ -1,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
|
-
|
|
4
|
+
|
|
5
5
|
import { GetDocDefinitionForURI, DocDefinition } from '@platformos/platformos-check-common';
|
|
6
6
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
7
7
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
@@ -59,12 +59,9 @@ const createProvider = (getSnippetDefinition: GetDocDefinitionForURI) => {
|
|
|
59
59
|
objects: async () => [],
|
|
60
60
|
liquidDrops: async () => [],
|
|
61
61
|
tags: async () => [],
|
|
62
|
-
systemTranslations: async () => ({}),
|
|
63
62
|
},
|
|
64
63
|
new TranslationProvider(new MockFileSystem({})),
|
|
65
|
-
async (_rootUri: string) => ({} as MetafieldDefinitionMap),
|
|
66
64
|
async () => ({}),
|
|
67
|
-
async () => [],
|
|
68
65
|
getSnippetDefinition,
|
|
69
66
|
);
|
|
70
67
|
};
|
|
@@ -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
|
-
|
|
4
|
+
|
|
5
5
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
6
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
7
|
|
|
@@ -17,7 +17,6 @@ describe('Module: TranslationHoverProvider', async () => {
|
|
|
17
17
|
objects: async () => [],
|
|
18
18
|
liquidDrops: async () => [],
|
|
19
19
|
tags: async () => [],
|
|
20
|
-
systemTranslations: async () => ({}),
|
|
21
20
|
},
|
|
22
21
|
new TranslationProvider(
|
|
23
22
|
new MockFileSystem({
|
|
@@ -32,8 +31,6 @@ describe('Module: TranslationHoverProvider', async () => {
|
|
|
32
31
|
`,
|
|
33
32
|
}),
|
|
34
33
|
),
|
|
35
|
-
async (_rootUri: string) => ({} as MetafieldDefinitionMap),
|
|
36
|
-
undefined,
|
|
37
34
|
undefined,
|
|
38
35
|
undefined,
|
|
39
36
|
async () => '.',
|
|
@@ -6,13 +6,13 @@ import { renderTranslation } from '../../translations';
|
|
|
6
6
|
import { BaseHoverProvider } from '../BaseHoverProvider';
|
|
7
7
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
8
8
|
import { URI } from 'vscode-uri';
|
|
9
|
-
import {
|
|
9
|
+
import { FindAppRootURI } from '../../../src/internal-types';
|
|
10
10
|
|
|
11
11
|
export class TranslationHoverProvider implements BaseHoverProvider {
|
|
12
12
|
constructor(
|
|
13
13
|
public documentManager: DocumentManager,
|
|
14
14
|
private translationProvider: TranslationProvider,
|
|
15
|
-
private
|
|
15
|
+
private findAppRootURI: FindAppRootURI,
|
|
16
16
|
) {}
|
|
17
17
|
|
|
18
18
|
async hover(
|
|
@@ -33,7 +33,7 @@ export class TranslationHoverProvider implements BaseHoverProvider {
|
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const root = await this.
|
|
36
|
+
const root = await this.findAppRootURI(params.textDocument.uri);
|
|
37
37
|
if (!root) {
|
|
38
38
|
return null;
|
|
39
39
|
}
|
package/src/index.ts
CHANGED
|
@@ -11,13 +11,10 @@ export * from './types';
|
|
|
11
11
|
export { visit } from '@platformos/platformos-check-common';
|
|
12
12
|
export {
|
|
13
13
|
Reference,
|
|
14
|
-
|
|
14
|
+
AppGraph,
|
|
15
15
|
SerializableEdge,
|
|
16
16
|
SerializableNode,
|
|
17
|
-
|
|
18
|
-
CssModule,
|
|
19
|
-
JsonModule,
|
|
20
|
-
JavaScriptModule,
|
|
17
|
+
AppModule,
|
|
21
18
|
LiquidModule,
|
|
22
19
|
} from '@platformos/platformos-graph';
|
|
23
20
|
export { debounce, memo, parseJSON, ArgumentTypes } from './utils';
|
package/src/internal-types.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type FindAppRootURI = (uri: string) => Promise<string | null>;
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AppBlockSchema,
|
|
3
|
-
parseJSON,
|
|
4
|
-
SectionSchema,
|
|
5
|
-
SourceCodeType,
|
|
6
|
-
ThemeBlockSchema,
|
|
7
|
-
} from '@platformos/platformos-check-common';
|
|
8
1
|
import {
|
|
9
2
|
CompletionsCollector,
|
|
10
3
|
JSONPath,
|
|
@@ -12,30 +5,14 @@ import {
|
|
|
12
5
|
MarkedString,
|
|
13
6
|
} from 'vscode-json-languageservice';
|
|
14
7
|
import { AugmentedSourceCode, DocumentManager } from '../documents';
|
|
15
|
-
import { GetTranslationsForURI } from '../translations';
|
|
16
8
|
import { JSONCompletionProvider } from './completions/JSONCompletionProvider';
|
|
17
|
-
import { BlockTypeCompletionProvider } from './completions/providers/BlockTypeCompletionProvider';
|
|
18
|
-
import { ReferencedBlockTypeCompletionProvider } from './completions/providers/ReferencedBlockTypeCompletionProvider';
|
|
19
|
-
import { SchemaTranslationsCompletionProvider } from './completions/providers/SchemaTranslationCompletionProvider';
|
|
20
9
|
import { JSONHoverProvider } from './hover/JSONHoverProvider';
|
|
21
|
-
import { SchemaTranslationHoverProvider } from './hover/providers/SchemaTranslationHoverProvider';
|
|
22
10
|
import { TranslationPathHoverProvider } from './hover/providers/TranslationPathHoverProvider';
|
|
23
11
|
import { RequestContext } from './RequestContext';
|
|
24
|
-
import { findSchemaNode } from './utils';
|
|
25
|
-
import { SettingsPropertyCompletionProvider } from './completions/providers/SettingsPropertyCompletionProvider';
|
|
26
|
-
import { SettingsHoverProvider } from './hover/providers/SettingsHoverProvider';
|
|
27
|
-
import { BlockSettingsPropertyCompletionProvider } from './completions/providers/BlockSettingsPropertyCompletionProvider';
|
|
28
|
-
import { BlockSettingsHoverProvider } from './hover/providers/BlockSettingsHoverProvider';
|
|
29
12
|
|
|
30
13
|
/** The getInfoContribution API will only fallback if we return undefined synchronously */
|
|
31
14
|
const SKIP_CONTRIBUTION = undefined as any;
|
|
32
15
|
|
|
33
|
-
export type GetThemeBlockSchema = (
|
|
34
|
-
uri: string,
|
|
35
|
-
name: string,
|
|
36
|
-
) => Promise<SectionSchema | ThemeBlockSchema | AppBlockSchema | undefined>;
|
|
37
|
-
export type GetThemeBlockNames = (uri: string, includePrivate: boolean) => Promise<string[]>;
|
|
38
|
-
|
|
39
16
|
/**
|
|
40
17
|
* I'm not a fan of how json-languageservice does its feature contributions. It's too different
|
|
41
18
|
* from everything else we do in here.
|
|
@@ -47,28 +24,9 @@ export class JSONContributions implements JSONWorkerContribution {
|
|
|
47
24
|
private hoverProviders: JSONHoverProvider[];
|
|
48
25
|
private completionProviders: JSONCompletionProvider[];
|
|
49
26
|
|
|
50
|
-
constructor(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
getThemeBlockNames: GetThemeBlockNames,
|
|
54
|
-
getThemeBlockSchema: GetThemeBlockSchema,
|
|
55
|
-
) {
|
|
56
|
-
this.hoverProviders = [
|
|
57
|
-
new TranslationPathHoverProvider(),
|
|
58
|
-
new SchemaTranslationHoverProvider(getDefaultSchemaTranslations),
|
|
59
|
-
new SettingsHoverProvider(getDefaultSchemaTranslations),
|
|
60
|
-
new BlockSettingsHoverProvider(getDefaultSchemaTranslations, getThemeBlockSchema),
|
|
61
|
-
];
|
|
62
|
-
this.completionProviders = [
|
|
63
|
-
new SchemaTranslationsCompletionProvider(getDefaultSchemaTranslations),
|
|
64
|
-
new BlockTypeCompletionProvider(getThemeBlockNames),
|
|
65
|
-
new ReferencedBlockTypeCompletionProvider(getThemeBlockNames, getThemeBlockSchema),
|
|
66
|
-
new BlockSettingsPropertyCompletionProvider(
|
|
67
|
-
getDefaultSchemaTranslations,
|
|
68
|
-
getThemeBlockSchema,
|
|
69
|
-
),
|
|
70
|
-
new SettingsPropertyCompletionProvider(getDefaultSchemaTranslations),
|
|
71
|
-
];
|
|
27
|
+
constructor(private documentManager: DocumentManager) {
|
|
28
|
+
this.hoverProviders = [new TranslationPathHoverProvider()];
|
|
29
|
+
this.completionProviders = [];
|
|
72
30
|
}
|
|
73
31
|
|
|
74
32
|
async getInfoContribution(uri: string, location: JSONPath): Promise<MarkedString[]> {
|
|
@@ -130,21 +88,6 @@ export class JSONContributions implements JSONWorkerContribution {
|
|
|
130
88
|
async collectDefaultCompletions(_uri: string, _result: CompletionsCollector): Promise<void> {}
|
|
131
89
|
|
|
132
90
|
private async getContext(doc: AugmentedSourceCode): Promise<RequestContext> {
|
|
133
|
-
|
|
134
|
-
doc,
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
if (doc.type === SourceCodeType.LiquidHtml && !(doc.ast instanceof Error)) {
|
|
138
|
-
const schema = await findSchemaNode(doc.ast);
|
|
139
|
-
if (!schema) return SKIP_CONTRIBUTION;
|
|
140
|
-
const jsonString = schema?.source.slice(
|
|
141
|
-
schema.blockStartPosition.end,
|
|
142
|
-
schema.blockEndPosition.start,
|
|
143
|
-
);
|
|
144
|
-
context.schema = schema;
|
|
145
|
-
context.parsed = parseJSON(jsonString);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
return context;
|
|
91
|
+
return { doc };
|
|
149
92
|
}
|
|
150
93
|
}
|