@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,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DocumentManager = void 0;
|
|
4
|
+
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
5
|
+
const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
|
|
6
|
+
const progress_1 = require("../progress");
|
|
7
|
+
const platformos_check_common_2 = require("@platformos/platformos-check-common");
|
|
8
|
+
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
9
|
+
class DocumentManager {
|
|
10
|
+
constructor(fs, connection, clientCapabilities, getModeForUri, isValidSchema) {
|
|
11
|
+
this.fs = fs;
|
|
12
|
+
this.connection = connection;
|
|
13
|
+
this.clientCapabilities = clientCapabilities;
|
|
14
|
+
this.getModeForUri = getModeForUri;
|
|
15
|
+
this.isValidSchema = isValidSchema;
|
|
16
|
+
/**
|
|
17
|
+
* The preload method is used to pre-load and pre-parse all the files in the
|
|
18
|
+
* theme. It is smart and only will load files that are not already in the
|
|
19
|
+
* DocumentManager.
|
|
20
|
+
*
|
|
21
|
+
* Files that are loaded from the AbstractFileSystem will have a version of `undefined`.
|
|
22
|
+
*/
|
|
23
|
+
this.preload = (0, platformos_check_common_1.memoize)(async (rootUri) => {
|
|
24
|
+
if (!this.fs)
|
|
25
|
+
throw new Error('Cannot call preload without a FileSystem');
|
|
26
|
+
const { fs, connection, clientCapabilities } = this;
|
|
27
|
+
const progress = progress_1.Progress.create(connection, clientCapabilities, `preload#${rootUri}`);
|
|
28
|
+
progress.start('Initializing Liquid LSP');
|
|
29
|
+
// We'll only load the files that aren't already in the store. No need to
|
|
30
|
+
// parse a file we already parsed.
|
|
31
|
+
const filesToLoad = await (0, platformos_check_common_1.recursiveReadDirectory)(this.fs, rootUri, ([uri]) => /\.(liquid|json|graphql)$/.test(uri) && !this.sourceCodes.has(uri));
|
|
32
|
+
progress.report(10, 'Preloading files');
|
|
33
|
+
let [i, n] = [0, filesToLoad.length];
|
|
34
|
+
await Promise.all(filesToLoad.map(async (file) => {
|
|
35
|
+
// This is what is important, we are loading the file from the file system
|
|
36
|
+
// And setting their initial version to `undefined` to mean "on disk".
|
|
37
|
+
try {
|
|
38
|
+
this.set(file, await fs.readFile(file), undefined);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error('Failed to preload', file, error);
|
|
42
|
+
}
|
|
43
|
+
// This is just doing progress reporting
|
|
44
|
+
if (++i % 10 === 0) {
|
|
45
|
+
const message = `Preloading files [${i}/${n}]`;
|
|
46
|
+
progress.report((0, progress_1.percent)(i, n, 10), message);
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
progress.end('Completed');
|
|
50
|
+
}, (rootUri) => rootUri);
|
|
51
|
+
this.sourceCodes = new Map();
|
|
52
|
+
this.recentlyRenamed = new Set();
|
|
53
|
+
}
|
|
54
|
+
open(uri, source, version) {
|
|
55
|
+
return this.set(uri, source, version);
|
|
56
|
+
}
|
|
57
|
+
change(uri, source, version) {
|
|
58
|
+
return this.set(uri, source, version);
|
|
59
|
+
}
|
|
60
|
+
async changeFromDisk(uri) {
|
|
61
|
+
if (!this.fs)
|
|
62
|
+
throw new Error('Cannot call changeFromDisk without a FileSystem');
|
|
63
|
+
this.change(uri, await this.fs.readFile(uri), undefined);
|
|
64
|
+
}
|
|
65
|
+
close(uri) {
|
|
66
|
+
const sourceCode = this.sourceCodes.get(uri);
|
|
67
|
+
if (!sourceCode)
|
|
68
|
+
return;
|
|
69
|
+
return this.set(uri, sourceCode.source, undefined);
|
|
70
|
+
}
|
|
71
|
+
delete(uri) {
|
|
72
|
+
return this.sourceCodes.delete(uri);
|
|
73
|
+
}
|
|
74
|
+
rename(oldUri, newUri) {
|
|
75
|
+
this.trackRename(oldUri, newUri);
|
|
76
|
+
const sourceCode = this.sourceCodes.get(oldUri);
|
|
77
|
+
if (!sourceCode)
|
|
78
|
+
return;
|
|
79
|
+
this.sourceCodes.delete(oldUri);
|
|
80
|
+
this.set(newUri, sourceCode.source, sourceCode.version);
|
|
81
|
+
}
|
|
82
|
+
theme(root, includeFilesFromDisk = false) {
|
|
83
|
+
return [...this.sourceCodes.values()]
|
|
84
|
+
.filter((sourceCode) => sourceCode.uri.startsWith(root))
|
|
85
|
+
.filter((sourceCode) => includeFilesFromDisk || sourceCode.version !== undefined);
|
|
86
|
+
}
|
|
87
|
+
get openDocuments() {
|
|
88
|
+
return [...this.sourceCodes.values()].filter((sourceCode) => sourceCode.version !== undefined);
|
|
89
|
+
}
|
|
90
|
+
get(uri) {
|
|
91
|
+
return this.sourceCodes.get(platformos_check_common_1.path.normalize(uri));
|
|
92
|
+
}
|
|
93
|
+
has(uri) {
|
|
94
|
+
return this.sourceCodes.has(platformos_check_common_1.path.normalize(uri));
|
|
95
|
+
}
|
|
96
|
+
/** Used to prevent cache busting twice for the same operation */
|
|
97
|
+
hasRecentRename(uri) {
|
|
98
|
+
return this.recentlyRenamed.has(uri);
|
|
99
|
+
}
|
|
100
|
+
clearRecentRename(uri) {
|
|
101
|
+
this.recentlyRenamed.delete(uri);
|
|
102
|
+
}
|
|
103
|
+
set(uri, source, version) {
|
|
104
|
+
uri = platformos_check_common_1.path.normalize(uri);
|
|
105
|
+
// We only support json and liquid files.
|
|
106
|
+
if (!/\.(json|liquid|graphql)$/.test(uri) || /\.(s?css|js).liquid$/.test(uri)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.sourceCodes.set(uri, this.augmentedSourceCode(uri, source, version));
|
|
110
|
+
}
|
|
111
|
+
augmentedSourceCode(uri, source, version) {
|
|
112
|
+
const sourceCode = (0, platformos_check_common_1.toSourceCode)(uri, source, version);
|
|
113
|
+
const textDocument = vscode_languageserver_textdocument_1.TextDocument.create(uri, sourceCode.type, sourceCode.version ?? 0, // create doesn't let us put undefined here.
|
|
114
|
+
sourceCode.source);
|
|
115
|
+
switch (sourceCode.type) {
|
|
116
|
+
case platformos_check_common_1.SourceCodeType.JSON:
|
|
117
|
+
return {
|
|
118
|
+
...sourceCode,
|
|
119
|
+
textDocument,
|
|
120
|
+
};
|
|
121
|
+
case platformos_check_common_1.SourceCodeType.GraphQL:
|
|
122
|
+
return {
|
|
123
|
+
...sourceCode,
|
|
124
|
+
textDocument,
|
|
125
|
+
};
|
|
126
|
+
case platformos_check_common_1.SourceCodeType.LiquidHtml:
|
|
127
|
+
return {
|
|
128
|
+
...sourceCode,
|
|
129
|
+
textDocument,
|
|
130
|
+
/** Lazy and only computed once per file version */
|
|
131
|
+
getSchema: (0, platformos_check_common_1.memo)(async () => {
|
|
132
|
+
if (!this.getModeForUri || !this.isValidSchema)
|
|
133
|
+
return undefined;
|
|
134
|
+
const mode = await this.getModeForUri(uri);
|
|
135
|
+
return (0, platformos_check_common_1.toSchema)(mode, uri, sourceCode, this.isValidSchema, false);
|
|
136
|
+
}),
|
|
137
|
+
/** Lazy and only computed once per file version */
|
|
138
|
+
getLiquidDoc: (0, platformos_check_common_1.memo)(async () => {
|
|
139
|
+
const ast = sourceCode.ast;
|
|
140
|
+
if ((0, platformos_check_common_1.isError)(ast))
|
|
141
|
+
return undefined;
|
|
142
|
+
return (0, platformos_check_common_2.extractDocDefinition)(uri, ast);
|
|
143
|
+
}),
|
|
144
|
+
};
|
|
145
|
+
default:
|
|
146
|
+
return (0, platformos_check_common_1.assertNever)(sourceCode);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The workspace/onDidRenameFile notification is sent when a file is renamed in the workspace (via a user gesture)
|
|
151
|
+
* The workspace/onDidChangeWatchedFiles notification is sent when a file is renamed on disk (via a file system event)
|
|
152
|
+
*
|
|
153
|
+
* The order is not guaranteed, but it seems to be true that onDidRenameFile happens before onDidChangeWatchedFiles.
|
|
154
|
+
*
|
|
155
|
+
* In the off-chance that the order is reversed, we'll have the sleep timer to clean up the state.
|
|
156
|
+
*/
|
|
157
|
+
trackRename(oldUri, newUri) {
|
|
158
|
+
this.recentlyRenamed.add(oldUri);
|
|
159
|
+
this.recentlyRenamed.add(newUri);
|
|
160
|
+
sleep(2000).then(() => {
|
|
161
|
+
this.clearRecentRename(oldUri);
|
|
162
|
+
this.clearRecentRename(newUri);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.DocumentManager = DocumentManager;
|
|
167
|
+
//# sourceMappingURL=DocumentManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentManager.js","sourceRoot":"","sources":["../../src/documents/DocumentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.DocumentManager = void 0;
|
|
18
|
+
var DocumentManager_1 = require("./DocumentManager");
|
|
19
|
+
Object.defineProperty(exports, "DocumentManager", { enumerable: true, get: function () { return DocumentManager_1.DocumentManager; } });
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/documents/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,0CAAwB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SourceCodeType, SourceCode, SectionSchema, ThemeBlockSchema, AppBlockSchema } from '@platformos/platformos-check-common';
|
|
2
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
+
import { DocDefinition } from '@platformos/platformos-check-common';
|
|
4
|
+
/** Util type to add the common `textDocument` property to the SourceCode. */
|
|
5
|
+
type _AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = SourceCode<SCT> & {
|
|
6
|
+
textDocument: TextDocument;
|
|
7
|
+
};
|
|
8
|
+
/** JsonSourceCode + textDocument */
|
|
9
|
+
export type AugmentedJsonSourceCode = _AugmentedSourceCode<SourceCodeType.JSON>;
|
|
10
|
+
export type AugmentedGraphQLSourceCode = _AugmentedSourceCode<SourceCodeType.GraphQL>;
|
|
11
|
+
/**
|
|
12
|
+
* AugmentedLiquidSourceCode may hold the schema for the section or block.
|
|
13
|
+
*
|
|
14
|
+
* We'll use the SourceCode as the source of truth since we won't need to care
|
|
15
|
+
* about cache invalidation and will mean we'll parse the schema at most once.
|
|
16
|
+
*/
|
|
17
|
+
export type AugmentedLiquidSourceCode = _AugmentedSourceCode<SourceCodeType.LiquidHtml> & {
|
|
18
|
+
getSchema: () => Promise<SectionSchema | ThemeBlockSchema | AppBlockSchema | undefined>;
|
|
19
|
+
getLiquidDoc: () => Promise<DocDefinition | undefined>;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* AugmentedSourceCode is a union of the two augmented source codes.
|
|
23
|
+
*
|
|
24
|
+
* When passed a specific SourceCodeType, it will return the correct AugmentedSourceCode.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* AugmentedSourceCode -> AugmentedJsonSourceCode | AugmentedLiquidSourceCode
|
|
28
|
+
* AugmentedSourceCode<SourceCodeType.JSON> -> AugmentedJsonSourceCode
|
|
29
|
+
* AugmentedSourceCode<SourceCodeType.LiquidHtml> -> AugmentedLiquidSourceCode
|
|
30
|
+
*/
|
|
31
|
+
export type AugmentedSourceCode<SCT extends SourceCodeType = SourceCodeType> = {
|
|
32
|
+
[SourceCodeType.JSON]: AugmentedJsonSourceCode;
|
|
33
|
+
[SourceCodeType.LiquidHtml]: AugmentedLiquidSourceCode;
|
|
34
|
+
[SourceCodeType.GraphQL]: AugmentedGraphQLSourceCode;
|
|
35
|
+
}[SCT];
|
|
36
|
+
export declare const isLiquidSourceCode: (file: AugmentedSourceCode) => file is AugmentedLiquidSourceCode;
|
|
37
|
+
export declare const isJsonSourceCode: (file: AugmentedSourceCode) => file is AugmentedJsonSourceCode;
|
|
38
|
+
export declare const isGraphQLSourceceCode: (file: AugmentedSourceCode) => file is AugmentedJsonSourceCode;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isGraphQLSourceceCode = exports.isJsonSourceCode = exports.isLiquidSourceCode = void 0;
|
|
4
|
+
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
5
|
+
const isLiquidSourceCode = (file) => file.type === platformos_check_common_1.SourceCodeType.LiquidHtml;
|
|
6
|
+
exports.isLiquidSourceCode = isLiquidSourceCode;
|
|
7
|
+
const isJsonSourceCode = (file) => file.type === platformos_check_common_1.SourceCodeType.JSON;
|
|
8
|
+
exports.isJsonSourceCode = isJsonSourceCode;
|
|
9
|
+
const isGraphQLSourceceCode = (file) => file.type === platformos_check_common_1.SourceCodeType.GraphQL;
|
|
10
|
+
exports.isGraphQLSourceceCode = isGraphQLSourceceCode;
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/documents/types.ts"],"names":[],"mappings":";;;AAAA,iFAM6C;AAyCtC,MAAM,kBAAkB,GAAG,CAAC,IAAyB,EAAqC,EAAE,CACjG,IAAI,CAAC,IAAI,KAAK,wCAAc,CAAC,UAAU,CAAC;AAD7B,QAAA,kBAAkB,sBACW;AAEnC,MAAM,gBAAgB,GAAG,CAAC,IAAyB,EAAmC,EAAE,CAC7F,IAAI,CAAC,IAAI,KAAK,wCAAc,CAAC,IAAI,CAAC;AADvB,QAAA,gBAAgB,oBACO;AAE7B,MAAM,qBAAqB,GAAG,CAAC,IAAyB,EAAmC,EAAE,CAClG,IAAI,CAAC,IAAI,KAAK,wCAAc,CAAC,OAAO,CAAC;AAD1B,QAAA,qBAAqB,yBACK"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DocumentOnTypeFormattingParams } from 'vscode-languageserver';
|
|
2
|
+
import { DocumentManager } from '../documents';
|
|
3
|
+
import { SetCursorPosition } from './types';
|
|
4
|
+
export declare class OnTypeFormattingProvider {
|
|
5
|
+
documentManager: DocumentManager;
|
|
6
|
+
setCursorPosition: SetCursorPosition;
|
|
7
|
+
private providers;
|
|
8
|
+
constructor(documentManager: DocumentManager, setCursorPosition?: SetCursorPosition);
|
|
9
|
+
onTypeFormatting(params: DocumentOnTypeFormattingParams): Promise<import("vscode-languageserver").TextEdit[] | null>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnTypeFormattingProvider = void 0;
|
|
4
|
+
const BracketsAutoclosingOnTypeFormattingProvider_1 = require("./providers/BracketsAutoclosingOnTypeFormattingProvider");
|
|
5
|
+
const HtmlElementAutoclosingOnTypeFormattingProvider_1 = require("./providers/HtmlElementAutoclosingOnTypeFormattingProvider");
|
|
6
|
+
class OnTypeFormattingProvider {
|
|
7
|
+
constructor(documentManager, setCursorPosition = async () => { }) {
|
|
8
|
+
this.documentManager = documentManager;
|
|
9
|
+
this.setCursorPosition = setCursorPosition;
|
|
10
|
+
this.providers = [
|
|
11
|
+
new BracketsAutoclosingOnTypeFormattingProvider_1.BracketsAutoclosingOnTypeFormattingProvider(),
|
|
12
|
+
new HtmlElementAutoclosingOnTypeFormattingProvider_1.HtmlElementAutoclosingOnTypeFormattingProvider(setCursorPosition),
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
async onTypeFormatting(params) {
|
|
16
|
+
const document = this.documentManager.get(params.textDocument.uri);
|
|
17
|
+
if (!document)
|
|
18
|
+
return null;
|
|
19
|
+
const results = this.providers.map((provider) => provider.onTypeFormatting(document, params));
|
|
20
|
+
return results.find((result) => result !== null) ?? null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.OnTypeFormattingProvider = OnTypeFormattingProvider;
|
|
24
|
+
//# sourceMappingURL=OnTypeFormattingProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnTypeFormattingProvider.js","sourceRoot":"","sources":["../../src/formatting/OnTypeFormattingProvider.ts"],"names":[],"mappings":";;;AAEA,yHAAsH;AACtH,+HAA4H;AAG5H,MAAa,wBAAwB;IAGnC,YACS,eAAgC,EAChC,oBAAuC,KAAK,IAAI,EAAE,GAAE,CAAC;QADrD,oBAAe,GAAf,eAAe,CAAiB;QAChC,sBAAiB,GAAjB,iBAAiB,CAAoC;QAE5D,IAAI,CAAC,SAAS,GAAG;YACf,IAAI,yFAA2C,EAAE;YACjD,IAAI,+FAA8C,CAAC,iBAAiB,CAAC;SACtE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAsC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9F,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;IAC3D,CAAC;CACF;AAnBD,4DAmBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { OnTypeFormattingProvider } from './OnTypeFormattingProvider';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnTypeFormattingProvider = void 0;
|
|
4
|
+
var OnTypeFormattingProvider_1 = require("./OnTypeFormattingProvider");
|
|
5
|
+
Object.defineProperty(exports, "OnTypeFormattingProvider", { enumerable: true, get: function () { return OnTypeFormattingProvider_1.OnTypeFormattingProvider; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatting/index.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DocumentOnTypeFormattingParams, TextEdit } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { AugmentedSourceCode } from '../../documents';
|
|
3
|
+
import { BaseOnTypeFormattingProvider } from '../types';
|
|
4
|
+
export declare class BracketsAutoclosingOnTypeFormattingProvider implements BaseOnTypeFormattingProvider {
|
|
5
|
+
/**
|
|
6
|
+
* This very complex piece of code here exists to provide a good autoclosing UX.
|
|
7
|
+
*
|
|
8
|
+
* The story is kind of long so here goes...
|
|
9
|
+
*
|
|
10
|
+
* What we want:
|
|
11
|
+
* 1. Basic autoclosing of {{, {% with the corresponding pair (and spaces)
|
|
12
|
+
* - user types: {{
|
|
13
|
+
* - user sees: {{ | }} (with cursor position at |)
|
|
14
|
+
* 2. Autoclosing of {{- with -}}, {%- with -%}
|
|
15
|
+
* - user types: {{-
|
|
16
|
+
* - user sees: {{- | -}} (with cursor at |)
|
|
17
|
+
* 3. User adds whitespace stripping on one side of the braces of an existing tag
|
|
18
|
+
* - user types: - at | in `{{| drop }}`
|
|
19
|
+
* - user sees: {{- drop }}
|
|
20
|
+
*
|
|
21
|
+
* Why we can't do it with autoclosingPairs:
|
|
22
|
+
* - VS Code's settings accepts autoclosingPairs and autocloseBefore
|
|
23
|
+
* - autoclosingPairs is a set of pairs that should be autoclosed (e.g. ['{%', '%}'])
|
|
24
|
+
* - autocloseBefore is a character set of 'allowed next characters' that would cause a closing pair
|
|
25
|
+
* - If we put a space (' ') the autoclosingPairs set, then (3) from above becomes funky:
|
|
26
|
+
* - assume autoclosingPairs = {|}, {{|}}, {{ | }}
|
|
27
|
+
* - user types: a space at | in `{{| drop }}`
|
|
28
|
+
* - user sees: {{ }}drop }}
|
|
29
|
+
* - This happens because the space is an autocloseBefore character, it sees a space after the cursor
|
|
30
|
+
* so it closes '{{ ' with ' }}' at the cursor position, resulting in '{{ }}drop }}'
|
|
31
|
+
* - Something similar happens if we include the `-` in the autoclosing pairs
|
|
32
|
+
* - This is annoying!
|
|
33
|
+
*
|
|
34
|
+
* So our solution is the following:
|
|
35
|
+
* 1. We change the pairs to include the closing space (this way our cursor remains where we want it to be)
|
|
36
|
+
* - {{| }}
|
|
37
|
+
* - {%| %}
|
|
38
|
+
* 2. We add this OnTypeFormattingProvider that does the following "fixes":
|
|
39
|
+
* - {{| }} into {{ | }}
|
|
40
|
+
* - {{ -| }} into {{- | -}}
|
|
41
|
+
* - {%| %} into {% | %}
|
|
42
|
+
* - {% -| %} into {%- | -%}
|
|
43
|
+
*
|
|
44
|
+
* This lets us avoid the unnecessary close and accomplish 1, 2 and 3 :)
|
|
45
|
+
*
|
|
46
|
+
* Fallback for editor.onTypeFormatting: false is to let the user type the `-` on both sides manually
|
|
47
|
+
*/
|
|
48
|
+
onTypeFormatting(document: AugmentedSourceCode, params: DocumentOnTypeFormattingParams): TextEdit[] | null;
|
|
49
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BracketsAutoclosingOnTypeFormattingProvider = void 0;
|
|
4
|
+
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
5
|
+
class BracketsAutoclosingOnTypeFormattingProvider {
|
|
6
|
+
/**
|
|
7
|
+
* This very complex piece of code here exists to provide a good autoclosing UX.
|
|
8
|
+
*
|
|
9
|
+
* The story is kind of long so here goes...
|
|
10
|
+
*
|
|
11
|
+
* What we want:
|
|
12
|
+
* 1. Basic autoclosing of {{, {% with the corresponding pair (and spaces)
|
|
13
|
+
* - user types: {{
|
|
14
|
+
* - user sees: {{ | }} (with cursor position at |)
|
|
15
|
+
* 2. Autoclosing of {{- with -}}, {%- with -%}
|
|
16
|
+
* - user types: {{-
|
|
17
|
+
* - user sees: {{- | -}} (with cursor at |)
|
|
18
|
+
* 3. User adds whitespace stripping on one side of the braces of an existing tag
|
|
19
|
+
* - user types: - at | in `{{| drop }}`
|
|
20
|
+
* - user sees: {{- drop }}
|
|
21
|
+
*
|
|
22
|
+
* Why we can't do it with autoclosingPairs:
|
|
23
|
+
* - VS Code's settings accepts autoclosingPairs and autocloseBefore
|
|
24
|
+
* - autoclosingPairs is a set of pairs that should be autoclosed (e.g. ['{%', '%}'])
|
|
25
|
+
* - autocloseBefore is a character set of 'allowed next characters' that would cause a closing pair
|
|
26
|
+
* - If we put a space (' ') the autoclosingPairs set, then (3) from above becomes funky:
|
|
27
|
+
* - assume autoclosingPairs = {|}, {{|}}, {{ | }}
|
|
28
|
+
* - user types: a space at | in `{{| drop }}`
|
|
29
|
+
* - user sees: {{ }}drop }}
|
|
30
|
+
* - This happens because the space is an autocloseBefore character, it sees a space after the cursor
|
|
31
|
+
* so it closes '{{ ' with ' }}' at the cursor position, resulting in '{{ }}drop }}'
|
|
32
|
+
* - Something similar happens if we include the `-` in the autoclosing pairs
|
|
33
|
+
* - This is annoying!
|
|
34
|
+
*
|
|
35
|
+
* So our solution is the following:
|
|
36
|
+
* 1. We change the pairs to include the closing space (this way our cursor remains where we want it to be)
|
|
37
|
+
* - {{| }}
|
|
38
|
+
* - {%| %}
|
|
39
|
+
* 2. We add this OnTypeFormattingProvider that does the following "fixes":
|
|
40
|
+
* - {{| }} into {{ | }}
|
|
41
|
+
* - {{ -| }} into {{- | -}}
|
|
42
|
+
* - {%| %} into {% | %}
|
|
43
|
+
* - {% -| %} into {%- | -%}
|
|
44
|
+
*
|
|
45
|
+
* This lets us avoid the unnecessary close and accomplish 1, 2 and 3 :)
|
|
46
|
+
*
|
|
47
|
+
* Fallback for editor.onTypeFormatting: false is to let the user type the `-` on both sides manually
|
|
48
|
+
*/
|
|
49
|
+
onTypeFormatting(document, params) {
|
|
50
|
+
const textDocument = document.textDocument;
|
|
51
|
+
const ch = params.ch;
|
|
52
|
+
// position is position of cursor so 1 ahead of char
|
|
53
|
+
const { line, character } = params.position;
|
|
54
|
+
// This is an early return to avoid doing currentLine.at(-1);
|
|
55
|
+
if ((ch === ' ' && character <= 2) || character <= 1)
|
|
56
|
+
return null;
|
|
57
|
+
const currentLineRange = vscode_languageserver_protocol_1.Range.create(vscode_languageserver_protocol_1.Position.create(line, 0), vscode_languageserver_protocol_1.Position.create(line + 1, 0));
|
|
58
|
+
const currentLine = textDocument.getText(currentLineRange);
|
|
59
|
+
const charIdx = ch === ' ' ? character - 2 : character - 1;
|
|
60
|
+
const char = currentLine.at(charIdx);
|
|
61
|
+
switch (char) {
|
|
62
|
+
// here we fix {{| }} with {{ | }}
|
|
63
|
+
// here we fix {%| %} with {% | %}
|
|
64
|
+
case '{':
|
|
65
|
+
case '%': {
|
|
66
|
+
const chars = currentLine.slice(charIdx - 1, charIdx + 4);
|
|
67
|
+
if (chars === '{{ }}' || chars === '{% %}') {
|
|
68
|
+
return [vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, charIdx + 1), ' ')];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// here we fix {{ -| }} to {{- | -}}
|
|
72
|
+
// here we fix {% -| }} to {%- | -%}
|
|
73
|
+
case '-': {
|
|
74
|
+
// remember 0-index means 4th char
|
|
75
|
+
if (charIdx < 3)
|
|
76
|
+
return null;
|
|
77
|
+
const chars = currentLine.slice(charIdx - 3, charIdx + 4);
|
|
78
|
+
if (chars === '{{ - }}' || chars === '{% - %}') {
|
|
79
|
+
// Here we're being clever and doing the {{- -}} if the first character
|
|
80
|
+
// you type is a `-`, leaving your cursor in the middle :)
|
|
81
|
+
return [
|
|
82
|
+
// Start with
|
|
83
|
+
// {{ - }}
|
|
84
|
+
// ^ start replace
|
|
85
|
+
// ^ end replace (excluded)
|
|
86
|
+
// Replace with '- ', get
|
|
87
|
+
// {{- }}
|
|
88
|
+
vscode_languageserver_protocol_1.TextEdit.replace(vscode_languageserver_protocol_1.Range.create(vscode_languageserver_protocol_1.Position.create(line, charIdx - 1), vscode_languageserver_protocol_1.Position.create(line, charIdx + 1)), '- '),
|
|
89
|
+
// Start with
|
|
90
|
+
// {{ - }}
|
|
91
|
+
// ^ char
|
|
92
|
+
// ^ insertion point
|
|
93
|
+
// Insert ' ' , get
|
|
94
|
+
// {{ - -}}
|
|
95
|
+
// Both together and you get {{- -}} with your cursor in the middle
|
|
96
|
+
vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, charIdx + 2), '-'),
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.BracketsAutoclosingOnTypeFormattingProvider = BracketsAutoclosingOnTypeFormattingProvider;
|
|
105
|
+
//# sourceMappingURL=BracketsAutoclosingOnTypeFormattingProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BracketsAutoclosingOnTypeFormattingProvider.js","sourceRoot":"","sources":["../../../src/formatting/providers/BracketsAutoclosingOnTypeFormattingProvider.ts"],"names":[],"mappings":";;;AAAA,mFAKwC;AAIxC,MAAa,2CAA2C;IACtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,gBAAgB,CACd,QAA6B,EAC7B,MAAsC;QAEtC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,oDAAoD;QACpD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC5C,6DAA6D;QAC7D,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,gBAAgB,GAAG,sCAAK,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,yCAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,QAAQ,IAAI,EAAE,CAAC;YACb,kCAAkC;YAClC,kCAAkC;YAClC,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC1D,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBAC3C,OAAO,CAAC,yCAAQ,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,oCAAoC;YACpC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,kCAAkC;gBAClC,IAAI,OAAO,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAE7B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/C,uEAAuE;oBACvE,0DAA0D;oBAC1D,OAAO;wBACL,aAAa;wBACb,YAAY;wBACZ,sBAAsB;wBACtB,iCAAiC;wBACjC,yBAAyB;wBACzB,WAAW;wBACX,yCAAQ,CAAC,OAAO,CACd,sCAAK,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,EACpF,IAAI,CACL;wBACD,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd,2BAA2B;wBAC3B,mBAAmB;wBACnB,aAAa;wBACb,mEAAmE;wBACnE,yCAAQ,CAAC,MAAM,CAAC,yCAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;qBACzD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxGD,kGAwGC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { DocumentOnTypeFormattingParams, TextEdit } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { AugmentedLiquidSourceCode } from '../../documents';
|
|
3
|
+
import { BaseOnTypeFormattingProvider, SetCursorPosition } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* This class is responsible for closing dangling HTML elements.
|
|
6
|
+
*
|
|
7
|
+
* Say user types <script>, then we'd want `</script>` to be inserted.
|
|
8
|
+
*
|
|
9
|
+
* Thing is we want to do that only if the `</script>` isn't already present in the file.
|
|
10
|
+
* If the user goes to edit `<script>` and types `>`, we don't want to insert `</script>` again.
|
|
11
|
+
*
|
|
12
|
+
* The "trick" we use here is to only add the `</script>` part if the
|
|
13
|
+
* document.ast is an instance of LiquidHTMLASTParsingError and that the
|
|
14
|
+
* unclosed element is of the correct name.
|
|
15
|
+
*
|
|
16
|
+
* @example:
|
|
17
|
+
* ```html
|
|
18
|
+
* <div id="main">
|
|
19
|
+
* <div id="inner">|
|
|
20
|
+
* </div>
|
|
21
|
+
* ```
|
|
22
|
+
* - The user just finished typing `<div id="inner">` inside the div#main.
|
|
23
|
+
* - This parses as though the div#inner is closed and div#main isn't.
|
|
24
|
+
* - That's OK.
|
|
25
|
+
* - This makes a LiquidHTMLASTParsingError with unclosed div (the div#main).
|
|
26
|
+
* - Since
|
|
27
|
+
* - the cursor is at the end of a div, and
|
|
28
|
+
* - the unclosed element is a div,
|
|
29
|
+
* Then we can insert one automatically after the cursor and fix the AST.
|
|
30
|
+
*
|
|
31
|
+
* ```html
|
|
32
|
+
* <div id="main">
|
|
33
|
+
* <div id="inner">|</div>
|
|
34
|
+
* </div>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare class HtmlElementAutoclosingOnTypeFormattingProvider implements BaseOnTypeFormattingProvider {
|
|
38
|
+
private setCursorPosition;
|
|
39
|
+
constructor(setCursorPosition: SetCursorPosition);
|
|
40
|
+
onTypeFormatting(document: AugmentedLiquidSourceCode, params: DocumentOnTypeFormattingParams): TextEdit[] | null;
|
|
41
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HtmlElementAutoclosingOnTypeFormattingProvider = void 0;
|
|
4
|
+
const liquid_html_parser_1 = require("@platformos/liquid-html-parser");
|
|
5
|
+
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
6
|
+
const platformos_check_common_1 = require("@platformos/platformos-check-common");
|
|
7
|
+
const defer = (fn) => setTimeout(fn, 10);
|
|
8
|
+
/**
|
|
9
|
+
* This class is responsible for closing dangling HTML elements.
|
|
10
|
+
*
|
|
11
|
+
* Say user types <script>, then we'd want `</script>` to be inserted.
|
|
12
|
+
*
|
|
13
|
+
* Thing is we want to do that only if the `</script>` isn't already present in the file.
|
|
14
|
+
* If the user goes to edit `<script>` and types `>`, we don't want to insert `</script>` again.
|
|
15
|
+
*
|
|
16
|
+
* The "trick" we use here is to only add the `</script>` part if the
|
|
17
|
+
* document.ast is an instance of LiquidHTMLASTParsingError and that the
|
|
18
|
+
* unclosed element is of the correct name.
|
|
19
|
+
*
|
|
20
|
+
* @example:
|
|
21
|
+
* ```html
|
|
22
|
+
* <div id="main">
|
|
23
|
+
* <div id="inner">|
|
|
24
|
+
* </div>
|
|
25
|
+
* ```
|
|
26
|
+
* - The user just finished typing `<div id="inner">` inside the div#main.
|
|
27
|
+
* - This parses as though the div#inner is closed and div#main isn't.
|
|
28
|
+
* - That's OK.
|
|
29
|
+
* - This makes a LiquidHTMLASTParsingError with unclosed div (the div#main).
|
|
30
|
+
* - Since
|
|
31
|
+
* - the cursor is at the end of a div, and
|
|
32
|
+
* - the unclosed element is a div,
|
|
33
|
+
* Then we can insert one automatically after the cursor and fix the AST.
|
|
34
|
+
*
|
|
35
|
+
* ```html
|
|
36
|
+
* <div id="main">
|
|
37
|
+
* <div id="inner">|</div>
|
|
38
|
+
* </div>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
class HtmlElementAutoclosingOnTypeFormattingProvider {
|
|
42
|
+
constructor(setCursorPosition) {
|
|
43
|
+
this.setCursorPosition = setCursorPosition;
|
|
44
|
+
}
|
|
45
|
+
onTypeFormatting(document, params) {
|
|
46
|
+
const textDocument = document.textDocument;
|
|
47
|
+
const ch = params.ch;
|
|
48
|
+
// position is position of cursor so 1 ahead of char
|
|
49
|
+
const { line, character } = params.position;
|
|
50
|
+
switch (ch) {
|
|
51
|
+
// here we fix `>` with `</$unclosed>`
|
|
52
|
+
case '>': {
|
|
53
|
+
const ast = document.ast;
|
|
54
|
+
if (ast instanceof liquid_html_parser_1.LiquidHTMLASTParsingError &&
|
|
55
|
+
ast.unclosed &&
|
|
56
|
+
ast.unclosed.type === liquid_html_parser_1.NodeTypes.HtmlElement &&
|
|
57
|
+
(ast.unclosed.blockStartPosition.end === textDocument.offsetAt(params.position) ||
|
|
58
|
+
shouldClose(ast.unclosed, nodeAtCursor(textDocument, params.position)))) {
|
|
59
|
+
defer(() => this.setCursorPosition(textDocument, params.position));
|
|
60
|
+
return [vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, character), `</${ast.unclosed.name}>`)];
|
|
61
|
+
}
|
|
62
|
+
else if (!(ast instanceof Error)) {
|
|
63
|
+
// Even though we accept dangling <div>s inside {% if condition %}, we prefer to auto-insert the </div>
|
|
64
|
+
const [node] = (0, platformos_check_common_1.findCurrentNode)(ast, textDocument.offsetAt(params.position));
|
|
65
|
+
if (isDanglingHtmlElement(node)) {
|
|
66
|
+
defer(() => this.setCursorPosition(textDocument, params.position));
|
|
67
|
+
return [vscode_languageserver_protocol_1.TextEdit.insert(vscode_languageserver_protocol_1.Position.create(line, character), `</${(0, liquid_html_parser_1.getName)(node)}>`)];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.HtmlElementAutoclosingOnTypeFormattingProvider = HtmlElementAutoclosingOnTypeFormattingProvider;
|
|
76
|
+
function nodeAtCursor(textDocument, position) {
|
|
77
|
+
const text = textDocument.getText(vscode_languageserver_protocol_1.Range.create(vscode_languageserver_protocol_1.Position.create(0, 0), position));
|
|
78
|
+
try {
|
|
79
|
+
const ast = (0, liquid_html_parser_1.toLiquidHtmlAST)(text, {
|
|
80
|
+
allowUnclosedDocumentNode: true,
|
|
81
|
+
mode: 'tolerant',
|
|
82
|
+
});
|
|
83
|
+
const [node, ancestors] = (0, platformos_check_common_1.findCurrentNode)(ast, textDocument.offsetAt(position));
|
|
84
|
+
if (ancestors.at(-1)?.type === liquid_html_parser_1.NodeTypes.HtmlElement)
|
|
85
|
+
return ancestors.at(-1);
|
|
86
|
+
if (node.type === liquid_html_parser_1.NodeTypes.LiquidBranch)
|
|
87
|
+
return ancestors.at(-1);
|
|
88
|
+
return node;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function shouldClose(unclosed, node) {
|
|
95
|
+
if (node === null || !('blockStartPosition' in node))
|
|
96
|
+
return false;
|
|
97
|
+
return ([liquid_html_parser_1.NodeTypes.HtmlElement, liquid_html_parser_1.NodeTypes.LiquidTag, liquid_html_parser_1.NodeTypes.HtmlRawNode].includes(unclosed.type) &&
|
|
98
|
+
(0, liquid_html_parser_1.getName)(node) === unclosed.name);
|
|
99
|
+
}
|
|
100
|
+
function isDanglingHtmlElement(node) {
|
|
101
|
+
return (node !== null &&
|
|
102
|
+
node.type === liquid_html_parser_1.NodeTypes.HtmlElement &&
|
|
103
|
+
node.blockEndPosition.start === node.blockEndPosition.end);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=HtmlElementAutoclosingOnTypeFormattingProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HtmlElementAutoclosingOnTypeFormattingProvider.js","sourceRoot":"","sources":["../../../src/formatting/providers/HtmlElementAutoclosingOnTypeFormattingProvider.ts"],"names":[],"mappings":"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"}
|