@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
package/dist/types.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Config, Dependencies as
|
|
1
|
+
import { Config, Dependencies as CheckDependencies } from '@platformos/platformos-check-common';
|
|
2
2
|
import { AbstractFileSystem } from '@platformos/platformos-common';
|
|
3
3
|
import { URI } from 'vscode-languageserver';
|
|
4
4
|
import * as rpc from 'vscode-jsonrpc';
|
|
5
5
|
import { WithOptional } from './utils';
|
|
6
6
|
import { Range } from 'vscode-json-languageservice';
|
|
7
7
|
import { Reference } from '@platformos/platformos-graph';
|
|
8
|
-
export type Dependencies = WithOptional<RequiredDependencies, 'log'
|
|
8
|
+
export type Dependencies = WithOptional<RequiredDependencies, 'log'>;
|
|
9
9
|
export interface RequiredDependencies {
|
|
10
10
|
/**
|
|
11
11
|
* A basic logging function.
|
|
@@ -24,25 +24,25 @@ export interface RequiredDependencies {
|
|
|
24
24
|
*
|
|
25
25
|
* @example
|
|
26
26
|
*
|
|
27
|
-
* Here's an example VS Code workspace a
|
|
27
|
+
* Here's an example VS Code workspace a developer could run
|
|
28
28
|
* ```
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
29
|
+
* my-app/
|
|
30
|
+
* .pos
|
|
31
|
+
* app/
|
|
32
|
+
* views/
|
|
33
|
+
* layouts/
|
|
34
|
+
* pages/
|
|
35
|
+
* partials/
|
|
36
|
+
* lib/
|
|
37
|
+
* assets/
|
|
38
|
+
* another-app/
|
|
39
|
+
* .pos
|
|
40
|
+
* app/
|
|
41
|
+
* views/
|
|
42
|
+
* pages/
|
|
43
43
|
* ```
|
|
44
44
|
*
|
|
45
|
-
* In this situation, we have
|
|
45
|
+
* In this situation, we have 2 different "roots."
|
|
46
46
|
*
|
|
47
47
|
* @param uri - a file path
|
|
48
48
|
* @returns {Promise<Config>}
|
|
@@ -50,18 +50,16 @@ export interface RequiredDependencies {
|
|
|
50
50
|
loadConfig(uri: URI, fs: AbstractFileSystem): Promise<Config>;
|
|
51
51
|
/**
|
|
52
52
|
* In local environments, the Language Server can download the latest versions
|
|
53
|
-
* of
|
|
54
|
-
*
|
|
55
|
-
* environment.
|
|
53
|
+
* of the platformOS Liquid docset. In the browser, the docset must be
|
|
54
|
+
* precompiled into the bundle at build time.
|
|
56
55
|
*/
|
|
57
|
-
|
|
56
|
+
platformosDocset: NonNullable<CheckDependencies['platformosDocset']>;
|
|
58
57
|
/**
|
|
59
|
-
* In local environments, the Language Server can download the latest
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* to theme-check instantiation.
|
|
58
|
+
* In local environments, the Language Server can download the latest JSON
|
|
59
|
+
* validation schemas. In browser environments, schemas must be precompiled
|
|
60
|
+
* into validators prior to platformos-check instantiation.
|
|
63
61
|
*/
|
|
64
|
-
jsonValidationSet: NonNullable<
|
|
62
|
+
jsonValidationSet: NonNullable<CheckDependencies['jsonValidationSet']>;
|
|
65
63
|
/**
|
|
66
64
|
* A file system abstraction that allows the Language Server to read files by URI.
|
|
67
65
|
*
|
|
@@ -72,20 +70,9 @@ export interface RequiredDependencies {
|
|
|
72
70
|
* The browser accepts a custom implementation.
|
|
73
71
|
*/
|
|
74
72
|
fs: AbstractFileSystem;
|
|
75
|
-
/**
|
|
76
|
-
* In local environments, the Language Server can download the metafield definitions
|
|
77
|
-
* and provide a set of memoized definitions. In other environments, we rely on dynamically
|
|
78
|
-
* fetching the set of metafield definitions every time.
|
|
79
|
-
*/
|
|
80
|
-
getMetafieldDefinitions: ThemeCheckDependencies['getMetafieldDefinitions'];
|
|
81
|
-
/**
|
|
82
|
-
* Fetch Metafield definitions using the CLI provided the URI of the project root.
|
|
83
|
-
* This should only be used in node environments; not on the browser.
|
|
84
|
-
*/
|
|
85
|
-
fetchMetafieldDefinitionsForURI: (uri: URI) => Promise<void>;
|
|
86
73
|
}
|
|
87
|
-
export declare namespace
|
|
88
|
-
const method = "
|
|
74
|
+
export declare namespace AppGraphReferenceRequest {
|
|
75
|
+
const method = "appGraph/references";
|
|
89
76
|
const type: rpc.RequestType<Params, Response, void>;
|
|
90
77
|
interface Params {
|
|
91
78
|
uri: string;
|
|
@@ -94,8 +81,8 @@ export declare namespace ThemeGraphReferenceRequest {
|
|
|
94
81
|
}
|
|
95
82
|
type Response = AugmentedReference[];
|
|
96
83
|
}
|
|
97
|
-
export declare namespace
|
|
98
|
-
const method = "
|
|
84
|
+
export declare namespace AppGraphDependenciesRequest {
|
|
85
|
+
const method = "appGraph/dependencies";
|
|
99
86
|
const type: rpc.RequestType<Params, Response, void>;
|
|
100
87
|
interface Params {
|
|
101
88
|
uri: string;
|
|
@@ -104,24 +91,16 @@ export declare namespace ThemeGraphDependenciesRequest {
|
|
|
104
91
|
}
|
|
105
92
|
type Response = AugmentedReference[];
|
|
106
93
|
}
|
|
107
|
-
export declare namespace
|
|
108
|
-
const method = "
|
|
94
|
+
export declare namespace AppGraphRootRequest {
|
|
95
|
+
const method = "appGraph/rootUri";
|
|
109
96
|
const type: rpc.RequestType<Params, string, void>;
|
|
110
97
|
interface Params {
|
|
111
98
|
uri: string;
|
|
112
99
|
}
|
|
113
100
|
type Response = string;
|
|
114
101
|
}
|
|
115
|
-
export declare namespace
|
|
116
|
-
const method = "
|
|
117
|
-
const type: rpc.RequestType<Params, Response, void>;
|
|
118
|
-
interface Params {
|
|
119
|
-
uri: string;
|
|
120
|
-
}
|
|
121
|
-
type Response = string[];
|
|
122
|
-
}
|
|
123
|
-
export declare namespace ThemeGraphDidUpdateNotification {
|
|
124
|
-
const method = "themeGraph/onDidChangeTree";
|
|
102
|
+
export declare namespace AppGraphDidUpdateNotification {
|
|
103
|
+
const method = "appGraph/onDidChangeTree";
|
|
125
104
|
const type: rpc.NotificationType<Params>;
|
|
126
105
|
interface Params {
|
|
127
106
|
uri: string;
|
package/dist/types.js
CHANGED
|
@@ -33,31 +33,26 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
36
|
+
exports.AppGraphDidUpdateNotification = exports.AppGraphRootRequest = exports.AppGraphDependenciesRequest = exports.AppGraphReferenceRequest = void 0;
|
|
37
37
|
const rpc = __importStar(require("vscode-jsonrpc"));
|
|
38
|
-
var
|
|
39
|
-
(function (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
})(
|
|
43
|
-
var
|
|
44
|
-
(function (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
})(
|
|
48
|
-
var
|
|
49
|
-
(function (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
})(
|
|
53
|
-
var
|
|
54
|
-
(function (
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
})(
|
|
58
|
-
var ThemeGraphDidUpdateNotification;
|
|
59
|
-
(function (ThemeGraphDidUpdateNotification) {
|
|
60
|
-
ThemeGraphDidUpdateNotification.method = 'themeGraph/onDidChangeTree';
|
|
61
|
-
ThemeGraphDidUpdateNotification.type = new rpc.NotificationType(ThemeGraphDidUpdateNotification.method);
|
|
62
|
-
})(ThemeGraphDidUpdateNotification || (exports.ThemeGraphDidUpdateNotification = ThemeGraphDidUpdateNotification = {}));
|
|
38
|
+
var AppGraphReferenceRequest;
|
|
39
|
+
(function (AppGraphReferenceRequest) {
|
|
40
|
+
AppGraphReferenceRequest.method = 'appGraph/references';
|
|
41
|
+
AppGraphReferenceRequest.type = new rpc.RequestType(AppGraphReferenceRequest.method);
|
|
42
|
+
})(AppGraphReferenceRequest || (exports.AppGraphReferenceRequest = AppGraphReferenceRequest = {}));
|
|
43
|
+
var AppGraphDependenciesRequest;
|
|
44
|
+
(function (AppGraphDependenciesRequest) {
|
|
45
|
+
AppGraphDependenciesRequest.method = 'appGraph/dependencies';
|
|
46
|
+
AppGraphDependenciesRequest.type = new rpc.RequestType(AppGraphDependenciesRequest.method);
|
|
47
|
+
})(AppGraphDependenciesRequest || (exports.AppGraphDependenciesRequest = AppGraphDependenciesRequest = {}));
|
|
48
|
+
var AppGraphRootRequest;
|
|
49
|
+
(function (AppGraphRootRequest) {
|
|
50
|
+
AppGraphRootRequest.method = 'appGraph/rootUri';
|
|
51
|
+
AppGraphRootRequest.type = new rpc.RequestType(AppGraphRootRequest.method);
|
|
52
|
+
})(AppGraphRootRequest || (exports.AppGraphRootRequest = AppGraphRootRequest = {}));
|
|
53
|
+
var AppGraphDidUpdateNotification;
|
|
54
|
+
(function (AppGraphDidUpdateNotification) {
|
|
55
|
+
AppGraphDidUpdateNotification.method = 'appGraph/onDidChangeTree';
|
|
56
|
+
AppGraphDidUpdateNotification.type = new rpc.NotificationType(AppGraphDidUpdateNotification.method);
|
|
57
|
+
})(AppGraphDidUpdateNotification || (exports.AppGraphDidUpdateNotification = AppGraphDidUpdateNotification = {}));
|
|
63
58
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,oDAAsC;AA8EtC,IAAiB,wBAAwB,CASxC;AATD,WAAiB,wBAAwB;IAC1B,+BAAM,GAAG,qBAAqB,CAAC;IAC/B,6BAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAyB,yBAAA,MAAM,CAAC,CAAC;AAO1E,CAAC,EATgB,wBAAwB,wCAAxB,wBAAwB,QASxC;AAED,IAAiB,2BAA2B,CAS3C;AATD,WAAiB,2BAA2B;IAC7B,kCAAM,GAAG,uBAAuB,CAAC;IACjC,gCAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAyB,4BAAA,MAAM,CAAC,CAAC;AAO1E,CAAC,EATgB,2BAA2B,2CAA3B,2BAA2B,QAS3C;AAED,IAAiB,mBAAmB,CAOnC;AAPD,WAAiB,mBAAmB;IACrB,0BAAM,GAAG,kBAAkB,CAAC;IAC5B,wBAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAyB,oBAAA,MAAM,CAAC,CAAC;AAK1E,CAAC,EAPgB,mBAAmB,mCAAnB,mBAAmB,QAOnC;AAED,IAAiB,6BAA6B,CAM7C;AAND,WAAiB,6BAA6B;IAC/B,oCAAM,GAAG,0BAA0B,CAAC;IACpC,kCAAI,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAS,8BAAA,MAAM,CAAC,CAAC;AAI/D,CAAC,EANgB,6BAA6B,6CAA7B,6BAA6B,QAM7C"}
|
package/dist/utils/liquidDoc.js
CHANGED
|
@@ -25,7 +25,7 @@ exports.SUPPORTED_LIQUID_DOC_TAG_HANDLES = {
|
|
|
25
25
|
`- The type of parameter is optional and can be ${Object.values(platformos_check_common_1.BasicParamTypes)
|
|
26
26
|
.map((type) => `\`${type}\``)
|
|
27
27
|
.join(', ')}\n` +
|
|
28
|
-
` or liquid object that isn't exclusively a global object in our [API Docs](https://
|
|
28
|
+
` or liquid object that isn't exclusively a global object in our [API Docs](https://documentation.platformos.com/api-reference/liquid/platformos-objects)\n` +
|
|
29
29
|
'- An optional parameter is denoted by square brackets around the parameter name\n' +
|
|
30
30
|
'- The description is optional Markdown text',
|
|
31
31
|
example: '{% doc %}\n' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liquidDoc.js","sourceRoot":"","sources":["../../src/utils/liquidDoc.ts"],"names":[],"mappings":";;;AAQA,4DAcC;AAED,4DAEC;AAkCD,wEAMC;AAED,wEAiCC;AArGD,iFAM6C;AAE7C,SAAgB,wBAAwB,CACtC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAsB,EACzD,UAAmB,KAAK;IAExB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAExC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,OAAO,OAAO,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,SAAgB,wBAAwB,CAAC,KAAa,EAAE,WAAmB,EAAE,OAAe;IAC1F,OAAO,QAAQ,KAAK,OAAO,WAAW,MAAM,GAAG,gCAAgC,OAAO,UAAU,CAAC;AACnG,CAAC;AAEY,QAAA,gCAAgC,GAAG;IAC9C,CAAC,8CAAoB,CAAC,KAAK,CAAC,EAAE;QAC5B,WAAW,EACT,2DAA2D;YAC3D,kDAAkD,MAAM,CAAC,MAAM,CAAC,yCAAe,CAAC;iBAC7E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;iBAC5B,IAAI,CAAC,IAAI,CAAC,IAAI;YACjB,
|
|
1
|
+
{"version":3,"file":"liquidDoc.js","sourceRoot":"","sources":["../../src/utils/liquidDoc.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/uri.d.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
+
import { isPartial } from '@platformos/platformos-common';
|
|
2
|
+
export { isPartial };
|
|
1
3
|
export declare const partialName: (uri: string) => string;
|
|
2
|
-
export declare const isPartial: (uri: string) => boolean;
|
|
3
4
|
export declare const assetName: (uri: string) => string;
|
|
4
5
|
export declare const isAsset: (uri: string) => boolean;
|
|
5
|
-
export declare const blockName: (uri: string) => string;
|
|
6
|
-
export declare const isBlock: (uri: string) => boolean;
|
|
7
|
-
export declare const sectionName: (uri: string) => string;
|
|
8
|
-
export declare const isSection: (uri: string) => boolean;
|
|
9
|
-
export declare const sectionGroupName: (uri: string) => string;
|
|
10
|
-
export declare const isSectionGroup: (uri: string) => boolean;
|
|
11
|
-
export declare const templateName: (uri: string) => string;
|
|
12
|
-
export declare const isTemplate: (uri: string) => boolean;
|
package/dist/utils/uri.js
CHANGED
|
@@ -1,30 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isAsset = exports.assetName = exports.partialName = exports.isPartial = void 0;
|
|
4
4
|
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
5
|
+
const platformos_common_1 = require("@platformos/platformos-common");
|
|
6
|
+
Object.defineProperty(exports, "isPartial", { enumerable: true, get: function () { return platformos_common_1.isPartial; } });
|
|
5
7
|
const partialName = (uri) => platformos_check_common_1.path.basename(uri, '.liquid');
|
|
6
8
|
exports.partialName = partialName;
|
|
7
|
-
|
|
8
|
-
exports.isPartial = isPartial;
|
|
9
|
-
// asset urls have their `.liquid`` removed (if present) and require the other extension */
|
|
9
|
+
// asset urls have their `.liquid` removed (if present) and require the other extension
|
|
10
10
|
const assetName = (uri) => platformos_check_common_1.path.basename(uri, '.liquid');
|
|
11
11
|
exports.assetName = assetName;
|
|
12
|
-
const isAsset = (uri) =>
|
|
12
|
+
const isAsset = (uri) => (0, platformos_common_1.getFileType)(uri) === platformos_common_1.PlatformOSFileType.Asset;
|
|
13
13
|
exports.isAsset = isAsset;
|
|
14
|
-
const blockName = (uri) => platformos_check_common_1.path.basename(uri, '.liquid');
|
|
15
|
-
exports.blockName = blockName;
|
|
16
|
-
const isBlock = (uri) => /\bblocks(\\|\/)[^\\\/]/.test(uri);
|
|
17
|
-
exports.isBlock = isBlock;
|
|
18
|
-
const sectionName = (uri) => platformos_check_common_1.path.basename(uri, '.liquid');
|
|
19
|
-
exports.sectionName = sectionName;
|
|
20
|
-
const isSection = (uri) => /\bsections(\\|\/)[^\\\/]/.test(uri) && /.liquid$/.test(uri);
|
|
21
|
-
exports.isSection = isSection;
|
|
22
|
-
const sectionGroupName = (uri) => platformos_check_common_1.path.basename(uri, '.json');
|
|
23
|
-
exports.sectionGroupName = sectionGroupName;
|
|
24
|
-
const isSectionGroup = (uri) => /\bsections(\\|\/)[^\\\/]/.test(uri) && /.json$/.test(uri);
|
|
25
|
-
exports.isSectionGroup = isSectionGroup;
|
|
26
|
-
const templateName = (uri) => platformos_check_common_1.path.basename(uri, '.json');
|
|
27
|
-
exports.templateName = templateName;
|
|
28
|
-
const isTemplate = (uri) => /\btemplates(\\|\/)[^\\\/]/.test(uri);
|
|
29
|
-
exports.isTemplate = isTemplate;
|
|
30
14
|
//# sourceMappingURL=uri.js.map
|
package/dist/utils/uri.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/utils/uri.ts"],"names":[],"mappings":";;;AAAA,iFAA2D;
|
|
1
|
+
{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/utils/uri.ts"],"names":[],"mappings":";;;AAAA,iFAA2D;AAC3D,qEAA2F;AAElF,0FAFA,6BAAS,OAEA;AAEX,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,8BAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAA7D,QAAA,WAAW,eAAkD;AAE1E,uFAAuF;AAChF,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,8BAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAA3D,QAAA,SAAS,aAAkD;AACjE,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAA,+BAAW,EAAC,GAAG,CAAC,KAAK,sCAAkB,CAAC,KAAK,CAAC;AAAzE,QAAA,OAAO,WAAkE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platformos/platformos-language-server-common",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"author": "platformOS",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"type-check": "tsc --noEmit -p ./tsconfig.json"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@platformos/liquid-html-parser": "^0.0.
|
|
31
|
-
"@platformos/platformos-check-common": "0.0.
|
|
32
|
-
"@platformos/platformos-graph": "0.0.
|
|
30
|
+
"@platformos/liquid-html-parser": "^0.0.9",
|
|
31
|
+
"@platformos/platformos-check-common": "0.0.9",
|
|
32
|
+
"@platformos/platformos-graph": "0.0.9",
|
|
33
33
|
"@vscode/web-custom-data": "^0.4.6",
|
|
34
34
|
"vscode-json-languageservice": "^5.7.1",
|
|
35
35
|
"vscode-languageserver": "^9.0.1",
|
|
@@ -48,7 +48,7 @@ export class ClientCapabilities {
|
|
|
48
48
|
const direct = this.initializationOptions?.[key];
|
|
49
49
|
if (direct !== undefined) return direct;
|
|
50
50
|
|
|
51
|
-
// {
|
|
51
|
+
// { platformosCheck: { checkOnSave: true } }
|
|
52
52
|
const nested = pathGet<T>(this.initializationOptions, key);
|
|
53
53
|
if (nested !== undefined) return nested;
|
|
54
54
|
|
|
@@ -10,6 +10,13 @@ import {
|
|
|
10
10
|
GraphQLOutputType,
|
|
11
11
|
} from 'graphql';
|
|
12
12
|
import { parseJSON, isError } from '@platformos/platformos-check-common';
|
|
13
|
+
import {
|
|
14
|
+
JsonHashLiteral,
|
|
15
|
+
JsonArrayLiteral,
|
|
16
|
+
LiquidExpression,
|
|
17
|
+
LiquidVariable,
|
|
18
|
+
NodeTypes,
|
|
19
|
+
} from '@platformos/liquid-html-parser';
|
|
13
20
|
|
|
14
21
|
export interface PropertyShape {
|
|
15
22
|
kind: 'object' | 'array' | 'primitive';
|
|
@@ -30,7 +37,7 @@ export interface LookupResult {
|
|
|
30
37
|
/**
|
|
31
38
|
* Merge two shapes together, combining their properties
|
|
32
39
|
*/
|
|
33
|
-
function mergeShapes(a: PropertyShape, b: PropertyShape): PropertyShape {
|
|
40
|
+
export function mergeShapes(a: PropertyShape, b: PropertyShape): PropertyShape {
|
|
34
41
|
// If same kind, merge appropriately
|
|
35
42
|
if (a.kind === 'object' && b.kind === 'object') {
|
|
36
43
|
const properties = new Map(a.properties);
|
|
@@ -109,6 +116,79 @@ export function inferShapeFromJSONString(jsonString: string): PropertyShape | un
|
|
|
109
116
|
return inferShapeFromJSON(parsed);
|
|
110
117
|
}
|
|
111
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Optional callback to resolve expressions the shape inferrer can't handle
|
|
121
|
+
* (e.g. variable lookups that require the type system).
|
|
122
|
+
*/
|
|
123
|
+
export type ExpressionShapeResolver = (expr: LiquidExpression) => PropertyShape | undefined;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Infer shape from a JSON literal AST node (JsonHashLiteral or JsonArrayLiteral).
|
|
127
|
+
* This mirrors inferShapeFromJSON but walks AST nodes instead of parsed JS values.
|
|
128
|
+
*
|
|
129
|
+
* @param resolveExpression - Optional callback to resolve variable references and
|
|
130
|
+
* other expressions that require type system context.
|
|
131
|
+
*/
|
|
132
|
+
export function inferShapeFromJsonLiteral(
|
|
133
|
+
node: JsonHashLiteral | JsonArrayLiteral,
|
|
134
|
+
resolveExpression?: ExpressionShapeResolver,
|
|
135
|
+
): PropertyShape {
|
|
136
|
+
if (node.type === NodeTypes.JsonHashLiteral) {
|
|
137
|
+
const properties = new Map<string, PropertyShape>();
|
|
138
|
+
for (const entry of node.entries) {
|
|
139
|
+
const key = getJsonKeyName(entry.key);
|
|
140
|
+
if (key !== undefined) {
|
|
141
|
+
properties.set(key, inferShapeFromExpression(entry.value, resolveExpression));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return { kind: 'object', properties };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// JsonArrayLiteral
|
|
148
|
+
let itemShape: PropertyShape | undefined;
|
|
149
|
+
for (const element of node.elements) {
|
|
150
|
+
const shape = inferShapeFromExpression(element, resolveExpression);
|
|
151
|
+
itemShape = itemShape ? mergeShapes(itemShape, shape) : shape;
|
|
152
|
+
}
|
|
153
|
+
return { kind: 'array', itemShape };
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function getJsonKeyName(key: LiquidExpression): string | undefined {
|
|
157
|
+
switch (key.type) {
|
|
158
|
+
case NodeTypes.String:
|
|
159
|
+
return key.value;
|
|
160
|
+
case NodeTypes.VariableLookup:
|
|
161
|
+
return key.name ?? undefined;
|
|
162
|
+
default:
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function inferShapeFromExpression(
|
|
168
|
+
expr: LiquidExpression | LiquidVariable,
|
|
169
|
+
resolveExpression?: ExpressionShapeResolver,
|
|
170
|
+
): PropertyShape {
|
|
171
|
+
if (expr.type === NodeTypes.LiquidVariable) {
|
|
172
|
+
// A filtered expression's output type can't be statically inferred
|
|
173
|
+
return { kind: 'primitive' };
|
|
174
|
+
}
|
|
175
|
+
switch (expr.type) {
|
|
176
|
+
case NodeTypes.JsonHashLiteral:
|
|
177
|
+
case NodeTypes.JsonArrayLiteral:
|
|
178
|
+
return inferShapeFromJsonLiteral(expr, resolveExpression);
|
|
179
|
+
case NodeTypes.String:
|
|
180
|
+
return { kind: 'primitive', primitiveType: 'string' };
|
|
181
|
+
case NodeTypes.Number:
|
|
182
|
+
return { kind: 'primitive', primitiveType: 'number' };
|
|
183
|
+
case NodeTypes.LiquidLiteral:
|
|
184
|
+
if (expr.value === null) return { kind: 'primitive', primitiveType: 'null' };
|
|
185
|
+
if (typeof expr.value === 'boolean') return { kind: 'primitive', primitiveType: 'boolean' };
|
|
186
|
+
return { kind: 'primitive' };
|
|
187
|
+
default:
|
|
188
|
+
return resolveExpression?.(expr) ?? { kind: 'primitive' };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
112
192
|
/**
|
|
113
193
|
* Unwrap NonNull and get the underlying type
|
|
114
194
|
*/
|