@platformos/platformos-language-server-common 0.0.2
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 +11 -0
- package/README.md +87 -0
- package/dist/ClientCapabilities.d.ts +14 -0
- package/dist/ClientCapabilities.js +52 -0
- package/dist/ClientCapabilities.js.map +1 -0
- package/dist/PropertyShapeInference.d.ts +57 -0
- package/dist/PropertyShapeInference.js +336 -0
- package/dist/PropertyShapeInference.js.map +1 -0
- package/dist/TypeSystem.d.ts +94 -0
- package/dist/TypeSystem.js +1481 -0
- package/dist/TypeSystem.js.map +1 -0
- package/dist/VariableShapeExtractor.d.ts +14 -0
- package/dist/VariableShapeExtractor.js +283 -0
- package/dist/VariableShapeExtractor.js.map +1 -0
- package/dist/codeActions/BaseCodeActionsProvider.d.ts +11 -0
- package/dist/codeActions/BaseCodeActionsProvider.js +14 -0
- package/dist/codeActions/BaseCodeActionsProvider.js.map +1 -0
- package/dist/codeActions/CodeActionsProvider.d.ts +9 -0
- package/dist/codeActions/CodeActionsProvider.js +22 -0
- package/dist/codeActions/CodeActionsProvider.js.map +1 -0
- package/dist/codeActions/index.d.ts +1 -0
- package/dist/codeActions/index.js +7 -0
- package/dist/codeActions/index.js.map +1 -0
- package/dist/codeActions/providers/FixAllProvider.d.ts +23 -0
- package/dist/codeActions/providers/FixAllProvider.js +52 -0
- package/dist/codeActions/providers/FixAllProvider.js.map +1 -0
- package/dist/codeActions/providers/FixProvider.d.ts +6 -0
- package/dist/codeActions/providers/FixProvider.js +72 -0
- package/dist/codeActions/providers/FixProvider.js.map +1 -0
- 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/codeActions/providers/SuggestionProvider.d.ts +6 -0
- package/dist/codeActions/providers/SuggestionProvider.js +41 -0
- package/dist/codeActions/providers/SuggestionProvider.js.map +1 -0
- package/dist/codeActions/providers/index.d.ts +3 -0
- package/dist/codeActions/providers/index.js +10 -0
- package/dist/codeActions/providers/index.js.map +1 -0
- package/dist/codeActions/providers/utils.d.ts +20 -0
- package/dist/codeActions/providers/utils.js +29 -0
- package/dist/codeActions/providers/utils.js.map +1 -0
- package/dist/commands/BaseExecuteCommandProvider.d.ts +13 -0
- package/dist/commands/BaseExecuteCommandProvider.js +13 -0
- package/dist/commands/BaseExecuteCommandProvider.js.map +1 -0
- package/dist/commands/ExecuteCommandProvider.d.ts +11 -0
- package/dist/commands/ExecuteCommandProvider.js +30 -0
- package/dist/commands/ExecuteCommandProvider.js.map +1 -0
- package/dist/commands/index.d.ts +2 -0
- package/dist/commands/index.js +9 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/providers/ApplyFixesProvider.d.ts +19 -0
- package/dist/commands/providers/ApplyFixesProvider.js +69 -0
- package/dist/commands/providers/ApplyFixesProvider.js.map +1 -0
- package/dist/commands/providers/ApplySuggestionProvider.d.ts +19 -0
- package/dist/commands/providers/ApplySuggestionProvider.js +73 -0
- package/dist/commands/providers/ApplySuggestionProvider.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/commands/providers/RunChecksProvider.d.ts +26 -0
- package/dist/commands/providers/RunChecksProvider.js +32 -0
- package/dist/commands/providers/RunChecksProvider.js.map +1 -0
- package/dist/commands/providers/index.d.ts +3 -0
- package/dist/commands/providers/index.js +12 -0
- package/dist/commands/providers/index.js.map +1 -0
- package/dist/completions/CompletionsProvider.d.ts +35 -0
- package/dist/completions/CompletionsProvider.js +55 -0
- package/dist/completions/CompletionsProvider.js.map +1 -0
- package/dist/completions/index.d.ts +1 -0
- package/dist/completions/index.js +6 -0
- package/dist/completions/index.js.map +1 -0
- package/dist/completions/params/LiquidCompletionParams.d.ts +24 -0
- package/dist/completions/params/LiquidCompletionParams.js +436 -0
- package/dist/completions/params/LiquidCompletionParams.js.map +1 -0
- package/dist/completions/params/fix.d.ts +11 -0
- package/dist/completions/params/fix.js +238 -0
- package/dist/completions/params/fix.js.map +1 -0
- package/dist/completions/params/index.d.ts +2 -0
- package/dist/completions/params/index.js +8 -0
- package/dist/completions/params/index.js.map +1 -0
- package/dist/completions/providers/ContentForBlockTypeCompletionProvider.d.ts +8 -0
- package/dist/completions/providers/ContentForBlockTypeCompletionProvider.js +36 -0
- package/dist/completions/providers/ContentForBlockTypeCompletionProvider.js.map +1 -0
- package/dist/completions/providers/ContentForCompletionProvider.d.ts +7 -0
- package/dist/completions/providers/ContentForCompletionProvider.js +87 -0
- package/dist/completions/providers/ContentForCompletionProvider.js.map +1 -0
- package/dist/completions/providers/ContentForParameterCompletionProvider.d.ts +23 -0
- package/dist/completions/providers/ContentForParameterCompletionProvider.js +127 -0
- package/dist/completions/providers/ContentForParameterCompletionProvider.js.map +1 -0
- package/dist/completions/providers/FilterCompletionProvider.d.ts +21 -0
- package/dist/completions/providers/FilterCompletionProvider.js +162 -0
- package/dist/completions/providers/FilterCompletionProvider.js.map +1 -0
- package/dist/completions/providers/FilterNamedParameterCompletionProvider.d.ts +15 -0
- package/dist/completions/providers/FilterNamedParameterCompletionProvider.js +86 -0
- package/dist/completions/providers/FilterNamedParameterCompletionProvider.js.map +1 -0
- package/dist/completions/providers/HtmlAttributeCompletionProvider.d.ts +13 -0
- package/dist/completions/providers/HtmlAttributeCompletionProvider.js +83 -0
- package/dist/completions/providers/HtmlAttributeCompletionProvider.js.map +1 -0
- package/dist/completions/providers/HtmlAttributeValueCompletionProvider.d.ts +7 -0
- package/dist/completions/providers/HtmlAttributeValueCompletionProvider.js +53 -0
- package/dist/completions/providers/HtmlAttributeValueCompletionProvider.js.map +1 -0
- package/dist/completions/providers/HtmlTagCompletionProvider.d.ts +7 -0
- package/dist/completions/providers/HtmlTagCompletionProvider.js +90 -0
- package/dist/completions/providers/HtmlTagCompletionProvider.js.map +1 -0
- package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.d.ts +9 -0
- package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js +56 -0
- package/dist/completions/providers/LiquidDocParamTypeCompletionProvider.js.map +1 -0
- package/dist/completions/providers/LiquidDocTagCompletionProvider.d.ts +8 -0
- package/dist/completions/providers/LiquidDocTagCompletionProvider.js +62 -0
- package/dist/completions/providers/LiquidDocTagCompletionProvider.js.map +1 -0
- package/dist/completions/providers/LiquidTagsCompletionProvider.d.ts +9 -0
- package/dist/completions/providers/LiquidTagsCompletionProvider.js +367 -0
- package/dist/completions/providers/LiquidTagsCompletionProvider.js.map +1 -0
- package/dist/completions/providers/ObjectAttributeCompletionProvider.d.ts +9 -0
- package/dist/completions/providers/ObjectAttributeCompletionProvider.js +71 -0
- package/dist/completions/providers/ObjectAttributeCompletionProvider.js.map +1 -0
- package/dist/completions/providers/ObjectCompletionProvider.d.ts +9 -0
- package/dist/completions/providers/ObjectCompletionProvider.js +35 -0
- package/dist/completions/providers/ObjectCompletionProvider.js.map +1 -0
- package/dist/completions/providers/PartialCompletionProvider.d.ts +9 -0
- package/dist/completions/providers/PartialCompletionProvider.js +34 -0
- package/dist/completions/providers/PartialCompletionProvider.js.map +1 -0
- package/dist/completions/providers/RenderPartialParameterCompletionProvider.d.ts +10 -0
- package/dist/completions/providers/RenderPartialParameterCompletionProvider.js +55 -0
- package/dist/completions/providers/RenderPartialParameterCompletionProvider.js.map +1 -0
- package/dist/completions/providers/TranslationCompletionProvider.d.ts +11 -0
- package/dist/completions/providers/TranslationCompletionProvider.js +78 -0
- package/dist/completions/providers/TranslationCompletionProvider.js.map +1 -0
- package/dist/completions/providers/common/CompletionItemProperties.d.ts +7 -0
- package/dist/completions/providers/common/CompletionItemProperties.js +52 -0
- package/dist/completions/providers/common/CompletionItemProperties.js.map +1 -0
- package/dist/completions/providers/common/Provider.d.ts +5 -0
- package/dist/completions/providers/common/Provider.js +3 -0
- package/dist/completions/providers/common/Provider.js.map +1 -0
- package/dist/completions/providers/common/index.d.ts +7 -0
- package/dist/completions/providers/common/index.js +17 -0
- package/dist/completions/providers/common/index.js.map +1 -0
- package/dist/completions/providers/data/contentForParameterCompletionOptions.d.ts +7 -0
- package/dist/completions/providers/data/contentForParameterCompletionOptions.js +13 -0
- package/dist/completions/providers/data/contentForParameterCompletionOptions.js.map +1 -0
- package/dist/completions/providers/index.d.ts +17 -0
- package/dist/completions/providers/index.js +36 -0
- package/dist/completions/providers/index.js.map +1 -0
- package/dist/css/CSSLanguageService.d.ts +12 -0
- package/dist/css/CSSLanguageService.js +94 -0
- package/dist/css/CSSLanguageService.js.map +1 -0
- package/dist/css/test/test-helpers.d.ts +4 -0
- package/dist/css/test/test-helpers.js +19 -0
- package/dist/css/test/test-helpers.js.map +1 -0
- package/dist/definitions/BaseDefinitionProvider.d.ts +5 -0
- package/dist/definitions/BaseDefinitionProvider.js +3 -0
- package/dist/definitions/BaseDefinitionProvider.js.map +1 -0
- package/dist/definitions/DefinitionProvider.d.ts +8 -0
- package/dist/definitions/DefinitionProvider.js +29 -0
- package/dist/definitions/DefinitionProvider.js.map +1 -0
- package/dist/definitions/providers/SchemaTranslationStringDefinitionProvider.d.ts +10 -0
- package/dist/definitions/providers/SchemaTranslationStringDefinitionProvider.js +55 -0
- package/dist/definitions/providers/SchemaTranslationStringDefinitionProvider.js.map +1 -0
- package/dist/definitions/providers/TranslationStringDefinitionProvider.d.ts +10 -0
- package/dist/definitions/providers/TranslationStringDefinitionProvider.js +48 -0
- package/dist/definitions/providers/TranslationStringDefinitionProvider.js.map +1 -0
- package/dist/diagnostics/DiagnosticsManager.d.ts +24 -0
- package/dist/diagnostics/DiagnosticsManager.js +40 -0
- package/dist/diagnostics/DiagnosticsManager.js.map +1 -0
- package/dist/diagnostics/index.d.ts +2 -0
- package/dist/diagnostics/index.js +8 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/diagnostics/offenseToDiagnostic.d.ts +4 -0
- package/dist/diagnostics/offenseToDiagnostic.js +68 -0
- package/dist/diagnostics/offenseToDiagnostic.js.map +1 -0
- package/dist/diagnostics/runChecks.d.ts +9 -0
- package/dist/diagnostics/runChecks.js +103 -0
- package/dist/diagnostics/runChecks.js.map +1 -0
- package/dist/docset/HtmlDocset.d.ts +35 -0
- package/dist/docset/HtmlDocset.js +39 -0
- package/dist/docset/HtmlDocset.js.map +1 -0
- package/dist/docset/MarkdownRenderer.d.ts +7 -0
- package/dist/docset/MarkdownRenderer.js +125 -0
- package/dist/docset/MarkdownRenderer.js.map +1 -0
- package/dist/docset/index.d.ts +2 -0
- package/dist/docset/index.js +22 -0
- package/dist/docset/index.js.map +1 -0
- package/dist/documentHighlights/BaseDocumentHighlightsProvider.d.ts +5 -0
- package/dist/documentHighlights/BaseDocumentHighlightsProvider.js +3 -0
- package/dist/documentHighlights/BaseDocumentHighlightsProvider.js.map +1 -0
- package/dist/documentHighlights/DocumentHighlightsProvider.d.ts +22 -0
- package/dist/documentHighlights/DocumentHighlightsProvider.js +41 -0
- package/dist/documentHighlights/DocumentHighlightsProvider.js.map +1 -0
- package/dist/documentHighlights/index.d.ts +1 -0
- package/dist/documentHighlights/index.js +7 -0
- package/dist/documentHighlights/index.js.map +1 -0
- package/dist/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.d.ts +11 -0
- package/dist/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.js +20 -0
- package/dist/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.js.map +1 -0
- package/dist/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.d.ts +11 -0
- package/dist/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.js +48 -0
- package/dist/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.js.map +1 -0
- package/dist/documentHighlights/providers/index.d.ts +2 -0
- package/dist/documentHighlights/providers/index.js +8 -0
- package/dist/documentHighlights/providers/index.js.map +1 -0
- package/dist/documentLinks/DocumentLinksProvider.d.ts +12 -0
- package/dist/documentLinks/DocumentLinksProvider.js +78 -0
- package/dist/documentLinks/DocumentLinksProvider.js.map +1 -0
- package/dist/documentLinks/index.d.ts +1 -0
- package/dist/documentLinks/index.js +6 -0
- package/dist/documentLinks/index.js.map +1 -0
- package/dist/documents/DocumentManager.d.ts +60 -0
- package/dist/documents/DocumentManager.js +167 -0
- package/dist/documents/DocumentManager.js.map +1 -0
- package/dist/documents/index.d.ts +2 -0
- package/dist/documents/index.js +21 -0
- package/dist/documents/index.js.map +1 -0
- package/dist/documents/types.d.ts +39 -0
- package/dist/documents/types.js +11 -0
- package/dist/documents/types.js.map +1 -0
- package/dist/formatting/OnTypeFormattingProvider.d.ts +10 -0
- package/dist/formatting/OnTypeFormattingProvider.js +24 -0
- package/dist/formatting/OnTypeFormattingProvider.js.map +1 -0
- package/dist/formatting/index.d.ts +1 -0
- package/dist/formatting/index.js +6 -0
- package/dist/formatting/index.js.map +1 -0
- package/dist/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.d.ts +49 -0
- package/dist/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.js +105 -0
- package/dist/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.js.map +1 -0
- package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.d.ts +41 -0
- package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.js +105 -0
- package/dist/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.js.map +1 -0
- package/dist/formatting/types.d.ts +7 -0
- package/dist/formatting/types.js +3 -0
- package/dist/formatting/types.js.map +1 -0
- package/dist/hover/BaseHoverProvider.d.ts +5 -0
- package/dist/hover/BaseHoverProvider.js +3 -0
- package/dist/hover/BaseHoverProvider.js.map +1 -0
- package/dist/hover/HoverProvider.d.ts +20 -0
- package/dist/hover/HoverProvider.js +55 -0
- package/dist/hover/HoverProvider.js.map +1 -0
- package/dist/hover/index.d.ts +1 -0
- package/dist/hover/index.js +6 -0
- package/dist/hover/index.js.map +1 -0
- package/dist/hover/providers/ContentForArgumentHoverProvider.d.ts +8 -0
- package/dist/hover/providers/ContentForArgumentHoverProvider.js +37 -0
- package/dist/hover/providers/ContentForArgumentHoverProvider.js.map +1 -0
- package/dist/hover/providers/ContentForTypeHoverProvider.d.ts +8 -0
- package/dist/hover/providers/ContentForTypeHoverProvider.js +32 -0
- package/dist/hover/providers/ContentForTypeHoverProvider.js.map +1 -0
- package/dist/hover/providers/HtmlAttributeHoverProvider.d.ts +6 -0
- package/dist/hover/providers/HtmlAttributeHoverProvider.js +37 -0
- package/dist/hover/providers/HtmlAttributeHoverProvider.js.map +1 -0
- package/dist/hover/providers/HtmlAttributeValueHoverProvider.d.ts +6 -0
- package/dist/hover/providers/HtmlAttributeValueHoverProvider.js +42 -0
- package/dist/hover/providers/HtmlAttributeValueHoverProvider.js.map +1 -0
- package/dist/hover/providers/HtmlTagHoverProvider.d.ts +6 -0
- package/dist/hover/providers/HtmlTagHoverProvider.js +37 -0
- package/dist/hover/providers/HtmlTagHoverProvider.js.map +1 -0
- package/dist/hover/providers/LiquidDocTagHoverProvider.d.ts +9 -0
- package/dist/hover/providers/LiquidDocTagHoverProvider.js +42 -0
- package/dist/hover/providers/LiquidDocTagHoverProvider.js.map +1 -0
- package/dist/hover/providers/LiquidFilterArgumentHoverProvider.d.ts +8 -0
- package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js +36 -0
- package/dist/hover/providers/LiquidFilterArgumentHoverProvider.js.map +1 -0
- package/dist/hover/providers/LiquidFilterHoverProvider.d.ts +8 -0
- package/dist/hover/providers/LiquidFilterHoverProvider.js +29 -0
- package/dist/hover/providers/LiquidFilterHoverProvider.js.map +1 -0
- package/dist/hover/providers/LiquidObjectAttributeHoverProvider.d.ts +9 -0
- package/dist/hover/providers/LiquidObjectAttributeHoverProvider.js +113 -0
- package/dist/hover/providers/LiquidObjectAttributeHoverProvider.js.map +1 -0
- package/dist/hover/providers/LiquidObjectHoverProvider.d.ts +9 -0
- package/dist/hover/providers/LiquidObjectHoverProvider.js +72 -0
- package/dist/hover/providers/LiquidObjectHoverProvider.js.map +1 -0
- package/dist/hover/providers/LiquidTagHoverProvider.d.ts +8 -0
- package/dist/hover/providers/LiquidTagHoverProvider.js +31 -0
- package/dist/hover/providers/LiquidTagHoverProvider.js.map +1 -0
- package/dist/hover/providers/RenderPartialHoverProvider.d.ts +8 -0
- package/dist/hover/providers/RenderPartialHoverProvider.js +28 -0
- package/dist/hover/providers/RenderPartialHoverProvider.js.map +1 -0
- package/dist/hover/providers/RenderPartialParameterHoverProvider.d.ts +8 -0
- package/dist/hover/providers/RenderPartialParameterHoverProvider.js +33 -0
- package/dist/hover/providers/RenderPartialParameterHoverProvider.js.map +1 -0
- package/dist/hover/providers/TranslationHoverProvider.d.ts +13 -0
- package/dist/hover/providers/TranslationHoverProvider.js +45 -0
- package/dist/hover/providers/TranslationHoverProvider.js.map +1 -0
- package/dist/hover/providers/index.d.ts +11 -0
- package/dist/hover/providers/index.js +26 -0
- package/dist/hover/providers/index.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/internal-types.d.ts +1 -0
- package/dist/internal-types.js +3 -0
- package/dist/internal-types.js.map +1 -0
- package/dist/json/JSONContributions.d.ts +25 -0
- package/dist/json/JSONContributions.js +99 -0
- package/dist/json/JSONContributions.js.map +1 -0
- package/dist/json/JSONLanguageService.d.ts +27 -0
- package/dist/json/JSONLanguageService.js +171 -0
- package/dist/json/JSONLanguageService.js.map +1 -0
- package/dist/json/RequestContext.d.ts +22 -0
- package/dist/json/RequestContext.js +14 -0
- package/dist/json/RequestContext.js.map +1 -0
- package/dist/json/completions/JSONCompletionProvider.d.ts +30 -0
- package/dist/json/completions/JSONCompletionProvider.js +3 -0
- package/dist/json/completions/JSONCompletionProvider.js.map +1 -0
- package/dist/json/completions/providers/BlockSettingsPropertyCompletionProvider.d.ts +44 -0
- package/dist/json/completions/providers/BlockSettingsPropertyCompletionProvider.js +98 -0
- package/dist/json/completions/providers/BlockSettingsPropertyCompletionProvider.js.map +1 -0
- package/dist/json/completions/providers/BlockTypeCompletionProvider.d.ts +35 -0
- package/dist/json/completions/providers/BlockTypeCompletionProvider.js +97 -0
- package/dist/json/completions/providers/BlockTypeCompletionProvider.js.map +1 -0
- package/dist/json/completions/providers/ReferencedBlockTypeCompletionProvider.d.ts +34 -0
- package/dist/json/completions/providers/ReferencedBlockTypeCompletionProvider.js +95 -0
- package/dist/json/completions/providers/ReferencedBlockTypeCompletionProvider.js.map +1 -0
- package/dist/json/completions/providers/SchemaTranslationCompletionProvider.d.ts +9 -0
- package/dist/json/completions/providers/SchemaTranslationCompletionProvider.js +46 -0
- package/dist/json/completions/providers/SchemaTranslationCompletionProvider.js.map +1 -0
- package/dist/json/completions/providers/SettingsPropertyCompletionProvider.d.ts +33 -0
- package/dist/json/completions/providers/SettingsPropertyCompletionProvider.js +64 -0
- package/dist/json/completions/providers/SettingsPropertyCompletionProvider.js.map +1 -0
- package/dist/json/documentLinks/DocumentLinksProvider.d.ts +6 -0
- package/dist/json/documentLinks/DocumentLinksProvider.js +45 -0
- package/dist/json/documentLinks/DocumentLinksProvider.js.map +1 -0
- package/dist/json/hover/JSONHoverProvider.d.ts +7 -0
- package/dist/json/hover/JSONHoverProvider.js +3 -0
- package/dist/json/hover/JSONHoverProvider.js.map +1 -0
- package/dist/json/hover/providers/BlockSettingsHoverProvider.d.ts +12 -0
- package/dist/json/hover/providers/BlockSettingsHoverProvider.js +75 -0
- package/dist/json/hover/providers/BlockSettingsHoverProvider.js.map +1 -0
- package/dist/json/hover/providers/SchemaTranslationHoverProvider.d.ts +10 -0
- package/dist/json/hover/providers/SchemaTranslationHoverProvider.js +36 -0
- package/dist/json/hover/providers/SchemaTranslationHoverProvider.js.map +1 -0
- package/dist/json/hover/providers/SettingsHoverProvider.d.ts +10 -0
- package/dist/json/hover/providers/SettingsHoverProvider.js +62 -0
- package/dist/json/hover/providers/SettingsHoverProvider.js.map +1 -0
- package/dist/json/hover/providers/TranslationPathHoverProvider.d.ts +9 -0
- package/dist/json/hover/providers/TranslationPathHoverProvider.js +65 -0
- package/dist/json/hover/providers/TranslationPathHoverProvider.js.map +1 -0
- package/dist/json/schemaSettings.d.ts +4 -0
- package/dist/json/schemaSettings.js +45 -0
- package/dist/json/schemaSettings.js.map +1 -0
- package/dist/json/test/test-helpers.d.ts +8 -0
- package/dist/json/test/test-helpers.js +42 -0
- package/dist/json/test/test-helpers.js.map +1 -0
- package/dist/json/utils.d.ts +6 -0
- package/dist/json/utils.js +31 -0
- package/dist/json/utils.js.map +1 -0
- package/dist/linkedEditingRanges/BaseLinkedEditingRangesProvider.d.ts +5 -0
- package/dist/linkedEditingRanges/BaseLinkedEditingRangesProvider.js +3 -0
- package/dist/linkedEditingRanges/BaseLinkedEditingRangesProvider.js.map +1 -0
- package/dist/linkedEditingRanges/LinkedEditingRangesProvider.d.ts +8 -0
- package/dist/linkedEditingRanges/LinkedEditingRangesProvider.js +31 -0
- package/dist/linkedEditingRanges/LinkedEditingRangesProvider.js.map +1 -0
- package/dist/linkedEditingRanges/index.d.ts +1 -0
- package/dist/linkedEditingRanges/index.js +6 -0
- package/dist/linkedEditingRanges/index.js.map +1 -0
- package/dist/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.d.ts +9 -0
- package/dist/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.js +37 -0
- package/dist/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.js.map +1 -0
- package/dist/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.d.ts +12 -0
- package/dist/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.js +26 -0
- package/dist/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.js.map +1 -0
- package/dist/linkedEditingRanges/providers/index.d.ts +2 -0
- package/dist/linkedEditingRanges/providers/index.js +8 -0
- package/dist/linkedEditingRanges/providers/index.js.map +1 -0
- package/dist/linkedEditingRanges/wordPattern.d.ts +1 -0
- package/dist/linkedEditingRanges/wordPattern.js +7 -0
- package/dist/linkedEditingRanges/wordPattern.js.map +1 -0
- package/dist/plugins/css.d.ts +3 -0
- package/dist/plugins/css.js +12 -0
- package/dist/plugins/css.js.map +1 -0
- package/dist/progress.d.ts +42 -0
- package/dist/progress.js +74 -0
- package/dist/progress.js.map +1 -0
- package/dist/rename/BaseRenameProvider.d.ts +6 -0
- package/dist/rename/BaseRenameProvider.js +3 -0
- package/dist/rename/BaseRenameProvider.js.map +1 -0
- package/dist/rename/RenameProvider.d.ts +21 -0
- package/dist/rename/RenameProvider.js +58 -0
- package/dist/rename/RenameProvider.js.map +1 -0
- package/dist/rename/providers/HtmlTagNameRenameProvider.d.ts +10 -0
- package/dist/rename/providers/HtmlTagNameRenameProvider.js +39 -0
- package/dist/rename/providers/HtmlTagNameRenameProvider.js.map +1 -0
- package/dist/rename/providers/LiquidVariableRenameProvider.d.ts +16 -0
- package/dist/rename/providers/LiquidVariableRenameProvider.js +194 -0
- package/dist/rename/providers/LiquidVariableRenameProvider.js.map +1 -0
- package/dist/renamed/BaseRenameHandler.d.ts +4 -0
- package/dist/renamed/BaseRenameHandler.js +3 -0
- package/dist/renamed/BaseRenameHandler.js.map +1 -0
- package/dist/renamed/RenameHandler.d.ts +18 -0
- package/dist/renamed/RenameHandler.js +37 -0
- package/dist/renamed/RenameHandler.js.map +1 -0
- package/dist/renamed/handlers/AssetRenameHandler.d.ts +26 -0
- package/dist/renamed/handlers/AssetRenameHandler.js +99 -0
- package/dist/renamed/handlers/AssetRenameHandler.js.map +1 -0
- package/dist/renamed/handlers/BlockRenameHandler.d.ts +41 -0
- package/dist/renamed/handlers/BlockRenameHandler.js +304 -0
- package/dist/renamed/handlers/BlockRenameHandler.js.map +1 -0
- package/dist/renamed/handlers/PartialRenameHandler.d.ts +26 -0
- package/dist/renamed/handlers/PartialRenameHandler.js +99 -0
- package/dist/renamed/handlers/PartialRenameHandler.js.map +1 -0
- package/dist/renamed/handlers/SectionRenameHandler.d.ts +25 -0
- package/dist/renamed/handlers/SectionRenameHandler.js +176 -0
- package/dist/renamed/handlers/SectionRenameHandler.js.map +1 -0
- package/dist/renamed/handlers/utils.d.ts +3 -0
- package/dist/renamed/handlers/utils.js +20 -0
- package/dist/renamed/handlers/utils.js.map +1 -0
- package/dist/server/CachedFileSystem.d.ts +12 -0
- package/dist/server/CachedFileSystem.js +29 -0
- package/dist/server/CachedFileSystem.js.map +1 -0
- package/dist/server/Configuration.d.ts +25 -0
- package/dist/server/Configuration.js +77 -0
- package/dist/server/Configuration.js.map +1 -0
- package/dist/server/ThemeGraphManager.d.ts +35 -0
- package/dist/server/ThemeGraphManager.js +200 -0
- package/dist/server/ThemeGraphManager.js.map +1 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +6 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/safe.d.ts +19 -0
- package/dist/server/safe.js +33 -0
- package/dist/server/safe.js.map +1 -0
- package/dist/server/startServer.d.ts +13 -0
- package/dist/server/startServer.js +598 -0
- package/dist/server/startServer.js.map +1 -0
- package/dist/settings/index.d.ts +29 -0
- package/dist/settings/index.js +11 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/test/ApplyEditsAssertion.d.ts +14 -0
- package/dist/test/ApplyEditsAssertion.js +19 -0
- package/dist/test/ApplyEditsAssertion.js.map +1 -0
- package/dist/test/CompletionItemsAssertion.d.ts +25 -0
- package/dist/test/CompletionItemsAssertion.js +60 -0
- package/dist/test/CompletionItemsAssertion.js.map +1 -0
- package/dist/test/HoverAssertion.d.ts +16 -0
- package/dist/test/HoverAssertion.js +54 -0
- package/dist/test/HoverAssertion.js.map +1 -0
- package/dist/test/MockChecks.d.ts +2 -0
- package/dist/test/MockChecks.js +30 -0
- package/dist/test/MockChecks.js.map +1 -0
- package/dist/test/MockConnection.d.ts +44 -0
- package/dist/test/MockConnection.js +106 -0
- package/dist/test/MockConnection.js.map +1 -0
- package/dist/test/test-setup.d.ts +1 -0
- package/dist/test/test-setup.js +8 -0
- package/dist/test/test-setup.js.map +1 -0
- package/dist/translations.d.ts +19 -0
- package/dist/translations.js +73 -0
- package/dist/translations.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +149 -0
- package/dist/types.js +63 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/array.d.ts +1 -0
- package/dist/utils/array.js +11 -0
- package/dist/utils/array.js.map +1 -0
- package/dist/utils/debounce.d.ts +37 -0
- package/dist/utils/debounce.js +44 -0
- package/dist/utils/debounce.js.map +1 -0
- package/dist/utils/htmlTagNames.d.ts +5 -0
- package/dist/utils/htmlTagNames.js +42 -0
- package/dist/utils/htmlTagNames.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.js +26 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/isCovered.d.ts +4 -0
- package/dist/utils/isCovered.js +7 -0
- package/dist/utils/isCovered.js.map +1 -0
- package/dist/utils/liquidDoc.d.ts +22 -0
- package/dist/utils/liquidDoc.js +78 -0
- package/dist/utils/liquidDoc.js.map +1 -0
- package/dist/utils/node.d.ts +24 -0
- package/dist/utils/node.js +52 -0
- package/dist/utils/node.js.map +1 -0
- package/dist/utils/uri.d.ts +12 -0
- package/dist/utils/uri.js +30 -0
- package/dist/utils/uri.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +9 -0
- package/dist/version.js.map +1 -0
- package/package.json +40 -0
- package/src/ClientCapabilities.ts +63 -0
- package/src/PropertyShapeInference.ts +394 -0
- package/src/TypeSystem.spec.ts +1150 -0
- package/src/TypeSystem.ts +1948 -0
- package/src/VariableShapeExtractor.ts +380 -0
- package/src/codeActions/BaseCodeActionsProvider.ts +18 -0
- package/src/codeActions/CodeActionsProvider.ts +28 -0
- package/src/codeActions/index.ts +1 -0
- package/src/codeActions/providers/FixAllProvider.spec.ts +115 -0
- package/src/codeActions/providers/FixAllProvider.ts +60 -0
- package/src/codeActions/providers/FixProvider.spec.ts +330 -0
- package/src/codeActions/providers/FixProvider.ts +105 -0
- package/src/codeActions/providers/SuggestionProvider.spec.ts +143 -0
- package/src/codeActions/providers/SuggestionProvider.ts +75 -0
- package/src/codeActions/providers/index.ts +3 -0
- package/src/codeActions/providers/utils.ts +47 -0
- package/src/commands/BaseExecuteCommandProvider.ts +15 -0
- package/src/commands/ExecuteCommandProvider.ts +59 -0
- package/src/commands/index.ts +2 -0
- package/src/commands/providers/ApplyFixesProvider.spec.ts +133 -0
- package/src/commands/providers/ApplyFixesProvider.ts +86 -0
- package/src/commands/providers/ApplySuggestionProvider.spec.ts +135 -0
- package/src/commands/providers/ApplySuggestionProvider.ts +105 -0
- package/src/commands/providers/RunChecksProvider.spec.ts +55 -0
- package/src/commands/providers/RunChecksProvider.ts +36 -0
- package/src/commands/providers/index.ts +3 -0
- package/src/completions/CompletionsProvider.ts +128 -0
- package/src/completions/index.ts +1 -0
- package/src/completions/params/LiquidCompletionParams.spec.ts +319 -0
- package/src/completions/params/LiquidCompletionParams.ts +538 -0
- package/src/completions/params/fix.spec.ts +159 -0
- package/src/completions/params/fix.ts +269 -0
- package/src/completions/params/index.ts +2 -0
- package/src/completions/params/testcases.txt +104 -0
- package/src/completions/providers/ContentForBlockTypeCompletionProvider.spec.ts +41 -0
- package/src/completions/providers/ContentForBlockTypeCompletionProvider.ts +42 -0
- package/src/completions/providers/ContentForCompletionProvider.spec.ts +96 -0
- package/src/completions/providers/ContentForCompletionProvider.ts +113 -0
- package/src/completions/providers/ContentForParameterCompletionProvider.spec.ts +362 -0
- package/src/completions/providers/ContentForParameterCompletionProvider.ts +187 -0
- package/src/completions/providers/FilterCompletionProvider.spec.ts +377 -0
- package/src/completions/providers/FilterCompletionProvider.ts +225 -0
- package/src/completions/providers/FilterNamedParameterCompletionProvider.spec.ts +239 -0
- package/src/completions/providers/FilterNamedParameterCompletionProvider.ts +121 -0
- package/src/completions/providers/HtmlAttributeCompletionProvider.spec.ts +150 -0
- package/src/completions/providers/HtmlAttributeCompletionProvider.ts +117 -0
- package/src/completions/providers/HtmlAttributeValueCompletionProvider.spec.ts +38 -0
- package/src/completions/providers/HtmlAttributeValueCompletionProvider.ts +65 -0
- package/src/completions/providers/HtmlTagCompletionProvider.spec.ts +57 -0
- package/src/completions/providers/HtmlTagCompletionProvider.ts +119 -0
- package/src/completions/providers/LiquidDocParamTypeCompletionProvider.spec.ts +79 -0
- package/src/completions/providers/LiquidDocParamTypeCompletionProvider.ts +65 -0
- package/src/completions/providers/LiquidDocTagCompletionProvider.spec.ts +144 -0
- package/src/completions/providers/LiquidDocTagCompletionProvider.ts +74 -0
- package/src/completions/providers/LiquidTagsCompletionProvider.spec.ts +377 -0
- package/src/completions/providers/LiquidTagsCompletionProvider.ts +459 -0
- package/src/completions/providers/ObjectAttributeCompletionProvider.spec.ts +524 -0
- package/src/completions/providers/ObjectAttributeCompletionProvider.ts +95 -0
- package/src/completions/providers/ObjectCompletionProvider.spec.ts +232 -0
- package/src/completions/providers/ObjectCompletionProvider.ts +44 -0
- package/src/completions/providers/PartialCompletionProvider.spec.ts +107 -0
- package/src/completions/providers/PartialCompletionProvider.ts +50 -0
- package/src/completions/providers/RenderPartialParameterCompletionProvider.spec.ts +91 -0
- package/src/completions/providers/RenderPartialParameterCompletionProvider.ts +79 -0
- package/src/completions/providers/TranslationCompletionProvider.spec.ts +65 -0
- package/src/completions/providers/TranslationCompletionProvider.ts +103 -0
- package/src/completions/providers/common/CompletionItemProperties.ts +66 -0
- package/src/completions/providers/common/Provider.ts +6 -0
- package/src/completions/providers/common/index.ts +18 -0
- package/src/completions/providers/data/contentForParameterCompletionOptions.ts +9 -0
- package/src/completions/providers/index.ts +20 -0
- package/src/css/CSSLanguageService.spec.ts +161 -0
- package/src/css/CSSLanguageService.ts +113 -0
- package/src/css/test/test-helpers.ts +30 -0
- package/src/definitions/BaseDefinitionProvider.ts +10 -0
- package/src/definitions/DefinitionProvider.ts +48 -0
- package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.spec.ts +96 -0
- package/src/definitions/providers/SchemaTranslationStringDefinitionProvider.ts +82 -0
- package/src/definitions/providers/TranslationStringDefinitionProvider.spec.ts +77 -0
- package/src/definitions/providers/TranslationStringDefinitionProvider.ts +72 -0
- package/src/diagnostics/DiagnosticsManager.spec.ts +79 -0
- package/src/diagnostics/DiagnosticsManager.ts +58 -0
- package/src/diagnostics/index.ts +2 -0
- package/src/diagnostics/offenseToDiagnostic.ts +80 -0
- package/src/diagnostics/runChecks.spec.ts +285 -0
- package/src/diagnostics/runChecks.ts +147 -0
- package/src/docset/HtmlDocset.ts +43 -0
- package/src/docset/MarkdownRenderer.spec.ts +46 -0
- package/src/docset/MarkdownRenderer.ts +179 -0
- package/src/docset/index.ts +2 -0
- package/src/documentHighlights/BaseDocumentHighlightsProvider.ts +10 -0
- package/src/documentHighlights/DocumentHighlightsProvider.ts +54 -0
- package/src/documentHighlights/index.ts +1 -0
- package/src/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.spec.ts +94 -0
- package/src/documentHighlights/providers/HtmlTagNameDocumentHighlightsProvider.ts +22 -0
- package/src/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.spec.ts +188 -0
- package/src/documentHighlights/providers/LiquidBlockTagDocumentHighlightsProvider.ts +73 -0
- package/src/documentHighlights/providers/index.ts +2 -0
- package/src/documentLinks/DocumentLinksProvider.spec.ts +66 -0
- package/src/documentLinks/DocumentLinksProvider.ts +123 -0
- package/src/documentLinks/index.ts +1 -0
- package/src/documents/DocumentManager.spec.ts +276 -0
- package/src/documents/DocumentManager.ts +232 -0
- package/src/documents/index.ts +2 -0
- package/src/documents/types.ts +55 -0
- package/src/formatting/OnTypeFormattingProvider.spec.ts +74 -0
- package/src/formatting/OnTypeFormattingProvider.ts +26 -0
- package/src/formatting/index.ts +1 -0
- package/src/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.spec.ts +88 -0
- package/src/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.ts +114 -0
- package/src/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.spec.ts +183 -0
- package/src/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.ts +127 -0
- package/src/formatting/types.ts +12 -0
- package/src/hover/BaseHoverProvider.ts +10 -0
- package/src/hover/HoverProvider.ts +86 -0
- package/src/hover/index.ts +1 -0
- package/src/hover/providers/ContentForArgumentHoverProvider.spec.ts +76 -0
- package/src/hover/providers/ContentForArgumentHoverProvider.ts +56 -0
- package/src/hover/providers/ContentForTypeHoverProvider.spec.ts +91 -0
- package/src/hover/providers/ContentForTypeHoverProvider.ts +42 -0
- package/src/hover/providers/HtmlAttributeHoverProvider.spec.ts +50 -0
- package/src/hover/providers/HtmlAttributeHoverProvider.ts +48 -0
- package/src/hover/providers/HtmlAttributeValueHoverProvider.spec.ts +38 -0
- package/src/hover/providers/HtmlAttributeValueHoverProvider.ts +52 -0
- package/src/hover/providers/HtmlTagHoverProvider.spec.ts +39 -0
- package/src/hover/providers/HtmlTagHoverProvider.ts +42 -0
- package/src/hover/providers/LiquidDocTagHoverProvider.spec.ts +64 -0
- package/src/hover/providers/LiquidDocTagHoverProvider.ts +58 -0
- package/src/hover/providers/LiquidFilterArgumentHoverProvider.spec.ts +57 -0
- package/src/hover/providers/LiquidFilterArgumentHoverProvider.ts +42 -0
- package/src/hover/providers/LiquidFilterHoverProvider.spec.ts +50 -0
- package/src/hover/providers/LiquidFilterHoverProvider.ts +29 -0
- package/src/hover/providers/LiquidObjectAttributeHoverProvider.spec.ts +238 -0
- package/src/hover/providers/LiquidObjectAttributeHoverProvider.ts +156 -0
- package/src/hover/providers/LiquidObjectHoverProvider.spec.ts +278 -0
- package/src/hover/providers/LiquidObjectHoverProvider.ts +95 -0
- package/src/hover/providers/LiquidTagHoverProvider.spec.ts +51 -0
- package/src/hover/providers/LiquidTagHoverProvider.ts +33 -0
- package/src/hover/providers/RenderPartialHoverProvider.spec.ts +85 -0
- package/src/hover/providers/RenderPartialHoverProvider.ts +38 -0
- package/src/hover/providers/RenderPartialParameterHoverProvider.spec.ts +70 -0
- package/src/hover/providers/RenderPartialParameterHoverProvider.ts +47 -0
- package/src/hover/providers/TranslationHoverProvider.spec.ts +59 -0
- package/src/hover/providers/TranslationHoverProvider.ts +61 -0
- package/src/hover/providers/index.ts +11 -0
- package/src/index.spec.ts +8 -0
- package/src/index.ts +34 -0
- package/src/internal-types.ts +1 -0
- package/src/json/JSONContributions.ts +150 -0
- package/src/json/JSONLanguageService.spec.ts +424 -0
- package/src/json/JSONLanguageService.ts +239 -0
- package/src/json/RequestContext.ts +35 -0
- package/src/json/completions/JSONCompletionProvider.ts +33 -0
- package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.spec.ts +163 -0
- package/src/json/completions/providers/BlockSettingsPropertyCompletionProvider.ts +121 -0
- package/src/json/completions/providers/BlockTypeCompletionProvider.spec.ts +137 -0
- package/src/json/completions/providers/BlockTypeCompletionProvider.ts +108 -0
- package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.spec.ts +132 -0
- package/src/json/completions/providers/ReferencedBlockTypeCompletionProvider.ts +120 -0
- package/src/json/completions/providers/SchemaTranslationCompletionProvider.ts +51 -0
- package/src/json/completions/providers/SettingsPropertyCompletionProvider.spec.ts +211 -0
- package/src/json/completions/providers/SettingsPropertyCompletionProvider.ts +75 -0
- package/src/json/documentLinks/DocumentLinksProvider.spec.ts +223 -0
- package/src/json/documentLinks/DocumentLinksProvider.ts +61 -0
- package/src/json/hover/JSONHoverProvider.ts +8 -0
- package/src/json/hover/providers/BlockSettingsHoverProvider.spec.ts +292 -0
- package/src/json/hover/providers/BlockSettingsHoverProvider.ts +99 -0
- package/src/json/hover/providers/SchemaTranslationHoverProvider.ts +35 -0
- package/src/json/hover/providers/SettingsHoverProvider.spec.ts +139 -0
- package/src/json/hover/providers/SettingsHoverProvider.ts +79 -0
- package/src/json/hover/providers/TranslationPathHoverProvider.ts +71 -0
- package/src/json/schemaSettings.spec.ts +103 -0
- package/src/json/schemaSettings.ts +53 -0
- package/src/json/test/test-helpers.ts +68 -0
- package/src/json/utils.ts +30 -0
- package/src/linkedEditingRanges/BaseLinkedEditingRangesProvider.ts +10 -0
- package/src/linkedEditingRanges/LinkedEditingRangesProvider.ts +40 -0
- package/src/linkedEditingRanges/index.ts +1 -0
- package/src/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.spec.ts +74 -0
- package/src/linkedEditingRanges/providers/EmptyHtmlTagLinkedRangesProvider.ts +47 -0
- package/src/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.spec.ts +102 -0
- package/src/linkedEditingRanges/providers/HtmlTagNameLinkedRangesProvider.ts +28 -0
- package/src/linkedEditingRanges/providers/index.ts +2 -0
- package/src/linkedEditingRanges/wordPattern.ts +3 -0
- package/src/plugins/css.ts +12 -0
- package/src/progress.ts +83 -0
- package/src/rename/BaseRenameProvider.ts +21 -0
- package/src/rename/RenameProvider.ts +91 -0
- package/src/rename/providers/HtmlTagNameRenameProvider.spec.ts +84 -0
- package/src/rename/providers/HtmlTagNameRenameProvider.ts +59 -0
- package/src/rename/providers/LiquidVariableRenameProvider.spec.ts +511 -0
- package/src/rename/providers/LiquidVariableRenameProvider.ts +300 -0
- package/src/renamed/BaseRenameHandler.ts +5 -0
- package/src/renamed/RenameHandler.ts +45 -0
- package/src/renamed/handlers/AssetRenameHandler.spec.ts +217 -0
- package/src/renamed/handlers/AssetRenameHandler.ts +108 -0
- package/src/renamed/handlers/BlockRenameHandler.spec.ts +399 -0
- package/src/renamed/handlers/BlockRenameHandler.ts +402 -0
- package/src/renamed/handlers/PartialRenameHandler.spec.ts +153 -0
- package/src/renamed/handlers/PartialRenameHandler.ts +110 -0
- package/src/renamed/handlers/SectionRenameHandler.spec.ts +321 -0
- package/src/renamed/handlers/SectionRenameHandler.ts +224 -0
- package/src/renamed/handlers/utils.ts +22 -0
- package/src/server/CachedFileSystem.ts +39 -0
- package/src/server/Configuration.ts +89 -0
- package/src/server/ThemeGraphManager.ts +265 -0
- package/src/server/index.ts +1 -0
- package/src/server/safe.ts +30 -0
- package/src/server/startServer.spec.ts +423 -0
- package/src/server/startServer.ts +771 -0
- package/src/settings/index.ts +50 -0
- package/src/test/ApplyEditsAssertion.spec.ts +57 -0
- package/src/test/ApplyEditsAssertion.ts +34 -0
- package/src/test/CompletionItemsAssertion.spec.ts +48 -0
- package/src/test/CompletionItemsAssertion.ts +99 -0
- package/src/test/HoverAssertion.ts +84 -0
- package/src/test/MockChecks.ts +32 -0
- package/src/test/MockConnection.ts +158 -0
- package/src/test/test-setup.ts +6 -0
- package/src/translations.ts +83 -0
- package/src/types.ts +173 -0
- package/src/utils/array.ts +6 -0
- package/src/utils/debounce.ts +60 -0
- package/src/utils/htmlTagNames.ts +61 -0
- package/src/utils/index.ts +12 -0
- package/src/utils/isCovered.ts +3 -0
- package/src/utils/liquidDoc.spec.ts +167 -0
- package/src/utils/liquidDoc.ts +102 -0
- package/src/utils/node.ts +69 -0
- package/src/utils/uri.ts +22 -0
- package/src/version.ts +3 -0
- package/tsconfig.build.json +10 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This function wraps a function that might throw an error and handles it by
|
|
3
|
+
* returning the default value instead.
|
|
4
|
+
*
|
|
5
|
+
* There are cases, such as fs.readDirectory, that might throw an error if the
|
|
6
|
+
* directory doesn't exist. Since there _is_ a difference between a directory that
|
|
7
|
+
* doesn't exist and a directory that is empty, we don't want to change the API
|
|
8
|
+
* of fs.readDirectory either.
|
|
9
|
+
*
|
|
10
|
+
* In such cases, we can use this helper to wrap the function and gracefully handle
|
|
11
|
+
* the error by returning a default value instead.
|
|
12
|
+
*
|
|
13
|
+
* @param fn
|
|
14
|
+
* @param defaultReturnValue
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const getThemeBlockNames = safe(async function () { ... }, []);
|
|
18
|
+
*/
|
|
19
|
+
export declare const safe: <T extends (...args: any[]) => Promise<any>>(fn: T, defaultReturnValue: Awaited<ReturnType<T>>) => (...args: Parameters<T>) => Promise<Awaited<ReturnType<T>>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.safe = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* This function wraps a function that might throw an error and handles it by
|
|
6
|
+
* returning the default value instead.
|
|
7
|
+
*
|
|
8
|
+
* There are cases, such as fs.readDirectory, that might throw an error if the
|
|
9
|
+
* directory doesn't exist. Since there _is_ a difference between a directory that
|
|
10
|
+
* doesn't exist and a directory that is empty, we don't want to change the API
|
|
11
|
+
* of fs.readDirectory either.
|
|
12
|
+
*
|
|
13
|
+
* In such cases, we can use this helper to wrap the function and gracefully handle
|
|
14
|
+
* the error by returning a default value instead.
|
|
15
|
+
*
|
|
16
|
+
* @param fn
|
|
17
|
+
* @param defaultReturnValue
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const getThemeBlockNames = safe(async function () { ... }, []);
|
|
21
|
+
*/
|
|
22
|
+
const safe = (fn, defaultReturnValue) => {
|
|
23
|
+
return async function safeFn(...args) {
|
|
24
|
+
try {
|
|
25
|
+
return await fn(...args);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
return defaultReturnValue;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
exports.safe = safe;
|
|
33
|
+
//# sourceMappingURL=safe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe.js","sourceRoot":"","sources":["../../src/server/safe.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;GAiBG;AACI,MAAM,IAAI,GAAG,CAClB,EAAK,EACL,kBAA0C,EAC1C,EAAE;IACF,OAAO,KAAK,UAAU,MAAM,CAAC,GAAG,IAAmB;QACjD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,kBAAkB,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,IAAI,QAWf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Connection } from 'vscode-languageserver';
|
|
2
|
+
import { Dependencies } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* This code runs in node and the browser, it can't talk to the file system
|
|
5
|
+
* or make requests. Stuff like that should be injected.
|
|
6
|
+
*
|
|
7
|
+
* In browser, theme-check-js wants these things:
|
|
8
|
+
* - fileExists(path)
|
|
9
|
+
* - defaultTranslations
|
|
10
|
+
*
|
|
11
|
+
* Which means we gotta provide 'em from here too!
|
|
12
|
+
*/
|
|
13
|
+
export declare function startServer(connection: Connection, { fs: injectedFs, loadConfig: injectedLoadConfig, log, jsonValidationSet, themeDocset: remoteThemeDocset, fetchMetafieldDefinitionsForURI, }: Dependencies): void;
|
|
@@ -0,0 +1,598 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startServer = startServer;
|
|
4
|
+
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
5
|
+
const platformos_common_1 = require("@platformos/platformos-common");
|
|
6
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
7
|
+
const ClientCapabilities_1 = require("../ClientCapabilities");
|
|
8
|
+
const codeActions_1 = require("../codeActions");
|
|
9
|
+
const commands_1 = require("../commands");
|
|
10
|
+
const completions_1 = require("../completions");
|
|
11
|
+
const CSSLanguageService_1 = require("../css/CSSLanguageService");
|
|
12
|
+
const DefinitionProvider_1 = require("../definitions/DefinitionProvider");
|
|
13
|
+
const diagnostics_1 = require("../diagnostics");
|
|
14
|
+
const DocumentHighlightsProvider_1 = require("../documentHighlights/DocumentHighlightsProvider");
|
|
15
|
+
const documentLinks_1 = require("../documentLinks");
|
|
16
|
+
const documents_1 = require("../documents");
|
|
17
|
+
const formatting_1 = require("../formatting");
|
|
18
|
+
const hover_1 = require("../hover");
|
|
19
|
+
const JSONLanguageService_1 = require("../json/JSONLanguageService");
|
|
20
|
+
const LinkedEditingRangesProvider_1 = require("../linkedEditingRanges/LinkedEditingRangesProvider");
|
|
21
|
+
const RenameProvider_1 = require("../rename/RenameProvider");
|
|
22
|
+
const RenameHandler_1 = require("../renamed/RenameHandler");
|
|
23
|
+
const types_1 = require("../types");
|
|
24
|
+
const utils_1 = require("../utils");
|
|
25
|
+
const version_1 = require("../version");
|
|
26
|
+
const CachedFileSystem_1 = require("./CachedFileSystem");
|
|
27
|
+
const Configuration_1 = require("./Configuration");
|
|
28
|
+
const safe_1 = require("./safe");
|
|
29
|
+
const ThemeGraphManager_1 = require("./ThemeGraphManager");
|
|
30
|
+
const platformos_common_2 = require("@platformos/platformos-common");
|
|
31
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
32
|
+
const defaultLogger = () => { };
|
|
33
|
+
/**
|
|
34
|
+
* The `git:` VFS does not support the `fs.readDirectory` call and makes most things break.
|
|
35
|
+
* `git` URIs are the ones you'd encounter when doing a git diff in VS Code. They're not
|
|
36
|
+
* real files, they're just a way to represent changes in a git repository. As such, I don't
|
|
37
|
+
* think we want to sync those in our document manager or try to offer document links, etc.
|
|
38
|
+
*
|
|
39
|
+
* A middleware would be nice but it'd be a bit of a pain to implement.
|
|
40
|
+
*/
|
|
41
|
+
const hasUnsupportedDocument = (params) => {
|
|
42
|
+
return ('textDocument' in params &&
|
|
43
|
+
'uri' in params.textDocument &&
|
|
44
|
+
typeof params.textDocument.uri === 'string' &&
|
|
45
|
+
(params.textDocument.uri.startsWith('git:') || params.textDocument.uri.startsWith('output:')));
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* This code runs in node and the browser, it can't talk to the file system
|
|
49
|
+
* or make requests. Stuff like that should be injected.
|
|
50
|
+
*
|
|
51
|
+
* In browser, theme-check-js wants these things:
|
|
52
|
+
* - fileExists(path)
|
|
53
|
+
* - defaultTranslations
|
|
54
|
+
*
|
|
55
|
+
* Which means we gotta provide 'em from here too!
|
|
56
|
+
*/
|
|
57
|
+
function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfig, log = defaultLogger, jsonValidationSet, themeDocset: remoteThemeDocset, fetchMetafieldDefinitionsForURI, }) {
|
|
58
|
+
const fs = new CachedFileSystem_1.CachedFileSystem(injectedFs);
|
|
59
|
+
const fileExists = (0, platformos_check_common_1.makeFileExists)(fs);
|
|
60
|
+
const loadConfig = (0, platformos_check_common_1.memoize)(injectedLoadConfig, (uri) => uri);
|
|
61
|
+
const clientCapabilities = new ClientCapabilities_1.ClientCapabilities();
|
|
62
|
+
const configuration = new Configuration_1.Configuration(connection, clientCapabilities);
|
|
63
|
+
const documentManager = new documents_1.DocumentManager(fs, connection, clientCapabilities, getModeForURI, isValidSchema);
|
|
64
|
+
const themeGraphManager = new ThemeGraphManager_1.ThemeGraphManager(connection, documentManager, fs, findThemeRootURI);
|
|
65
|
+
const diagnosticsManager = new diagnostics_1.DiagnosticsManager(connection);
|
|
66
|
+
const documentsLocator = new platformos_common_2.DocumentsLocator(fs);
|
|
67
|
+
const translationProvider = new platformos_common_1.TranslationProvider(fs);
|
|
68
|
+
const documentLinksProvider = new documentLinks_1.DocumentLinksProvider(documentManager, findThemeRootURI, documentsLocator, translationProvider);
|
|
69
|
+
const codeActionsProvider = new codeActions_1.CodeActionsProvider(documentManager, diagnosticsManager);
|
|
70
|
+
const onTypeFormattingProvider = new formatting_1.OnTypeFormattingProvider(documentManager, async function setCursorPosition(textDocument, position) {
|
|
71
|
+
if (!clientCapabilities.hasShowDocumentSupport)
|
|
72
|
+
return;
|
|
73
|
+
connection.sendRequest(vscode_languageserver_1.ShowDocumentRequest.type, {
|
|
74
|
+
uri: textDocument.uri,
|
|
75
|
+
takeFocus: true,
|
|
76
|
+
selection: {
|
|
77
|
+
start: position,
|
|
78
|
+
end: position,
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
const linkedEditingRangesProvider = new LinkedEditingRangesProvider_1.LinkedEditingRangesProvider(documentManager);
|
|
83
|
+
const documentHighlightProvider = new DocumentHighlightsProvider_1.DocumentHighlightsProvider(documentManager);
|
|
84
|
+
const renameProvider = new RenameProvider_1.RenameProvider(connection, clientCapabilities, documentManager, findThemeRootURI);
|
|
85
|
+
const renameHandler = new RenameHandler_1.RenameHandler(connection, clientCapabilities, documentManager, findThemeRootURI);
|
|
86
|
+
async function findThemeRootURI(uri) {
|
|
87
|
+
const rootUri = await (0, platformos_check_common_1.findRoot)(uri, fileExists);
|
|
88
|
+
if (!rootUri)
|
|
89
|
+
return null;
|
|
90
|
+
const config = await loadConfig(rootUri, fs);
|
|
91
|
+
return config.rootUri;
|
|
92
|
+
}
|
|
93
|
+
const getMetafieldDefinitionsForRootUri = (0, platformos_check_common_1.memoize)((0, platformos_check_common_1.makeGetMetafieldDefinitions)(fs), (rootUri) => rootUri);
|
|
94
|
+
const getMetafieldDefinitions = async (uri) => {
|
|
95
|
+
const rootUri = await findThemeRootURI(uri);
|
|
96
|
+
if (!rootUri) {
|
|
97
|
+
return {};
|
|
98
|
+
}
|
|
99
|
+
return getMetafieldDefinitionsForRootUri(rootUri);
|
|
100
|
+
};
|
|
101
|
+
// These are augmented here so that the caching is maintained over different runs.
|
|
102
|
+
const themeDocset = new platformos_check_common_1.AugmentedThemeDocset(remoteThemeDocset);
|
|
103
|
+
const cssLanguageService = new CSSLanguageService_1.CSSLanguageService(documentManager);
|
|
104
|
+
const runChecks = (0, utils_1.debounce)((0, diagnostics_1.makeRunChecks)(documentManager, diagnosticsManager, {
|
|
105
|
+
fs,
|
|
106
|
+
loadConfig,
|
|
107
|
+
themeDocset,
|
|
108
|
+
jsonValidationSet,
|
|
109
|
+
getMetafieldDefinitions,
|
|
110
|
+
cssLanguageService,
|
|
111
|
+
themeGraphManager,
|
|
112
|
+
}), 100);
|
|
113
|
+
const getTranslationsForURI = async (uri) => {
|
|
114
|
+
const rootURI = await findThemeRootURI(uri);
|
|
115
|
+
if (!rootURI)
|
|
116
|
+
return {};
|
|
117
|
+
const theme = documentManager.theme(rootURI);
|
|
118
|
+
const getDefaultTranslations = (0, platformos_check_common_1.makeGetDefaultTranslations)(fs, theme, rootURI);
|
|
119
|
+
const [defaultTranslations, shopifyTranslations] = await Promise.all([
|
|
120
|
+
getDefaultTranslations(),
|
|
121
|
+
themeDocset.systemTranslations(),
|
|
122
|
+
]);
|
|
123
|
+
return { ...shopifyTranslations, ...defaultTranslations };
|
|
124
|
+
};
|
|
125
|
+
const getSchemaTranslationsForURI = async (uri) => {
|
|
126
|
+
const rootURI = await findThemeRootURI(uri);
|
|
127
|
+
if (!rootURI)
|
|
128
|
+
return {};
|
|
129
|
+
const theme = documentManager.theme(rootURI);
|
|
130
|
+
const getDefaultSchemaTranslations = (0, platformos_check_common_1.makeGetDefaultSchemaTranslations)(fs, theme, rootURI);
|
|
131
|
+
return getDefaultSchemaTranslations();
|
|
132
|
+
};
|
|
133
|
+
const getDocDefinitionForURI = async (uri, category, name) => {
|
|
134
|
+
const rootUri = await findThemeRootURI(uri);
|
|
135
|
+
if (!rootUri)
|
|
136
|
+
return undefined;
|
|
137
|
+
const fileUri = platformos_check_common_1.path.join(rootUri, category, `${name}.liquid`);
|
|
138
|
+
const file = documentManager.get(fileUri);
|
|
139
|
+
if (!file || file.type !== platformos_check_common_1.SourceCodeType.LiquidHtml || (0, platformos_check_common_1.isError)(file.ast)) {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
return file.getLiquidDoc();
|
|
143
|
+
};
|
|
144
|
+
const getPartialNamesForURI = (0, safe_1.safe)(async (uri, partial, type) => {
|
|
145
|
+
const rootUri = await findThemeRootURI(uri);
|
|
146
|
+
if (!rootUri)
|
|
147
|
+
return [];
|
|
148
|
+
return await documentsLocator.list(vscode_uri_1.URI.parse(rootUri), type, partial);
|
|
149
|
+
}, []);
|
|
150
|
+
const getThemeSettingsSchemaForURI = (0, safe_1.safe)(async (uri) => {
|
|
151
|
+
const rootUri = await findThemeRootURI(uri);
|
|
152
|
+
if (!rootUri)
|
|
153
|
+
return [];
|
|
154
|
+
const settingsSchemaUri = platformos_check_common_1.path.join(rootUri, 'config', 'settings_schema.json');
|
|
155
|
+
const contents = await fs.readFile(settingsSchemaUri);
|
|
156
|
+
const json = (0, platformos_check_common_1.parseJSON)(contents);
|
|
157
|
+
if ((0, platformos_check_common_1.isError)(json) || !Array.isArray(json)) {
|
|
158
|
+
throw new Error('Settings JSON file not in correct format');
|
|
159
|
+
}
|
|
160
|
+
return json;
|
|
161
|
+
}, []);
|
|
162
|
+
async function getModeForURI(uri) {
|
|
163
|
+
const rootUri = await (0, platformos_check_common_1.findRoot)(uri, fileExists);
|
|
164
|
+
if (!rootUri)
|
|
165
|
+
return 'theme';
|
|
166
|
+
const config = await loadConfig(rootUri, fs);
|
|
167
|
+
return config.context;
|
|
168
|
+
}
|
|
169
|
+
const getThemeBlockNames = (0, safe_1.safe)(async (uri, includePrivate) => {
|
|
170
|
+
const rootUri = await findThemeRootURI(uri);
|
|
171
|
+
if (!rootUri)
|
|
172
|
+
return [];
|
|
173
|
+
const blocks = await fs.readDirectory(platformos_check_common_1.path.join(rootUri, 'blocks'));
|
|
174
|
+
const blockNames = blocks.map(([uri]) => platformos_check_common_1.path.basename(uri, '.liquid'));
|
|
175
|
+
if (includePrivate) {
|
|
176
|
+
return blockNames;
|
|
177
|
+
}
|
|
178
|
+
return blockNames.filter((blockName) => !blockName.startsWith('_'));
|
|
179
|
+
}, []);
|
|
180
|
+
async function getThemeBlockSchema(uri, name) {
|
|
181
|
+
const rootUri = await findThemeRootURI(uri);
|
|
182
|
+
if (!rootUri)
|
|
183
|
+
return;
|
|
184
|
+
const blockUri = platformos_check_common_1.path.join(rootUri, 'blocks', `${name}.liquid`);
|
|
185
|
+
const doc = documentManager.get(blockUri);
|
|
186
|
+
if (!doc || doc.type !== platformos_check_common_1.SourceCodeType.LiquidHtml) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
return doc.getSchema();
|
|
190
|
+
}
|
|
191
|
+
// Defined as a function to solve a circular dependency (doc manager & json
|
|
192
|
+
// lang service both need each other)
|
|
193
|
+
async function isValidSchema(uri, jsonString) {
|
|
194
|
+
return jsonLanguageService.isValidSchema(uri, jsonString);
|
|
195
|
+
}
|
|
196
|
+
const getDefaultLocaleFileUri = (0, platformos_check_common_1.makeGetDefaultLocaleFileUri)(fs);
|
|
197
|
+
async function getDefaultLocaleSourceCode(uri) {
|
|
198
|
+
const rootUri = await findThemeRootURI(uri);
|
|
199
|
+
if (!rootUri)
|
|
200
|
+
return null;
|
|
201
|
+
const defaultLocaleFileUri = await getDefaultLocaleFileUri(rootUri);
|
|
202
|
+
if (!defaultLocaleFileUri)
|
|
203
|
+
return null;
|
|
204
|
+
return documentManager.get(defaultLocaleFileUri) ?? null;
|
|
205
|
+
}
|
|
206
|
+
const getDefaultSchemaLocaleFileUri = (0, platformos_check_common_1.makeGetDefaultSchemaLocaleFileUri)(fs);
|
|
207
|
+
async function getDefaultSchemaLocaleSourceCode(uri) {
|
|
208
|
+
const rootUri = await findThemeRootURI(uri);
|
|
209
|
+
if (!rootUri)
|
|
210
|
+
return null;
|
|
211
|
+
const defaultLocaleFileUri = await getDefaultSchemaLocaleFileUri(rootUri);
|
|
212
|
+
if (!defaultLocaleFileUri)
|
|
213
|
+
return null;
|
|
214
|
+
return documentManager.get(defaultLocaleFileUri) ?? null;
|
|
215
|
+
}
|
|
216
|
+
const definitionsProvider = new DefinitionProvider_1.DefinitionProvider(documentManager, getDefaultLocaleSourceCode, getDefaultSchemaLocaleSourceCode);
|
|
217
|
+
const jsonLanguageService = new JSONLanguageService_1.JSONLanguageService(documentManager, jsonValidationSet, getSchemaTranslationsForURI, getModeForURI, getThemeBlockNames, getThemeBlockSchema, findThemeRootURI);
|
|
218
|
+
const completionsProvider = new completions_1.CompletionsProvider({
|
|
219
|
+
documentManager,
|
|
220
|
+
themeDocset,
|
|
221
|
+
getTranslationsForURI,
|
|
222
|
+
getPartialNamesForURI,
|
|
223
|
+
getThemeSettingsSchemaForURI,
|
|
224
|
+
log,
|
|
225
|
+
getThemeBlockNames,
|
|
226
|
+
getMetafieldDefinitions,
|
|
227
|
+
getDocDefinitionForURI,
|
|
228
|
+
fs,
|
|
229
|
+
documentsLocator,
|
|
230
|
+
findThemeRootURI,
|
|
231
|
+
notifyUnableToInferProperties: (variableName) => {
|
|
232
|
+
connection.window.showInformationMessage(`Unable to infer properties for '${variableName}'. Property completion is only supported for variables from parse_json, to_hash, or graphql.`);
|
|
233
|
+
},
|
|
234
|
+
});
|
|
235
|
+
const hoverProvider = new hover_1.HoverProvider(documentManager, themeDocset, translationProvider, getMetafieldDefinitions, getTranslationsForURI, getThemeSettingsSchemaForURI, getDocDefinitionForURI, findThemeRootURI);
|
|
236
|
+
const executeCommandProvider = new commands_1.ExecuteCommandProvider(documentManager, diagnosticsManager, clientCapabilities, runChecks, connection);
|
|
237
|
+
const fetchMetafieldDefinitionsForWorkspaceFolders = async (folders) => {
|
|
238
|
+
if (!fetchMetafieldDefinitionsForURI)
|
|
239
|
+
return;
|
|
240
|
+
for (let folder of folders) {
|
|
241
|
+
const mode = await getModeForURI(folder.uri);
|
|
242
|
+
if (mode === 'theme') {
|
|
243
|
+
fetchMetafieldDefinitionsForURI(folder.uri);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
connection.onInitialize((params) => {
|
|
248
|
+
clientCapabilities.setup(params.capabilities, params.initializationOptions);
|
|
249
|
+
cssLanguageService.setup(params.capabilities);
|
|
250
|
+
jsonLanguageService.setup(params.capabilities);
|
|
251
|
+
configuration.setup();
|
|
252
|
+
const fileOperationRegistrationOptions = {
|
|
253
|
+
filters: [
|
|
254
|
+
{
|
|
255
|
+
pattern: {
|
|
256
|
+
glob: '**/*.{liquid,json,graphql}',
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
pattern: {
|
|
261
|
+
glob: '**/assets/*',
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
],
|
|
265
|
+
};
|
|
266
|
+
const result = {
|
|
267
|
+
capabilities: {
|
|
268
|
+
textDocumentSync: {
|
|
269
|
+
change: vscode_languageserver_1.TextDocumentSyncKind.Full,
|
|
270
|
+
save: true,
|
|
271
|
+
openClose: true,
|
|
272
|
+
},
|
|
273
|
+
codeActionProvider: {
|
|
274
|
+
codeActionKinds: [...codeActions_1.CodeActionKinds],
|
|
275
|
+
},
|
|
276
|
+
completionProvider: {
|
|
277
|
+
triggerCharacters: ['.', '{{ ', '{% ', '<', '/', '[', '"', "'", ':', '@'],
|
|
278
|
+
},
|
|
279
|
+
definitionProvider: true,
|
|
280
|
+
documentOnTypeFormattingProvider: {
|
|
281
|
+
firstTriggerCharacter: ' ',
|
|
282
|
+
moreTriggerCharacter: ['{', '%', '-', '>'],
|
|
283
|
+
},
|
|
284
|
+
documentLinkProvider: {
|
|
285
|
+
resolveProvider: false,
|
|
286
|
+
workDoneProgress: false,
|
|
287
|
+
},
|
|
288
|
+
documentHighlightProvider: true,
|
|
289
|
+
linkedEditingRangeProvider: true,
|
|
290
|
+
renameProvider: {
|
|
291
|
+
prepareProvider: true,
|
|
292
|
+
},
|
|
293
|
+
executeCommandProvider: {
|
|
294
|
+
commands: [...commands_1.Commands],
|
|
295
|
+
},
|
|
296
|
+
hoverProvider: {
|
|
297
|
+
workDoneProgress: false,
|
|
298
|
+
},
|
|
299
|
+
workspace: {
|
|
300
|
+
workspaceFolders: {
|
|
301
|
+
supported: true,
|
|
302
|
+
changeNotifications: true,
|
|
303
|
+
},
|
|
304
|
+
fileOperations: {
|
|
305
|
+
didRename: fileOperationRegistrationOptions,
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
serverInfo: {
|
|
310
|
+
name: 'theme-language-server',
|
|
311
|
+
version: version_1.VERSION,
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
return result;
|
|
315
|
+
});
|
|
316
|
+
connection.onInitialized(() => {
|
|
317
|
+
log(`[SERVER] Let's roll!`);
|
|
318
|
+
configuration.fetchConfiguration();
|
|
319
|
+
configuration.registerDidChangeCapability();
|
|
320
|
+
configuration.registerDidChangeWatchedFilesNotification({
|
|
321
|
+
watchers: [
|
|
322
|
+
{
|
|
323
|
+
globPattern: '**/*.liquid',
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
globPattern: '**/translations/**/*.yml',
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
globPattern: '**/*.graphql',
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
});
|
|
333
|
+
if (clientCapabilities.hasWorkspaceFoldersSupport) {
|
|
334
|
+
connection.workspace.getWorkspaceFolders().then(async (folders) => {
|
|
335
|
+
if (!folders)
|
|
336
|
+
return;
|
|
337
|
+
fetchMetafieldDefinitionsForWorkspaceFolders(folders);
|
|
338
|
+
});
|
|
339
|
+
connection.workspace.onDidChangeWorkspaceFolders(async (params) => {
|
|
340
|
+
fetchMetafieldDefinitionsForWorkspaceFolders(params.added);
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
connection.onDidChangeConfiguration((_params) => {
|
|
345
|
+
configuration.clearCache();
|
|
346
|
+
});
|
|
347
|
+
connection.onDidOpenTextDocument(async (params) => {
|
|
348
|
+
if (hasUnsupportedDocument(params))
|
|
349
|
+
return;
|
|
350
|
+
const { uri, text, version } = params.textDocument;
|
|
351
|
+
documentManager.open(uri, text, version);
|
|
352
|
+
if (await configuration.shouldCheckOnOpen()) {
|
|
353
|
+
runChecks([uri]);
|
|
354
|
+
}
|
|
355
|
+
// The objective at the time of writing this is to make {Asset,Snippet}Rename
|
|
356
|
+
// fast when you eventually need it.
|
|
357
|
+
//
|
|
358
|
+
// I'm choosing the textDocument/didOpen notification as a hook because
|
|
359
|
+
// I'm not sure we have a better solution than this. Yes we have the
|
|
360
|
+
// initialize request with the workspace folders, but you might have opened
|
|
361
|
+
// an app folder. The root of a theme app extension would probably be
|
|
362
|
+
// at ${workspaceRoot}/extensions/${appExtensionName}. It'd be hard to
|
|
363
|
+
// figure out from the initialize request params.
|
|
364
|
+
//
|
|
365
|
+
// If we open a file that we know is liquid, then we can kind of guarantee
|
|
366
|
+
// we'll find a theme root and we'll preload that.
|
|
367
|
+
if (await configuration.shouldPreloadOnBoot()) {
|
|
368
|
+
const rootUri = await findThemeRootURI(uri);
|
|
369
|
+
if (rootUri) {
|
|
370
|
+
documentManager.preload(rootUri);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
connection.onDidChangeTextDocument(async (params) => {
|
|
375
|
+
if (hasUnsupportedDocument(params))
|
|
376
|
+
return;
|
|
377
|
+
const { uri, version } = params.textDocument;
|
|
378
|
+
documentManager.change(uri, params.contentChanges[0].text, version);
|
|
379
|
+
if (await configuration.shouldCheckOnChange()) {
|
|
380
|
+
runChecks([uri]);
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
// The diagnostics may be stale! Clear em!
|
|
384
|
+
diagnosticsManager.clear(params.textDocument.uri);
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
connection.onDidSaveTextDocument(async (params) => {
|
|
388
|
+
if (hasUnsupportedDocument(params))
|
|
389
|
+
return;
|
|
390
|
+
const { uri } = params.textDocument;
|
|
391
|
+
if (await configuration.shouldCheckOnSave()) {
|
|
392
|
+
runChecks([uri]);
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
connection.onDidCloseTextDocument((params) => {
|
|
396
|
+
if (hasUnsupportedDocument(params))
|
|
397
|
+
return;
|
|
398
|
+
const { uri } = params.textDocument;
|
|
399
|
+
documentManager.close(uri);
|
|
400
|
+
diagnosticsManager.clear(uri);
|
|
401
|
+
});
|
|
402
|
+
connection.onDocumentLinks(async (params) => {
|
|
403
|
+
if (hasUnsupportedDocument(params))
|
|
404
|
+
return [];
|
|
405
|
+
const [liquidLinks, jsonLinks] = await Promise.all([
|
|
406
|
+
documentLinksProvider.documentLinks(params.textDocument.uri),
|
|
407
|
+
jsonLanguageService.documentLinks(params),
|
|
408
|
+
]);
|
|
409
|
+
return [...liquidLinks, ...jsonLinks];
|
|
410
|
+
});
|
|
411
|
+
connection.onDefinition(async (params) => {
|
|
412
|
+
if (hasUnsupportedDocument(params))
|
|
413
|
+
return [];
|
|
414
|
+
return definitionsProvider.definitions(params);
|
|
415
|
+
});
|
|
416
|
+
connection.onCodeAction(async (params) => {
|
|
417
|
+
return codeActionsProvider.codeActions(params);
|
|
418
|
+
});
|
|
419
|
+
connection.onExecuteCommand(async (params) => {
|
|
420
|
+
await executeCommandProvider.execute(params);
|
|
421
|
+
});
|
|
422
|
+
connection.onCompletion(async (params) => {
|
|
423
|
+
if (hasUnsupportedDocument(params))
|
|
424
|
+
return [];
|
|
425
|
+
return ((await cssLanguageService.completions(params)) ??
|
|
426
|
+
(await jsonLanguageService.completions(params)) ??
|
|
427
|
+
(await completionsProvider.completions(params)));
|
|
428
|
+
});
|
|
429
|
+
connection.onHover(async (params) => {
|
|
430
|
+
if (hasUnsupportedDocument(params))
|
|
431
|
+
return null;
|
|
432
|
+
return ((await cssLanguageService.hover(params)) ??
|
|
433
|
+
(await jsonLanguageService.hover(params)) ??
|
|
434
|
+
(await hoverProvider.hover(params)));
|
|
435
|
+
});
|
|
436
|
+
connection.onDocumentOnTypeFormatting(async (params) => {
|
|
437
|
+
if (hasUnsupportedDocument(params))
|
|
438
|
+
return null;
|
|
439
|
+
return onTypeFormattingProvider.onTypeFormatting(params);
|
|
440
|
+
});
|
|
441
|
+
connection.onDocumentHighlight(async (params) => {
|
|
442
|
+
if (hasUnsupportedDocument(params))
|
|
443
|
+
return [];
|
|
444
|
+
return documentHighlightProvider.documentHighlights(params);
|
|
445
|
+
});
|
|
446
|
+
connection.onPrepareRename(async (params) => {
|
|
447
|
+
if (hasUnsupportedDocument(params))
|
|
448
|
+
return null;
|
|
449
|
+
return renameProvider.prepare(params);
|
|
450
|
+
});
|
|
451
|
+
connection.onRenameRequest(async (params) => {
|
|
452
|
+
if (hasUnsupportedDocument(params))
|
|
453
|
+
return null;
|
|
454
|
+
return renameProvider.rename(params);
|
|
455
|
+
});
|
|
456
|
+
connection.languages.onLinkedEditingRange(async (params) => {
|
|
457
|
+
if (hasUnsupportedDocument(params))
|
|
458
|
+
return null;
|
|
459
|
+
return linkedEditingRangesProvider.linkedEditingRanges(params);
|
|
460
|
+
});
|
|
461
|
+
connection.workspace.onDidRenameFiles(async (params) => {
|
|
462
|
+
const triggerUris = params.files.map((fileRename) => fileRename.newUri);
|
|
463
|
+
// Behold the cache invalidation monster
|
|
464
|
+
for (const { oldUri, newUri } of params.files) {
|
|
465
|
+
// When a file is renamed, we paste the content of the old file into the
|
|
466
|
+
// new file in the document manager. We don't need to invalidate preload
|
|
467
|
+
// because that's the only thing that changed.
|
|
468
|
+
documentManager.rename(oldUri, newUri);
|
|
469
|
+
// When a file is renamed, readDirectory to the parent folder is invalidated.
|
|
470
|
+
fs.readDirectory.invalidate(platformos_check_common_1.path.dirname(oldUri));
|
|
471
|
+
fs.readDirectory.invalidate(platformos_check_common_1.path.dirname(newUri));
|
|
472
|
+
// When a file is renamed, readFile and stat for both the old and new URIs are invalidated.
|
|
473
|
+
fs.readFile.invalidate(oldUri);
|
|
474
|
+
fs.readFile.invalidate(newUri);
|
|
475
|
+
fs.stat.invalidate(oldUri);
|
|
476
|
+
fs.stat.invalidate(newUri);
|
|
477
|
+
themeGraphManager.rename(oldUri, newUri);
|
|
478
|
+
}
|
|
479
|
+
// We should complete refactors before running theme check
|
|
480
|
+
await renameHandler.onDidRenameFiles(params);
|
|
481
|
+
// MissingAssets/MissingSnippet should be rerun when a file is deleted
|
|
482
|
+
// since the file rename might cause an error.
|
|
483
|
+
runChecks.force(triggerUris);
|
|
484
|
+
});
|
|
485
|
+
/**
|
|
486
|
+
* onDidChangeWatchedFiles is triggered by file operations (in or out of the editor).
|
|
487
|
+
*
|
|
488
|
+
* For in-editor changes, happens redundantly with
|
|
489
|
+
* - onDidCreateFiles
|
|
490
|
+
* - onDidRenameFiles
|
|
491
|
+
* - onDidDeleteFiles
|
|
492
|
+
* - onDidSaveTextDocument
|
|
493
|
+
*
|
|
494
|
+
* Not redundant for operations that happen outside of the editor
|
|
495
|
+
* - git pull, checkout, reset, stash pop, etc.
|
|
496
|
+
* - shopify theme metafields pull
|
|
497
|
+
* - etc.
|
|
498
|
+
*
|
|
499
|
+
* It always runs and onDid* will never fire without a corresponding onDidChangeWatchedFiles.
|
|
500
|
+
*
|
|
501
|
+
* This is why the bulk of the cache invalidation logic is in this handler.
|
|
502
|
+
*/
|
|
503
|
+
connection.onDidChangeWatchedFiles(async (params) => {
|
|
504
|
+
if (params.changes.length === 0)
|
|
505
|
+
return;
|
|
506
|
+
const triggerUris = params.changes.map((change) => change.uri);
|
|
507
|
+
const updates = [];
|
|
508
|
+
for (const change of params.changes) {
|
|
509
|
+
// Theme Check config changes should clear the config cache
|
|
510
|
+
if (change.uri.endsWith('.theme-check.yml')) {
|
|
511
|
+
loadConfig.clearCache();
|
|
512
|
+
continue;
|
|
513
|
+
}
|
|
514
|
+
// Rename cache invalidation is handled by onDidRenameFiles
|
|
515
|
+
if (documentManager.hasRecentRename(change.uri)) {
|
|
516
|
+
documentManager.clearRecentRename(change.uri);
|
|
517
|
+
continue;
|
|
518
|
+
}
|
|
519
|
+
switch (change.type) {
|
|
520
|
+
case vscode_languageserver_1.FileChangeType.Created:
|
|
521
|
+
// A created file invalidates readDirectory, readFile and stat
|
|
522
|
+
fs.readDirectory.invalidate(platformos_check_common_1.path.dirname(change.uri));
|
|
523
|
+
fs.readFile.invalidate(change.uri);
|
|
524
|
+
fs.stat.invalidate(change.uri);
|
|
525
|
+
themeGraphManager.create(change.uri);
|
|
526
|
+
// If a file is created under out feet, we update its contents.
|
|
527
|
+
updates.push(documentManager.changeFromDisk(change.uri));
|
|
528
|
+
break;
|
|
529
|
+
case vscode_languageserver_1.FileChangeType.Changed:
|
|
530
|
+
// A changed file invalidates readFile and stat (but not readDirectory)
|
|
531
|
+
fs.readFile.invalidate(change.uri);
|
|
532
|
+
fs.stat.invalidate(change.uri);
|
|
533
|
+
themeGraphManager.change(change.uri);
|
|
534
|
+
// If the file is not open, we update its contents in the doc manager
|
|
535
|
+
// If it is open, then we don't need to update it because the document manager
|
|
536
|
+
// will have the version from the editor.
|
|
537
|
+
if (documentManager.get(change.uri)?.version === undefined) {
|
|
538
|
+
updates.push(documentManager.changeFromDisk(change.uri));
|
|
539
|
+
}
|
|
540
|
+
break;
|
|
541
|
+
case vscode_languageserver_1.FileChangeType.Deleted:
|
|
542
|
+
// A deleted file invalides readDirectory, readFile, and stat
|
|
543
|
+
fs.readDirectory.invalidate(platformos_check_common_1.path.dirname(change.uri));
|
|
544
|
+
fs.readFile.invalidate(change.uri);
|
|
545
|
+
fs.stat.invalidate(change.uri);
|
|
546
|
+
themeGraphManager.delete(change.uri);
|
|
547
|
+
// If a file is deleted, it's removed from the document manager
|
|
548
|
+
documentManager.delete(change.uri);
|
|
549
|
+
break;
|
|
550
|
+
}
|
|
551
|
+
if (change.uri.endsWith('metafields.json')) {
|
|
552
|
+
updates.push(findThemeRootURI(change.uri).then((rootUri) => {
|
|
553
|
+
if (rootUri) {
|
|
554
|
+
getMetafieldDefinitionsForRootUri.invalidate(rootUri);
|
|
555
|
+
}
|
|
556
|
+
}));
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
await Promise.all(updates);
|
|
560
|
+
// MissingAssets/MissingSnippet should be rerun when a file is deleted
|
|
561
|
+
// since an error might be introduced (and vice versa).
|
|
562
|
+
runChecks.force(triggerUris);
|
|
563
|
+
});
|
|
564
|
+
connection.onRequest(types_1.ThemeGraphReferenceRequest.type, async (params) => {
|
|
565
|
+
if (hasUnsupportedDocument(params))
|
|
566
|
+
return [];
|
|
567
|
+
const { uri, offset, includeIndirect } = params;
|
|
568
|
+
return themeGraphManager.getReferences(uri, offset, { includeIndirect }).catch((_) => []);
|
|
569
|
+
});
|
|
570
|
+
connection.onRequest(types_1.ThemeGraphDependenciesRequest.type, async (params) => {
|
|
571
|
+
if (hasUnsupportedDocument(params))
|
|
572
|
+
return [];
|
|
573
|
+
const { uri, offset, includeIndirect } = params;
|
|
574
|
+
return themeGraphManager.getDependencies(uri, offset, { includeIndirect }).catch((_) => []);
|
|
575
|
+
});
|
|
576
|
+
connection.onRequest(types_1.ThemeGraphRootRequest.type, async (params) => {
|
|
577
|
+
if (hasUnsupportedDocument(params))
|
|
578
|
+
return '';
|
|
579
|
+
const { uri } = params;
|
|
580
|
+
const rootUri = await findThemeRootURI(uri).catch((_) => undefined);
|
|
581
|
+
if (!rootUri || platformos_check_common_1.path.dirname(rootUri) === rootUri) {
|
|
582
|
+
console.error(uri);
|
|
583
|
+
}
|
|
584
|
+
return rootUri;
|
|
585
|
+
});
|
|
586
|
+
connection.onRequest(types_1.ThemeGraphDeadCodeRequest.type, async (params) => {
|
|
587
|
+
if (hasUnsupportedDocument(params))
|
|
588
|
+
return [];
|
|
589
|
+
const { uri } = params;
|
|
590
|
+
const rootUri = await findThemeRootURI(uri);
|
|
591
|
+
if (!rootUri)
|
|
592
|
+
return [];
|
|
593
|
+
const deadFiles = await themeGraphManager.deadCode(rootUri);
|
|
594
|
+
return deadFiles;
|
|
595
|
+
});
|
|
596
|
+
connection.listen();
|
|
597
|
+
}
|
|
598
|
+
//# sourceMappingURL=startServer.js.map
|