@platformos/platformos-language-server-common 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/PropertyShapeInference.d.ts +18 -0
- package/dist/PropertyShapeInference.js +62 -0
- package/dist/PropertyShapeInference.js.map +1 -1
- package/dist/TypeSystem.d.ts +4 -9
- package/dist/TypeSystem.js +246 -390
- 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 +6 -17
- 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 +17 -12
- 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 +2 -9
- package/dist/utils/uri.js +5 -21
- package/dist/utils/uri.js.map +1 -1
- package/package.json +4 -4
- package/src/ClientCapabilities.ts +1 -1
- package/src/PropertyShapeInference.ts +81 -1
- package/src/TypeSystem.spec.ts +206 -449
- package/src/TypeSystem.ts +267 -460
- package/src/codeActions/providers/FixAllProvider.spec.ts +1 -1
- package/src/codeActions/providers/FixProvider.spec.ts +11 -11
- package/src/codeActions/providers/SuggestionProvider.spec.ts +2 -2
- package/src/commands/providers/ApplyFixesProvider.ts +2 -2
- package/src/commands/providers/ApplySuggestionProvider.ts +2 -2
- package/src/commands/providers/RunChecksProvider.ts +2 -2
- package/src/completions/CompletionsProvider.ts +14 -35
- package/src/completions/params/LiquidCompletionParams.spec.ts +0 -9
- package/src/completions/params/LiquidCompletionParams.ts +8 -17
- 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 +4 -18
- 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 +6 -15
- package/src/completions/providers/RenderPartialParameterCompletionProvider.spec.ts +13 -15
- package/src/completions/providers/RenderPartialParameterCompletionProvider.ts +2 -3
- package/src/completions/providers/TranslationCompletionProvider.spec.ts +1 -4
- package/src/completions/providers/TranslationCompletionProvider.ts +3 -3
- 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 +22 -30
- package/src/diagnostics/runChecks.ts +17 -91
- package/src/docset/MarkdownRenderer.ts +1 -1
- package/src/documentLinks/DocumentLinksProvider.ts +10 -10
- package/src/documents/DocumentManager.spec.ts +46 -119
- package/src/documents/DocumentManager.ts +19 -15
- 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 +1 -4
- 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 +11 -14
- package/src/hover/providers/RenderPartialHoverProvider.ts +1 -5
- package/src/hover/providers/RenderPartialParameterHoverProvider.spec.ts +10 -13
- package/src/hover/providers/RenderPartialParameterHoverProvider.ts +2 -3
- package/src/hover/providers/TranslationHoverProvider.spec.ts +1 -4
- package/src/hover/providers/TranslationHoverProvider.ts +3 -3
- package/src/index.ts +4 -7
- 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 +4 -4
- package/src/rename/providers/LiquidVariableRenameProvider.spec.ts +5 -5
- package/src/rename/providers/LiquidVariableRenameProvider.ts +6 -6
- package/src/renamed/RenameHandler.ts +4 -9
- package/src/renamed/handlers/AssetRenameHandler.spec.ts +28 -28
- package/src/renamed/handlers/AssetRenameHandler.ts +6 -6
- package/src/renamed/handlers/PartialRenameHandler.spec.ts +9 -9
- package/src/renamed/handlers/PartialRenameHandler.ts +10 -10
- package/src/server/{ThemeGraphManager.ts → AppGraphManager.ts} +21 -90
- package/src/server/safe.ts +1 -1
- package/src/server/startServer.spec.ts +10 -12
- package/src/server/startServer.ts +69 -222
- package/src/test/CompletionItemsAssertion.spec.ts +1 -4
- package/src/types.ts +33 -63
- package/src/utils/debounce.ts +1 -1
- package/src/utils/liquidDoc.ts +6 -6
- package/src/utils/uri.ts +5 -17
- 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/renamed/handlers/utils.ts +0 -22
- package/src/settings/index.ts +0 -50
|
@@ -6,13 +6,13 @@ import { URI, Utils } from 'vscode-uri';
|
|
|
6
6
|
|
|
7
7
|
import { visit, Visitor } from '@platformos/platformos-check-common';
|
|
8
8
|
import { DocumentManager } from '../documents';
|
|
9
|
-
import {
|
|
9
|
+
import { FindAppRootURI } from '../internal-types';
|
|
10
10
|
import { DocumentsLocator, TranslationProvider } from '@platformos/platformos-common';
|
|
11
11
|
|
|
12
12
|
export class DocumentLinksProvider {
|
|
13
13
|
constructor(
|
|
14
14
|
private documentManager: DocumentManager,
|
|
15
|
-
private
|
|
15
|
+
private findAppRootURI: FindAppRootURI,
|
|
16
16
|
private documentsLocator: DocumentsLocator,
|
|
17
17
|
private translationProvider: TranslationProvider,
|
|
18
18
|
) {}
|
|
@@ -27,7 +27,7 @@ export class DocumentLinksProvider {
|
|
|
27
27
|
return [];
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
const rootUri = await this.
|
|
30
|
+
const rootUri = await this.findAppRootURI(uriString);
|
|
31
31
|
if (!rootUri) {
|
|
32
32
|
return [];
|
|
33
33
|
}
|
|
@@ -53,12 +53,12 @@ function documentLinksVisitor(
|
|
|
53
53
|
if (
|
|
54
54
|
(node.name === 'render' || node.name === 'include') &&
|
|
55
55
|
typeof node.markup !== 'string' &&
|
|
56
|
-
isLiquidString(node.markup.
|
|
56
|
+
isLiquidString(node.markup.partial)
|
|
57
57
|
) {
|
|
58
|
-
const
|
|
58
|
+
const partial = node.markup.partial;
|
|
59
59
|
return DocumentLink.create(
|
|
60
|
-
range(textDocument,
|
|
61
|
-
await documentsLocator.locate(root, node.name,
|
|
60
|
+
range(textDocument, partial),
|
|
61
|
+
await documentsLocator.locate(root, node.name, partial.value),
|
|
62
62
|
);
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -67,10 +67,10 @@ function documentLinksVisitor(
|
|
|
67
67
|
typeof node.markup !== 'string' &&
|
|
68
68
|
isLiquidString(node.markup.partial)
|
|
69
69
|
) {
|
|
70
|
-
const
|
|
70
|
+
const partial = node.markup.partial;
|
|
71
71
|
return DocumentLink.create(
|
|
72
|
-
range(textDocument,
|
|
73
|
-
await documentsLocator.locate(root, node.name,
|
|
72
|
+
range(textDocument, partial),
|
|
73
|
+
await documentsLocator.locate(root, node.name, partial.value),
|
|
74
74
|
);
|
|
75
75
|
}
|
|
76
76
|
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
path,
|
|
3
|
-
Section,
|
|
4
|
-
Setting,
|
|
5
|
-
ThemeBlock,
|
|
6
|
-
ThemeSchemaType,
|
|
7
|
-
} from '@platformos/platformos-check-common';
|
|
1
|
+
import { path } from '@platformos/platformos-check-common';
|
|
8
2
|
import { AbstractFileSystem } from '@platformos/platformos-common';
|
|
9
3
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
10
4
|
import { assert, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
@@ -23,28 +17,28 @@ describe('Module: DocumentManager', () => {
|
|
|
23
17
|
documentManager = new DocumentManager();
|
|
24
18
|
});
|
|
25
19
|
|
|
26
|
-
it('should return
|
|
20
|
+
it('should return an app for a root', () => {
|
|
27
21
|
// these will be different in windows vs unix
|
|
28
22
|
const rootUri = URI.file(__dirname);
|
|
29
|
-
const fileUri = Utils.joinPath(rootUri, 'test.liquid');
|
|
23
|
+
const fileUri = Utils.joinPath(rootUri, 'app', 'views', 'partials', 'test.liquid');
|
|
30
24
|
|
|
31
25
|
// We expect forward slash paths (windows path get normalized)
|
|
32
26
|
expect(fileUri.path).not.to.include('\\');
|
|
33
27
|
documentManager.open(fileUri.toString(), '{{ "hi" }}', 0);
|
|
34
|
-
const
|
|
35
|
-
expect(
|
|
36
|
-
expect(
|
|
28
|
+
const app = documentManager.app(path.normalize(rootUri));
|
|
29
|
+
expect(app).to.have.lengthOf(1);
|
|
30
|
+
expect(app[0].uri).not.to.include('\\');
|
|
37
31
|
// `fileURI.toString()` lowercases c: in 'C:\dir\path'
|
|
38
32
|
// Without the URI.parse().path, this test was failing for a dumb reason
|
|
39
|
-
expect(
|
|
33
|
+
expect(app[0].uri).to.equal(path.normalize(fileUri));
|
|
40
34
|
});
|
|
41
35
|
|
|
42
36
|
describe('when initialized with an abstract file system', () => {
|
|
43
37
|
beforeEach(async () => {
|
|
44
38
|
fs = new MockFileSystem(
|
|
45
39
|
{
|
|
46
|
-
'
|
|
47
|
-
'
|
|
40
|
+
'app/views/partials/foo.liquid': `hello {% render 'bar' %}`,
|
|
41
|
+
'app/views/partials/bar.liquid': `world`,
|
|
48
42
|
},
|
|
49
43
|
'mock-fs:',
|
|
50
44
|
);
|
|
@@ -58,35 +52,43 @@ describe('Module: DocumentManager', () => {
|
|
|
58
52
|
});
|
|
59
53
|
|
|
60
54
|
it('preloads source codes with a version of undefined', async () => {
|
|
61
|
-
const sc = documentManager.get('mock-fs:/
|
|
55
|
+
const sc = documentManager.get('mock-fs:/app/views/partials/foo.liquid');
|
|
62
56
|
assert(sc);
|
|
63
57
|
expect(sc.version).to.equal(undefined);
|
|
64
58
|
});
|
|
65
59
|
|
|
66
60
|
it('returns defined versions of opened files', () => {
|
|
67
|
-
documentManager.open(
|
|
68
|
-
|
|
61
|
+
documentManager.open(
|
|
62
|
+
'mock-fs:/app/views/partials/foo.liquid',
|
|
63
|
+
'hello {% render "bar" %}',
|
|
64
|
+
0,
|
|
65
|
+
);
|
|
66
|
+
const sc = documentManager.get('mock-fs:/app/views/partials/foo.liquid');
|
|
69
67
|
assert(sc);
|
|
70
68
|
expect(sc.version).to.equal(0);
|
|
71
69
|
});
|
|
72
70
|
|
|
73
|
-
describe('Unit:
|
|
71
|
+
describe('Unit: app(rootUri, includeFilesFromDisk)', () => {
|
|
74
72
|
it('only returns the source codes of the opened files by default', () => {
|
|
75
|
-
const
|
|
76
|
-
expect(
|
|
73
|
+
const app = documentManager.app('mock-fs:/');
|
|
74
|
+
expect(app).to.have.lengthOf(0);
|
|
77
75
|
});
|
|
78
76
|
|
|
79
77
|
it('returns all the files when called with includeFilesFromDisk', async () => {
|
|
80
|
-
const
|
|
81
|
-
expect(
|
|
78
|
+
const app = documentManager.app('mock-fs:/', true);
|
|
79
|
+
expect(app).to.have.lengthOf(2);
|
|
82
80
|
});
|
|
83
81
|
});
|
|
84
82
|
|
|
85
83
|
describe('Unit: close(uri)', () => {
|
|
86
84
|
it('sets the source version to undefined (value is on disk)', () => {
|
|
87
|
-
documentManager.open(
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
documentManager.open(
|
|
86
|
+
'mock-fs:/app/views/partials/foo.liquid',
|
|
87
|
+
'hello {% render "bar" %}',
|
|
88
|
+
10,
|
|
89
|
+
);
|
|
90
|
+
documentManager.close('mock-fs:/app/views/partials/foo.liquid');
|
|
91
|
+
const sc = documentManager.get('mock-fs:/app/views/partials/foo.liquid');
|
|
90
92
|
assert(sc);
|
|
91
93
|
expect(sc.source).to.equal('hello {% render "bar" %}');
|
|
92
94
|
expect(sc.version).to.equal(undefined);
|
|
@@ -96,9 +98,13 @@ describe('Module: DocumentManager', () => {
|
|
|
96
98
|
describe('Unit: delete(uri)', () => {
|
|
97
99
|
it('deletes the source code from the document manager', () => {
|
|
98
100
|
// as though the file no longer exists
|
|
99
|
-
documentManager.open(
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
documentManager.open(
|
|
102
|
+
'mock-fs:/app/views/partials/foo.liquid',
|
|
103
|
+
'hello {% render "bar" %}',
|
|
104
|
+
10,
|
|
105
|
+
);
|
|
106
|
+
documentManager.delete('mock-fs:/app/views/partials/foo.liquid');
|
|
107
|
+
const sc = documentManager.get('mock-fs:/app/views/partials/foo.liquid');
|
|
102
108
|
assert(!sc);
|
|
103
109
|
});
|
|
104
110
|
});
|
|
@@ -110,7 +116,7 @@ describe('Module: DocumentManager', () => {
|
|
|
110
116
|
await documentManager.preload('mock-fs:/');
|
|
111
117
|
await documentManager.preload('mock-fs:/');
|
|
112
118
|
expect(vi.mocked(fs.readFile)).toHaveBeenCalledTimes(
|
|
113
|
-
documentManager.
|
|
119
|
+
documentManager.app('mock-fs:/', true).length,
|
|
114
120
|
);
|
|
115
121
|
});
|
|
116
122
|
});
|
|
@@ -137,16 +143,16 @@ describe('Module: DocumentManager', () => {
|
|
|
137
143
|
|
|
138
144
|
fs = new MockFileSystem(
|
|
139
145
|
{
|
|
140
|
-
'
|
|
141
|
-
'
|
|
142
|
-
'
|
|
143
|
-
'
|
|
144
|
-
'
|
|
145
|
-
'
|
|
146
|
-
'
|
|
147
|
-
'
|
|
148
|
-
'
|
|
149
|
-
'
|
|
146
|
+
'app/views/partials/1.liquid': `hello {% render 'bar' %}`,
|
|
147
|
+
'app/views/partials/2.liquid': `hello {% render 'bar' %}`,
|
|
148
|
+
'app/views/partials/3.liquid': `hello {% render 'bar' %}`,
|
|
149
|
+
'app/views/partials/4.liquid': `hello {% render 'bar' %}`,
|
|
150
|
+
'app/views/partials/5.liquid': `hello {% render 'bar' %}`,
|
|
151
|
+
'app/views/partials/6.liquid': `hello {% render 'bar' %}`,
|
|
152
|
+
'app/views/partials/7.liquid': `hello {% render 'bar' %}`,
|
|
153
|
+
'app/views/partials/8.liquid': `hello {% render 'bar' %}`,
|
|
154
|
+
'app/views/partials/9.liquid': `hello {% render 'bar' %}`,
|
|
155
|
+
'app/views/partials/10.liquid': `hello {% render 'bar' %}`,
|
|
150
156
|
},
|
|
151
157
|
mockRoot,
|
|
152
158
|
);
|
|
@@ -194,83 +200,4 @@ describe('Module: DocumentManager', () => {
|
|
|
194
200
|
);
|
|
195
201
|
});
|
|
196
202
|
});
|
|
197
|
-
|
|
198
|
-
describe('when initialized with a fs, getModeForURI, and isValidSchema', () => {
|
|
199
|
-
const mockFsRoot = path.normalize('mock-fs:/theme');
|
|
200
|
-
const sectionSchema: Section.Schema = {
|
|
201
|
-
name: 'hello',
|
|
202
|
-
settings: [{ type: 'number' as Setting.Type.Number, id: 'my_num' }],
|
|
203
|
-
default: { settings: { my_num: 1 } },
|
|
204
|
-
};
|
|
205
|
-
const blockSchema: ThemeBlock.Schema = {
|
|
206
|
-
name: 'world',
|
|
207
|
-
blocks: [{ type: '@theme' }],
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
beforeEach(async () => {
|
|
211
|
-
fs = new MockFileSystem(
|
|
212
|
-
{
|
|
213
|
-
'sections/foo.liquid': `
|
|
214
|
-
{% schema %}
|
|
215
|
-
${JSON.stringify(sectionSchema, null, 2)}
|
|
216
|
-
{% endschema %}`,
|
|
217
|
-
'blocks/bar.liquid': `
|
|
218
|
-
{% schema %}
|
|
219
|
-
${JSON.stringify(blockSchema, null, 2)}
|
|
220
|
-
{% endschema %}`,
|
|
221
|
-
},
|
|
222
|
-
mockFsRoot,
|
|
223
|
-
);
|
|
224
|
-
documentManager = new DocumentManager(
|
|
225
|
-
fs,
|
|
226
|
-
undefined,
|
|
227
|
-
undefined,
|
|
228
|
-
async () => 'theme',
|
|
229
|
-
async () => true, // let's assume they are valid for testing purposes...
|
|
230
|
-
);
|
|
231
|
-
await documentManager.preload(mockFsRoot);
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
it('should augment section files with a getSchema property that resolves to a type-safe schema', async () => {
|
|
235
|
-
const section = documentManager.get(path.join(mockFsRoot, 'sections/foo.liquid'));
|
|
236
|
-
assert(section);
|
|
237
|
-
assert(section.type === 'LiquidHtml');
|
|
238
|
-
const schema = await section.getSchema();
|
|
239
|
-
assert(schema);
|
|
240
|
-
assert(schema.type === ThemeSchemaType.Section);
|
|
241
|
-
expect(schema.parsed).to.eql(sectionSchema);
|
|
242
|
-
const validSchema = schema.validSchema;
|
|
243
|
-
assert(!(validSchema instanceof Error));
|
|
244
|
-
|
|
245
|
-
// Note below that validSchema.name is accessed in a type-safe manner
|
|
246
|
-
expect(validSchema.name).to.equal(sectionSchema.name);
|
|
247
|
-
assert(validSchema.settings);
|
|
248
|
-
for (const setting of validSchema.settings) {
|
|
249
|
-
assert(setting.type);
|
|
250
|
-
assert(setting.id);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// Default is a section-only property
|
|
254
|
-
assert(validSchema.default);
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
it('should augment block files with a getSchema property that resolves to a type-safe schema', async () => {
|
|
258
|
-
const block = documentManager.get(path.join(mockFsRoot, 'blocks/bar.liquid'));
|
|
259
|
-
assert(block);
|
|
260
|
-
assert(block.type === 'LiquidHtml');
|
|
261
|
-
const schema = await block.getSchema();
|
|
262
|
-
assert(schema);
|
|
263
|
-
assert(schema.type === ThemeSchemaType.Block);
|
|
264
|
-
expect(schema.parsed).to.eql(blockSchema);
|
|
265
|
-
const validSchema = schema.validSchema;
|
|
266
|
-
assert(!(validSchema instanceof Error));
|
|
267
|
-
|
|
268
|
-
// Note below that validSchema.name is accessed in a type-safe manner
|
|
269
|
-
expect(validSchema.name).to.equal(blockSchema.name);
|
|
270
|
-
assert(validSchema.blocks);
|
|
271
|
-
for (const block of validSchema.blocks) {
|
|
272
|
-
assert(block.type);
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
203
|
});
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertNever,
|
|
3
|
+
isKnownLiquidFile,
|
|
3
4
|
memoize,
|
|
4
5
|
path,
|
|
5
6
|
recursiveReadDirectory,
|
|
6
7
|
SourceCodeType,
|
|
7
|
-
|
|
8
|
+
App,
|
|
8
9
|
toSourceCode,
|
|
9
|
-
toSchema,
|
|
10
10
|
UriString,
|
|
11
11
|
IsValidSchema,
|
|
12
12
|
memo,
|
|
13
|
-
Mode,
|
|
14
13
|
isError,
|
|
15
14
|
} from '@platformos/platformos-check-common';
|
|
16
15
|
|
|
@@ -40,7 +39,6 @@ export class DocumentManager {
|
|
|
40
39
|
private readonly fs?: AbstractFileSystem,
|
|
41
40
|
private readonly connection?: Connection,
|
|
42
41
|
private readonly clientCapabilities?: ClientCapabilities,
|
|
43
|
-
private readonly getModeForUri?: (uri: UriString) => Promise<Mode>,
|
|
44
42
|
private readonly isValidSchema?: IsValidSchema,
|
|
45
43
|
) {
|
|
46
44
|
this.sourceCodes = new Map();
|
|
@@ -78,12 +76,16 @@ export class DocumentManager {
|
|
|
78
76
|
this.set(newUri, sourceCode.source, sourceCode.version);
|
|
79
77
|
}
|
|
80
78
|
|
|
81
|
-
public
|
|
79
|
+
public app(root: UriString, includeFilesFromDisk = false): AugmentedSourceCode[] {
|
|
82
80
|
return [...this.sourceCodes.values()]
|
|
83
81
|
.filter((sourceCode) => sourceCode.uri.startsWith(root))
|
|
82
|
+
.filter((sourceCode) => includeFilesFromDisk || sourceCode.version !== undefined)
|
|
84
83
|
.filter(
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
// Exclude .liquid files that aren't in a recognized platformOS directory
|
|
85
|
+
// (e.g. generator templates). Non-liquid files are always included.
|
|
86
|
+
(sourceCode) =>
|
|
87
|
+
sourceCode.type !== SourceCodeType.LiquidHtml || isKnownLiquidFile(sourceCode.uri),
|
|
88
|
+
) satisfies App;
|
|
87
89
|
}
|
|
88
90
|
|
|
89
91
|
public get openDocuments(): AugmentedSourceCode[] {
|
|
@@ -109,8 +111,8 @@ export class DocumentManager {
|
|
|
109
111
|
|
|
110
112
|
private set(uri: UriString, source: string, version: number | undefined) {
|
|
111
113
|
uri = path.normalize(uri);
|
|
112
|
-
// We only support json and
|
|
113
|
-
if (!/\.(json|liquid|graphql)$/.test(uri) || /\.(s?css|js).liquid$/.test(uri)) {
|
|
114
|
+
// We only support json, liquid, graphql, and yaml files.
|
|
115
|
+
if (!/\.(json|liquid|graphql|ya?ml)$/.test(uri) || /\.(s?css|js).liquid$/.test(uri)) {
|
|
114
116
|
return;
|
|
115
117
|
}
|
|
116
118
|
|
|
@@ -119,7 +121,7 @@ export class DocumentManager {
|
|
|
119
121
|
|
|
120
122
|
/**
|
|
121
123
|
* The preload method is used to pre-load and pre-parse all the files in the
|
|
122
|
-
*
|
|
124
|
+
* app. It is smart and only will load files that are not already in the
|
|
123
125
|
* DocumentManager.
|
|
124
126
|
*
|
|
125
127
|
* Files that are loaded from the AbstractFileSystem will have a version of `undefined`.
|
|
@@ -137,7 +139,7 @@ export class DocumentManager {
|
|
|
137
139
|
const filesToLoad = await recursiveReadDirectory(
|
|
138
140
|
this.fs,
|
|
139
141
|
rootUri,
|
|
140
|
-
([uri]) => /\.(liquid|json|graphql)$/.test(uri) && !this.sourceCodes.has(uri),
|
|
142
|
+
([uri]) => /\.(liquid|json|graphql|ya?ml)$/.test(uri) && !this.sourceCodes.has(uri),
|
|
141
143
|
);
|
|
142
144
|
|
|
143
145
|
progress.report(10, 'Preloading files');
|
|
@@ -189,16 +191,18 @@ export class DocumentManager {
|
|
|
189
191
|
...sourceCode,
|
|
190
192
|
textDocument,
|
|
191
193
|
};
|
|
194
|
+
case SourceCodeType.YAML:
|
|
195
|
+
return {
|
|
196
|
+
...sourceCode,
|
|
197
|
+
textDocument,
|
|
198
|
+
};
|
|
192
199
|
case SourceCodeType.LiquidHtml:
|
|
193
200
|
return {
|
|
194
201
|
...sourceCode,
|
|
195
202
|
textDocument,
|
|
196
203
|
/** Lazy and only computed once per file version */
|
|
197
204
|
getSchema: memo(async () => {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const mode = await this.getModeForUri!(uri);
|
|
201
|
-
return toSchema(mode, uri, sourceCode, this.isValidSchema, false);
|
|
205
|
+
return undefined;
|
|
202
206
|
}),
|
|
203
207
|
/** Lazy and only computed once per file version */
|
|
204
208
|
getLiquidDoc: memo(async () => {
|
package/src/documents/types.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
SourceCode,
|
|
4
|
-
SectionSchema,
|
|
5
|
-
ThemeBlockSchema,
|
|
6
|
-
AppBlockSchema,
|
|
7
|
-
} from '@platformos/platformos-check-common';
|
|
1
|
+
import { SourceCodeType, SourceCode } from '@platformos/platformos-check-common';
|
|
2
|
+
import { JSONNode } from '@platformos/platformos-check-common';
|
|
8
3
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
9
4
|
import { DocDefinition } from '@platformos/platformos-check-common';
|
|
10
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Reserved for future use. platformOS does not use `{% schema %}` blocks,
|
|
8
|
+
* so `getSchema()` always returns `undefined`.
|
|
9
|
+
*/
|
|
10
|
+
export interface SchemaObject {
|
|
11
|
+
parsed: any;
|
|
12
|
+
validSchema?: unknown;
|
|
13
|
+
ast: JSONNode | Error;
|
|
14
|
+
offset: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
11
17
|
/** Util type to add the common `textDocument` property to the SourceCode. */
|
|
12
18
|
type _AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = SourceCode<SCT> & {
|
|
13
19
|
textDocument: TextDocument;
|
|
@@ -25,7 +31,7 @@ export type AugmentedGraphQLSourceCode = _AugmentedSourceCode<SourceCodeType.Gra
|
|
|
25
31
|
* about cache invalidation and will mean we'll parse the schema at most once.
|
|
26
32
|
*/
|
|
27
33
|
export type AugmentedLiquidSourceCode = _AugmentedSourceCode<SourceCodeType.LiquidHtml> & {
|
|
28
|
-
getSchema: () => Promise<
|
|
34
|
+
getSchema: () => Promise<SchemaObject | undefined>;
|
|
29
35
|
getLiquidDoc: () => Promise<DocDefinition | undefined>;
|
|
30
36
|
};
|
|
31
37
|
|
|
@@ -39,10 +45,13 @@ export type AugmentedLiquidSourceCode = _AugmentedSourceCode<SourceCodeType.Liqu
|
|
|
39
45
|
* AugmentedSourceCode<SourceCodeType.JSON> -> AugmentedJsonSourceCode
|
|
40
46
|
* AugmentedSourceCode<SourceCodeType.LiquidHtml> -> AugmentedLiquidSourceCode
|
|
41
47
|
*/
|
|
48
|
+
export type AugmentedYAMLSourceCode = _AugmentedSourceCode<SourceCodeType.YAML>;
|
|
49
|
+
|
|
42
50
|
export type AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = {
|
|
43
51
|
[SourceCodeType.JSON]: AugmentedJsonSourceCode;
|
|
44
52
|
[SourceCodeType.LiquidHtml]: AugmentedLiquidSourceCode;
|
|
45
53
|
[SourceCodeType.GraphQL]: AugmentedGraphQLSourceCode;
|
|
54
|
+
[SourceCodeType.YAML]: AugmentedYAMLSourceCode;
|
|
46
55
|
}[SCT];
|
|
47
56
|
|
|
48
57
|
export const isLiquidSourceCode = (file: AugmentedSourceCode): file is AugmentedLiquidSourceCode =>
|
|
@@ -51,5 +60,5 @@ export const isLiquidSourceCode = (file: AugmentedSourceCode): file is Augmented
|
|
|
51
60
|
export const isJsonSourceCode = (file: AugmentedSourceCode): file is AugmentedJsonSourceCode =>
|
|
52
61
|
file.type === SourceCodeType.JSON;
|
|
53
62
|
|
|
54
|
-
export const
|
|
63
|
+
export const isGraphQLSourceCode = (file: AugmentedSourceCode): file is AugmentedJsonSourceCode =>
|
|
55
64
|
file.type === SourceCodeType.GraphQL;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GetDocDefinitionForURI,
|
|
3
|
-
MetafieldDefinitionMap,
|
|
4
3
|
SourceCodeType,
|
|
5
|
-
|
|
4
|
+
PlatformOSDocset,
|
|
6
5
|
} from '@platformos/platformos-check-common';
|
|
7
6
|
import { Hover, HoverParams } from 'vscode-languageserver';
|
|
8
7
|
import { TypeSystem } from '../TypeSystem';
|
|
@@ -23,42 +22,31 @@ import {
|
|
|
23
22
|
} from './providers';
|
|
24
23
|
import { HtmlAttributeValueHoverProvider } from './providers/HtmlAttributeValueHoverProvider';
|
|
25
24
|
import { findCurrentNode } from '@platformos/platformos-check-common';
|
|
26
|
-
import { GetThemeSettingsSchemaForURI } from '../settings';
|
|
27
25
|
import { LiquidDocTagHoverProvider } from './providers/LiquidDocTagHoverProvider';
|
|
28
|
-
import { ContentForArgumentHoverProvider } from './providers/ContentForArgumentHoverProvider';
|
|
29
|
-
import { ContentForTypeHoverProvider } from './providers/ContentForTypeHoverProvider';
|
|
30
26
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
31
|
-
import {
|
|
27
|
+
import { FindAppRootURI } from '../../src/internal-types';
|
|
32
28
|
export class HoverProvider {
|
|
33
29
|
private providers: BaseHoverProvider[] = [];
|
|
34
30
|
|
|
35
31
|
constructor(
|
|
36
32
|
readonly documentManager: DocumentManager,
|
|
37
|
-
readonly
|
|
33
|
+
readonly platformosDocset: PlatformOSDocset,
|
|
38
34
|
readonly translationProvider: TranslationProvider,
|
|
39
|
-
readonly getMetafieldDefinitions: (rootUri: string) => Promise<MetafieldDefinitionMap>,
|
|
40
35
|
readonly getTranslationsForURI: GetTranslationsForURI = async () => ({}),
|
|
41
|
-
readonly getSettingsSchemaForURI: GetThemeSettingsSchemaForURI = async () => [],
|
|
42
36
|
readonly getDocDefinitionForURI: GetDocDefinitionForURI = async () => undefined,
|
|
43
|
-
readonly
|
|
37
|
+
readonly findAppRootURI: FindAppRootURI = async () => null,
|
|
44
38
|
) {
|
|
45
|
-
const typeSystem = new TypeSystem(
|
|
46
|
-
themeDocset,
|
|
47
|
-
getSettingsSchemaForURI,
|
|
48
|
-
getMetafieldDefinitions,
|
|
49
|
-
);
|
|
39
|
+
const typeSystem = new TypeSystem(platformosDocset);
|
|
50
40
|
this.providers = [
|
|
51
|
-
new
|
|
52
|
-
new
|
|
53
|
-
new
|
|
54
|
-
new LiquidFilterArgumentHoverProvider(themeDocset),
|
|
55
|
-
new LiquidFilterHoverProvider(themeDocset),
|
|
41
|
+
new LiquidTagHoverProvider(platformosDocset),
|
|
42
|
+
new LiquidFilterArgumentHoverProvider(platformosDocset),
|
|
43
|
+
new LiquidFilterHoverProvider(platformosDocset),
|
|
56
44
|
new LiquidObjectHoverProvider(typeSystem),
|
|
57
45
|
new LiquidObjectAttributeHoverProvider(typeSystem),
|
|
58
46
|
new HtmlTagHoverProvider(),
|
|
59
47
|
new HtmlAttributeHoverProvider(),
|
|
60
48
|
new HtmlAttributeValueHoverProvider(),
|
|
61
|
-
new TranslationHoverProvider(documentManager, translationProvider,
|
|
49
|
+
new TranslationHoverProvider(documentManager, translationProvider, findAppRootURI),
|
|
62
50
|
new RenderPartialHoverProvider(getDocDefinitionForURI),
|
|
63
51
|
new RenderPartialParameterHoverProvider(getDocDefinitionForURI),
|
|
64
52
|
new LiquidDocTagHoverProvider(documentManager),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
6
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
7
|
|
|
@@ -17,10 +17,8 @@ describe('Module: HtmlAttributeHoverProvider', async () => {
|
|
|
17
17
|
objects: async () => [],
|
|
18
18
|
liquidDrops: async () => [],
|
|
19
19
|
tags: async () => [],
|
|
20
|
-
systemTranslations: async () => ({}),
|
|
21
20
|
},
|
|
22
21
|
new TranslationProvider(new MockFileSystem({}, '.')),
|
|
23
|
-
async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
24
22
|
);
|
|
25
23
|
});
|
|
26
24
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
6
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
7
|
|
|
@@ -17,10 +17,8 @@ describe('Module: HtmlAttributeHoverProvider', async () => {
|
|
|
17
17
|
objects: async () => [],
|
|
18
18
|
liquidDrops: async () => [],
|
|
19
19
|
tags: async () => [],
|
|
20
|
-
systemTranslations: async () => ({}),
|
|
21
20
|
},
|
|
22
21
|
new TranslationProvider(new MockFileSystem({}, '.')),
|
|
23
|
-
async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
24
22
|
);
|
|
25
23
|
});
|
|
26
24
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
6
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
7
|
|
|
@@ -17,10 +17,8 @@ describe('Module: HtmlTagHoverProvider', async () => {
|
|
|
17
17
|
objects: async () => [],
|
|
18
18
|
liquidDrops: async () => [],
|
|
19
19
|
tags: async () => [],
|
|
20
|
-
systemTranslations: async () => ({}),
|
|
21
20
|
},
|
|
22
21
|
new TranslationProvider(new MockFileSystem({})),
|
|
23
|
-
async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
24
22
|
);
|
|
25
23
|
});
|
|
26
24
|
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
5
4
|
import '../../../../platformos-check-common/src/test/test-setup';
|
|
6
5
|
import { formatLiquidDocTagHandle, SUPPORTED_LIQUID_DOC_TAG_HANDLES } from '../../utils/liquidDoc';
|
|
7
6
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
8
7
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
9
8
|
|
|
10
|
-
describe('Module:
|
|
9
|
+
describe('Module: RenderPartialParameterHoverProvider', async () => {
|
|
11
10
|
let provider: HoverProvider;
|
|
12
11
|
|
|
13
12
|
beforeEach(() => {
|
|
@@ -19,10 +18,8 @@ describe('Module: RenderSnippetParameterHoverProvider', async () => {
|
|
|
19
18
|
objects: async () => [],
|
|
20
19
|
liquidDrops: async () => [],
|
|
21
20
|
tags: async () => [],
|
|
22
|
-
systemTranslations: async () => ({}),
|
|
23
21
|
},
|
|
24
22
|
new TranslationProvider(new MockFileSystem({})),
|
|
25
|
-
async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
26
23
|
);
|
|
27
24
|
});
|
|
28
25
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
5
4
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
5
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
6
|
|
|
@@ -33,10 +32,8 @@ describe('Module: LiquidFilterArgumentHoverProvider', async () => {
|
|
|
33
32
|
objects: async () => [],
|
|
34
33
|
liquidDrops: async () => [],
|
|
35
34
|
tags: async () => [],
|
|
36
|
-
systemTranslations: async () => ({}),
|
|
37
35
|
},
|
|
38
36
|
new TranslationProvider(new MockFileSystem({})),
|
|
39
|
-
async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
40
37
|
);
|
|
41
38
|
});
|
|
42
39
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { NodeTypes } from '@platformos/liquid-html-parser';
|
|
2
|
-
import { LiquidHtmlNode,
|
|
2
|
+
import { LiquidHtmlNode, PlatformOSDocset } from '@platformos/platformos-check-common';
|
|
3
3
|
import { Hover } from 'vscode-languageserver';
|
|
4
4
|
import { render } from '../../docset';
|
|
5
5
|
import { BaseHoverProvider } from '../BaseHoverProvider';
|
|
6
6
|
|
|
7
7
|
export class LiquidFilterArgumentHoverProvider implements BaseHoverProvider {
|
|
8
|
-
constructor(private
|
|
8
|
+
constructor(private platformosDocset: PlatformOSDocset) {}
|
|
9
9
|
|
|
10
10
|
async hover(currentNode: LiquidHtmlNode, ancestors: LiquidHtmlNode[]): Promise<Hover | null> {
|
|
11
11
|
const parentNode = ancestors.at(-1);
|
|
@@ -19,7 +19,7 @@ export class LiquidFilterArgumentHoverProvider implements BaseHoverProvider {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
const parentName = parentNode.name;
|
|
22
|
-
const entries = await this.
|
|
22
|
+
const entries = await this.platformosDocset.filters();
|
|
23
23
|
const entry = entries.find((entry) => entry.name === parentName);
|
|
24
24
|
|
|
25
25
|
if (!entry) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { describe, beforeEach, it, expect } from 'vitest';
|
|
2
2
|
import { DocumentManager } from '../../documents';
|
|
3
3
|
import { HoverProvider } from '../HoverProvider';
|
|
4
|
-
import { MetafieldDefinitionMap } from '@platformos/platformos-check-common';
|
|
5
4
|
import { TranslationProvider } from '@platformos/platformos-common';
|
|
6
5
|
import { MockFileSystem } from '@platformos/platformos-check-common/src/test';
|
|
7
6
|
|
|
@@ -24,10 +23,8 @@ describe('Module: LiquidFilterHoverProvider', async () => {
|
|
|
24
23
|
objects: async () => [],
|
|
25
24
|
liquidDrops: async () => [],
|
|
26
25
|
tags: async () => [],
|
|
27
|
-
systemTranslations: async () => ({}),
|
|
28
26
|
},
|
|
29
27
|
new TranslationProvider(new MockFileSystem({})),
|
|
30
|
-
async (_rootUri: string) => ({}) as MetafieldDefinitionMap,
|
|
31
28
|
);
|
|
32
29
|
});
|
|
33
30
|
|