@macroforge/svelte-language-server 0.1.3
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/README.md +331 -0
- package/bin/server.js +5 -0
- package/dist/src/importPackage.d.ts +16 -0
- package/dist/src/importPackage.js +76 -0
- package/dist/src/importPackage.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +23 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/DiagnosticsManager.d.ts +20 -0
- package/dist/src/lib/DiagnosticsManager.js +71 -0
- package/dist/src/lib/DiagnosticsManager.js.map +1 -0
- package/dist/src/lib/FallbackWatcher.d.ts +15 -0
- package/dist/src/lib/FallbackWatcher.js +66 -0
- package/dist/src/lib/FallbackWatcher.js.map +1 -0
- package/dist/src/lib/documentHighlight/wordHighlight.d.ts +3 -0
- package/dist/src/lib/documentHighlight/wordHighlight.js +62 -0
- package/dist/src/lib/documentHighlight/wordHighlight.js.map +1 -0
- package/dist/src/lib/documents/Document.d.ts +63 -0
- package/dist/src/lib/documents/Document.js +138 -0
- package/dist/src/lib/documents/Document.js.map +1 -0
- package/dist/src/lib/documents/DocumentBase.d.ts +65 -0
- package/dist/src/lib/documents/DocumentBase.js +69 -0
- package/dist/src/lib/documents/DocumentBase.js.map +1 -0
- package/dist/src/lib/documents/DocumentManager.d.ts +28 -0
- package/dist/src/lib/documents/DocumentManager.js +122 -0
- package/dist/src/lib/documents/DocumentManager.js.map +1 -0
- package/dist/src/lib/documents/DocumentMapper.d.ts +88 -0
- package/dist/src/lib/documents/DocumentMapper.js +258 -0
- package/dist/src/lib/documents/DocumentMapper.js.map +1 -0
- package/dist/src/lib/documents/configLoader.d.ts +80 -0
- package/dist/src/lib/documents/configLoader.js +265 -0
- package/dist/src/lib/documents/configLoader.js.map +1 -0
- package/dist/src/lib/documents/fileCollection.d.ts +41 -0
- package/dist/src/lib/documents/fileCollection.js +87 -0
- package/dist/src/lib/documents/fileCollection.js.map +1 -0
- package/dist/src/lib/documents/index.d.ts +5 -0
- package/dist/src/lib/documents/index.js +22 -0
- package/dist/src/lib/documents/index.js.map +1 -0
- package/dist/src/lib/documents/parseHtml.d.ts +13 -0
- package/dist/src/lib/documents/parseHtml.js +160 -0
- package/dist/src/lib/documents/parseHtml.js.map +1 -0
- package/dist/src/lib/documents/utils.d.ts +105 -0
- package/dist/src/lib/documents/utils.js +410 -0
- package/dist/src/lib/documents/utils.js.map +1 -0
- package/dist/src/lib/foldingRange/indentFolding.d.ts +26 -0
- package/dist/src/lib/foldingRange/indentFolding.js +142 -0
- package/dist/src/lib/foldingRange/indentFolding.js.map +1 -0
- package/dist/src/lib/semanticToken/semanticTokenLegend.d.ts +33 -0
- package/dist/src/lib/semanticToken/semanticTokenLegend.js +37 -0
- package/dist/src/lib/semanticToken/semanticTokenLegend.js.map +1 -0
- package/dist/src/logger.d.ts +9 -0
- package/dist/src/logger.js +28 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/ls-config.d.ts +326 -0
- package/dist/src/ls-config.js +386 -0
- package/dist/src/ls-config.js.map +1 -0
- package/dist/src/plugins/PluginHost.d.ts +68 -0
- package/dist/src/plugins/PluginHost.js +447 -0
- package/dist/src/plugins/PluginHost.js.map +1 -0
- package/dist/src/plugins/css/CSSDocument.d.ts +46 -0
- package/dist/src/plugins/css/CSSDocument.js +78 -0
- package/dist/src/plugins/css/CSSDocument.js.map +1 -0
- package/dist/src/plugins/css/CSSPlugin.d.ts +35 -0
- package/dist/src/plugins/css/CSSPlugin.js +407 -0
- package/dist/src/plugins/css/CSSPlugin.js.map +1 -0
- package/dist/src/plugins/css/FileSystemProvider.d.ts +10 -0
- package/dist/src/plugins/css/FileSystemProvider.js +75 -0
- package/dist/src/plugins/css/FileSystemProvider.js.map +1 -0
- package/dist/src/plugins/css/StyleAttributeDocument.d.ts +41 -0
- package/dist/src/plugins/css/StyleAttributeDocument.js +65 -0
- package/dist/src/plugins/css/StyleAttributeDocument.js.map +1 -0
- package/dist/src/plugins/css/features/getIdClassCompletion.d.ts +19 -0
- package/dist/src/plugins/css/features/getIdClassCompletion.js +56 -0
- package/dist/src/plugins/css/features/getIdClassCompletion.js.map +1 -0
- package/dist/src/plugins/css/features/svelte-selectors.d.ts +2 -0
- package/dist/src/plugins/css/features/svelte-selectors.js +18 -0
- package/dist/src/plugins/css/features/svelte-selectors.js.map +1 -0
- package/dist/src/plugins/css/global-vars.d.ts +16 -0
- package/dist/src/plugins/css/global-vars.js +82 -0
- package/dist/src/plugins/css/global-vars.js.map +1 -0
- package/dist/src/plugins/css/service.d.ts +5 -0
- package/dist/src/plugins/css/service.js +66 -0
- package/dist/src/plugins/css/service.js.map +1 -0
- package/dist/src/plugins/documentContext.d.ts +3 -0
- package/dist/src/plugins/documentContext.js +36 -0
- package/dist/src/plugins/documentContext.js.map +1 -0
- package/dist/src/plugins/html/HTMLPlugin.d.ts +36 -0
- package/dist/src/plugins/html/HTMLPlugin.js +363 -0
- package/dist/src/plugins/html/HTMLPlugin.js.map +1 -0
- package/dist/src/plugins/html/dataProvider.d.ts +1 -0
- package/dist/src/plugins/html/dataProvider.js +481 -0
- package/dist/src/plugins/html/dataProvider.js.map +1 -0
- package/dist/src/plugins/index.d.ts +7 -0
- package/dist/src/plugins/index.js +24 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/plugins/interfaces.d.ts +132 -0
- package/dist/src/plugins/interfaces.js +3 -0
- package/dist/src/plugins/interfaces.js.map +1 -0
- package/dist/src/plugins/svelte/SvelteDocument.d.ts +98 -0
- package/dist/src/plugins/svelte/SvelteDocument.js +318 -0
- package/dist/src/plugins/svelte/SvelteDocument.js.map +1 -0
- package/dist/src/plugins/svelte/SveltePlugin.d.ts +24 -0
- package/dist/src/plugins/svelte/SveltePlugin.js +306 -0
- package/dist/src/plugins/svelte/SveltePlugin.js.map +1 -0
- package/dist/src/plugins/svelte/features/SvelteTags.d.ts +28 -0
- package/dist/src/plugins/svelte/features/SvelteTags.js +136 -0
- package/dist/src/plugins/svelte/features/SvelteTags.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.d.ts +11 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js +140 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.d.ts +9 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js +140 -0
- package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCodeActions/index.d.ts +4 -0
- package/dist/src/plugins/svelte/features/getCodeActions/index.js +19 -0
- package/dist/src/plugins/svelte/features/getCodeActions/index.js.map +1 -0
- package/dist/src/plugins/svelte/features/getCompletions.d.ts +4 -0
- package/dist/src/plugins/svelte/features/getCompletions.js +184 -0
- package/dist/src/plugins/svelte/features/getCompletions.js.map +1 -0
- package/dist/src/plugins/svelte/features/getDiagnostics.d.ts +9 -0
- package/dist/src/plugins/svelte/features/getDiagnostics.js +284 -0
- package/dist/src/plugins/svelte/features/getDiagnostics.js.map +1 -0
- package/dist/src/plugins/svelte/features/getHoverInfo.d.ts +7 -0
- package/dist/src/plugins/svelte/features/getHoverInfo.js +93 -0
- package/dist/src/plugins/svelte/features/getHoverInfo.js.map +1 -0
- package/dist/src/plugins/svelte/features/getModifierData.d.ts +7 -0
- package/dist/src/plugins/svelte/features/getModifierData.js +56 -0
- package/dist/src/plugins/svelte/features/getModifierData.js.map +1 -0
- package/dist/src/plugins/svelte/features/getSelectionRanges.d.ts +3 -0
- package/dist/src/plugins/svelte/features/getSelectionRanges.js +46 -0
- package/dist/src/plugins/svelte/features/getSelectionRanges.js.map +1 -0
- package/dist/src/plugins/svelte/features/utils.d.ts +5 -0
- package/dist/src/plugins/svelte/features/utils.js +18 -0
- package/dist/src/plugins/svelte/features/utils.js.map +1 -0
- package/dist/src/plugins/typescript/ComponentInfoProvider.d.ts +27 -0
- package/dist/src/plugins/typescript/ComponentInfoProvider.js +116 -0
- package/dist/src/plugins/typescript/ComponentInfoProvider.js.map +1 -0
- package/dist/src/plugins/typescript/DocumentMapper.d.ts +10 -0
- package/dist/src/plugins/typescript/DocumentMapper.js +25 -0
- package/dist/src/plugins/typescript/DocumentMapper.js.map +1 -0
- package/dist/src/plugins/typescript/DocumentSnapshot.d.ts +173 -0
- package/dist/src/plugins/typescript/DocumentSnapshot.js +623 -0
- package/dist/src/plugins/typescript/DocumentSnapshot.js.map +1 -0
- package/dist/src/plugins/typescript/LSAndTSDocResolver.d.ts +100 -0
- package/dist/src/plugins/typescript/LSAndTSDocResolver.js +301 -0
- package/dist/src/plugins/typescript/LSAndTSDocResolver.js.map +1 -0
- package/dist/src/plugins/typescript/SnapshotManager.d.ts +59 -0
- package/dist/src/plugins/typescript/SnapshotManager.js +238 -0
- package/dist/src/plugins/typescript/SnapshotManager.js.map +1 -0
- package/dist/src/plugins/typescript/TypeScriptPlugin.d.ts +65 -0
- package/dist/src/plugins/typescript/TypeScriptPlugin.js +332 -0
- package/dist/src/plugins/typescript/TypeScriptPlugin.js.map +1 -0
- package/dist/src/plugins/typescript/features/CallHierarchyProvider.d.ts +24 -0
- package/dist/src/plugins/typescript/features/CallHierarchyProvider.js +325 -0
- package/dist/src/plugins/typescript/features/CallHierarchyProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/CodeActionsProvider.d.ts +72 -0
- package/dist/src/plugins/typescript/features/CodeActionsProvider.js +1030 -0
- package/dist/src/plugins/typescript/features/CodeActionsProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/CodeLensProvider.d.ts +28 -0
- package/dist/src/plugins/typescript/features/CodeLensProvider.js +205 -0
- package/dist/src/plugins/typescript/features/CodeLensProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/CompletionProvider.d.ts +57 -0
- package/dist/src/plugins/typescript/features/CompletionProvider.js +791 -0
- package/dist/src/plugins/typescript/features/CompletionProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/DiagnosticsProvider.d.ts +36 -0
- package/dist/src/plugins/typescript/features/DiagnosticsProvider.js +497 -0
- package/dist/src/plugins/typescript/features/DiagnosticsProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/DocumentHighlightProvider.d.ts +17 -0
- package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js +211 -0
- package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js +66 -0
- package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FindFileReferencesProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js +38 -0
- package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FindReferencesProvider.d.ts +20 -0
- package/dist/src/plugins/typescript/features/FindReferencesProvider.js +149 -0
- package/dist/src/plugins/typescript/features/FindReferencesProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/FoldingRangeProvider.d.ts +28 -0
- package/dist/src/plugins/typescript/features/FoldingRangeProvider.js +247 -0
- package/dist/src/plugins/typescript/features/FoldingRangeProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/HoverProvider.d.ts +11 -0
- package/dist/src/plugins/typescript/features/HoverProvider.js +75 -0
- package/dist/src/plugins/typescript/features/HoverProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/ImplementationProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/ImplementationProvider.js +47 -0
- package/dist/src/plugins/typescript/features/ImplementationProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/InlayHintProvider.d.ts +22 -0
- package/dist/src/plugins/typescript/features/InlayHintProvider.js +225 -0
- package/dist/src/plugins/typescript/features/InlayHintProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/RenameProvider.d.ts +53 -0
- package/dist/src/plugins/typescript/features/RenameProvider.js +423 -0
- package/dist/src/plugins/typescript/features/RenameProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/SelectionRangeProvider.d.ts +18 -0
- package/dist/src/plugins/typescript/features/SelectionRangeProvider.js +62 -0
- package/dist/src/plugins/typescript/features/SelectionRangeProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/SemanticTokensProvider.d.ts +15 -0
- package/dist/src/plugins/typescript/features/SemanticTokensProvider.js +116 -0
- package/dist/src/plugins/typescript/features/SemanticTokensProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/SignatureHelpProvider.d.ts +22 -0
- package/dist/src/plugins/typescript/features/SignatureHelpProvider.js +110 -0
- package/dist/src/plugins/typescript/features/SignatureHelpProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/TypeDefinitionProvider.d.ts +9 -0
- package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js +35 -0
- package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/UpdateImportsProvider.d.ts +11 -0
- package/dist/src/plugins/typescript/features/UpdateImportsProvider.js +109 -0
- package/dist/src/plugins/typescript/features/UpdateImportsProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.d.ts +25 -0
- package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js +176 -0
- package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js.map +1 -0
- package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.d.ts +13 -0
- package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js +58 -0
- package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js.map +1 -0
- package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.d.ts +4 -0
- package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js +57 -0
- package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js.map +1 -0
- package/dist/src/plugins/typescript/features/utils.d.ts +81 -0
- package/dist/src/plugins/typescript/features/utils.js +331 -0
- package/dist/src/plugins/typescript/features/utils.js.map +1 -0
- package/dist/src/plugins/typescript/macroforgeAugmenter.d.ts +23 -0
- package/dist/src/plugins/typescript/macroforgeAugmenter.js +41 -0
- package/dist/src/plugins/typescript/macroforgeAugmenter.js.map +1 -0
- package/dist/src/plugins/typescript/module-loader.d.ts +28 -0
- package/dist/src/plugins/typescript/module-loader.js +254 -0
- package/dist/src/plugins/typescript/module-loader.js.map +1 -0
- package/dist/src/plugins/typescript/previewer.d.ts +7 -0
- package/dist/src/plugins/typescript/previewer.js +120 -0
- package/dist/src/plugins/typescript/previewer.js.map +1 -0
- package/dist/src/plugins/typescript/service.d.ts +105 -0
- package/dist/src/plugins/typescript/service.js +1073 -0
- package/dist/src/plugins/typescript/service.js.map +1 -0
- package/dist/src/plugins/typescript/serviceCache.d.ts +90 -0
- package/dist/src/plugins/typescript/serviceCache.js +50 -0
- package/dist/src/plugins/typescript/serviceCache.js.map +1 -0
- package/dist/src/plugins/typescript/svelte-ast-utils.d.ts +77 -0
- package/dist/src/plugins/typescript/svelte-ast-utils.js +100 -0
- package/dist/src/plugins/typescript/svelte-ast-utils.js.map +1 -0
- package/dist/src/plugins/typescript/svelte-sys.d.ts +9 -0
- package/dist/src/plugins/typescript/svelte-sys.js +79 -0
- package/dist/src/plugins/typescript/svelte-sys.js.map +1 -0
- package/dist/src/plugins/typescript/utils.d.ts +48 -0
- package/dist/src/plugins/typescript/utils.js +334 -0
- package/dist/src/plugins/typescript/utils.js.map +1 -0
- package/dist/src/server.d.ts +19 -0
- package/dist/src/server.js +434 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/svelte-check.d.ts +65 -0
- package/dist/src/svelte-check.js +288 -0
- package/dist/src/svelte-check.js.map +1 -0
- package/dist/src/utils.d.ts +111 -0
- package/dist/src/utils.js +337 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FoldingRangeProviderImpl = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
9
|
+
const documents_1 = require("../../../lib/documents");
|
|
10
|
+
const utils_1 = require("../../../utils");
|
|
11
|
+
const utils_2 = require("../utils");
|
|
12
|
+
const utils_3 = require("./utils");
|
|
13
|
+
const indentFolding_1 = require("../../../lib/foldingRange/indentFolding");
|
|
14
|
+
const svelte_ast_utils_1 = require("../svelte-ast-utils");
|
|
15
|
+
class FoldingRangeProviderImpl {
|
|
16
|
+
constructor(lsAndTsDocResolver, configManager) {
|
|
17
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
18
|
+
this.configManager = configManager;
|
|
19
|
+
this.foldEndPairCharacters = ['}', ']', ')', '`', '>'];
|
|
20
|
+
}
|
|
21
|
+
async getFoldingRanges(document) {
|
|
22
|
+
// don't use ls.getProgram unless it's necessary
|
|
23
|
+
// this feature is pure syntactic and doesn't need type information
|
|
24
|
+
const { lang, tsDoc } = await this.lsAndTsDocResolver.getLsForSyntheticOperations(document);
|
|
25
|
+
const foldingRanges = tsDoc.parserError && !document.moduleScriptInfo && !document.scriptInfo
|
|
26
|
+
? []
|
|
27
|
+
: lang.getOutliningSpans(tsDoc.filePath);
|
|
28
|
+
const lineFoldingOnly = !!this.configManager.getClientCapabilities()?.textDocument?.foldingRange
|
|
29
|
+
?.lineFoldingOnly;
|
|
30
|
+
const result = foldingRanges
|
|
31
|
+
.filter((span) => !(0, utils_3.isTextSpanInGeneratedCode)(tsDoc.getFullText(), span.textSpan))
|
|
32
|
+
.map((span) => ({
|
|
33
|
+
originalRange: this.mapToOriginalRange(tsDoc, span.textSpan, document),
|
|
34
|
+
span
|
|
35
|
+
}))
|
|
36
|
+
.map(({ originalRange, span }) => this.convertOutliningSpan(span, document, originalRange, lineFoldingOnly))
|
|
37
|
+
.filter(utils_1.isNotNullOrUndefined)
|
|
38
|
+
.concat(this.collectSvelteBlockFolding(document, tsDoc, lineFoldingOnly))
|
|
39
|
+
.concat(this.getSvelteTagFoldingIfParserError(document, tsDoc))
|
|
40
|
+
.filter((r) => (lineFoldingOnly ? r.startLine < r.endLine : r.startLine <= r.endLine));
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
mapToOriginalRange(tsDoc, textSpan, document) {
|
|
44
|
+
const range = (0, documents_1.mapRangeToOriginal)(tsDoc, (0, utils_2.convertRange)(tsDoc, textSpan));
|
|
45
|
+
const startOffset = document.offsetAt(range.start);
|
|
46
|
+
if (range.start.line < 0 || range.end.line < 0 || range.start.line > range.end.line) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if ((0, documents_1.isInTag)(range.start, document.scriptInfo) ||
|
|
50
|
+
(0, documents_1.isInTag)(range.start, document.moduleScriptInfo)) {
|
|
51
|
+
return range;
|
|
52
|
+
}
|
|
53
|
+
const endOffset = document.offsetAt(range.end);
|
|
54
|
+
const originalText = document.getText().slice(startOffset, endOffset);
|
|
55
|
+
if (originalText.length === 0) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const generatedText = tsDoc.getText(textSpan.start, textSpan.start + textSpan.length);
|
|
59
|
+
const oneToOne = originalText.trim() === generatedText.trim();
|
|
60
|
+
if (oneToOne) {
|
|
61
|
+
return range;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Doing this here with the svelte2tsx's svelte ast is slightly
|
|
66
|
+
* less prone to error and faster than
|
|
67
|
+
* using the svelte ast in the svelte plugins.
|
|
68
|
+
*/
|
|
69
|
+
collectSvelteBlockFolding(document, tsDoc, lineFoldingOnly) {
|
|
70
|
+
if (tsDoc.parserError) {
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
const ranges = [];
|
|
74
|
+
const provider = this;
|
|
75
|
+
const enter = function (node, parent, key) {
|
|
76
|
+
if (key === 'attributes') {
|
|
77
|
+
this.skip();
|
|
78
|
+
}
|
|
79
|
+
// use sub-block for await block
|
|
80
|
+
if (!node.type.endsWith('Block') || node.type === 'AwaitBlock') {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (node.type === 'IfBlock') {
|
|
84
|
+
provider.getIfBlockFolding(node, document, ranges);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if ((0, svelte_ast_utils_1.isElseBlockWithElseIf)(node)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if ((node.type === 'CatchBlock' || node.type === 'ThenBlock') && (0, svelte_ast_utils_1.isAwaitBlock)(parent)) {
|
|
91
|
+
const expressionEnd = (node.type === 'CatchBlock' ? parent.error?.end : parent.value?.end) ??
|
|
92
|
+
document.getText().indexOf('}', node.start);
|
|
93
|
+
const beforeBlockStartTagEnd = document.getText().indexOf('}', expressionEnd);
|
|
94
|
+
if (beforeBlockStartTagEnd == -1) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
ranges.push(provider.createFoldingRange(document, beforeBlockStartTagEnd + 1, node.end));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if ((0, svelte_ast_utils_1.isEachBlock)(node)) {
|
|
101
|
+
const start = document.getText().indexOf('}', (node.key ?? node.expression).end);
|
|
102
|
+
const elseStart = node.else
|
|
103
|
+
? (0, svelte_ast_utils_1.findElseBlockTagStart)(document.getText(), node.else)
|
|
104
|
+
: -1;
|
|
105
|
+
ranges.push(provider.createFoldingRange(document, start, elseStart === -1 ? node.end : elseStart));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if ('expression' in node && node.expression && typeof node.expression === 'object') {
|
|
109
|
+
const start = provider.getStartForNodeWithExpression(node, document);
|
|
110
|
+
const end = node.end;
|
|
111
|
+
ranges.push(provider.createFoldingRange(document, start, end));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (node.start != null && node.end != null) {
|
|
115
|
+
const start = node.start;
|
|
116
|
+
const end = node.end;
|
|
117
|
+
ranges.push(provider.createFoldingRange(document, start, end));
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
tsDoc.walkSvelteAst({
|
|
121
|
+
enter
|
|
122
|
+
});
|
|
123
|
+
if (lineFoldingOnly) {
|
|
124
|
+
return ranges.map((r) => ({
|
|
125
|
+
startLine: r.startLine,
|
|
126
|
+
endLine: this.previousLineOfEndLine(r.startLine, r.endLine)
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
return ranges;
|
|
130
|
+
}
|
|
131
|
+
getIfBlockFolding(node, document, ranges) {
|
|
132
|
+
const typed = node;
|
|
133
|
+
const documentText = document.getText();
|
|
134
|
+
const start = this.getStartForNodeWithExpression(typed, document);
|
|
135
|
+
const end = (0, svelte_ast_utils_1.hasElseBlock)(typed)
|
|
136
|
+
? (0, svelte_ast_utils_1.findElseBlockTagStart)(documentText, typed.else)
|
|
137
|
+
: (0, svelte_ast_utils_1.findIfBlockEndTagStart)(documentText, typed);
|
|
138
|
+
ranges.push(this.createFoldingRange(document, start, end));
|
|
139
|
+
}
|
|
140
|
+
getStartForNodeWithExpression(node, document) {
|
|
141
|
+
return document.getText().indexOf('}', node.expression.end) + 1;
|
|
142
|
+
}
|
|
143
|
+
createFoldingRange(document, start, end) {
|
|
144
|
+
const range = (0, documents_1.toRange)(document, start, end);
|
|
145
|
+
return {
|
|
146
|
+
startLine: range.start.line,
|
|
147
|
+
startCharacter: range.start.character,
|
|
148
|
+
endLine: range.end.line,
|
|
149
|
+
endCharacter: range.end.character
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
convertOutliningSpan(span, document, originalRange, lineFoldingOnly) {
|
|
153
|
+
if (!originalRange) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const end = lineFoldingOnly
|
|
157
|
+
? this.adjustFoldingEndToNotHideEnd(originalRange, document)
|
|
158
|
+
: originalRange.end;
|
|
159
|
+
const result = {
|
|
160
|
+
startLine: originalRange.start.line,
|
|
161
|
+
endLine: end.line,
|
|
162
|
+
kind: this.getFoldingRangeKind(span),
|
|
163
|
+
startCharacter: lineFoldingOnly ? undefined : originalRange.start.character,
|
|
164
|
+
endCharacter: lineFoldingOnly ? undefined : end.character
|
|
165
|
+
};
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
getFoldingRangeKind(span) {
|
|
169
|
+
switch (span.kind) {
|
|
170
|
+
case typescript_1.default.OutliningSpanKind.Comment:
|
|
171
|
+
return vscode_languageserver_1.FoldingRangeKind.Comment;
|
|
172
|
+
case typescript_1.default.OutliningSpanKind.Region:
|
|
173
|
+
return vscode_languageserver_1.FoldingRangeKind.Region;
|
|
174
|
+
case typescript_1.default.OutliningSpanKind.Imports:
|
|
175
|
+
return vscode_languageserver_1.FoldingRangeKind.Imports;
|
|
176
|
+
case typescript_1.default.OutliningSpanKind.Code:
|
|
177
|
+
default:
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
adjustFoldingEndToNotHideEnd(range, document) {
|
|
182
|
+
// don't fold end bracket, brace...
|
|
183
|
+
if (range.end.character > 0) {
|
|
184
|
+
const text = document.getText();
|
|
185
|
+
const offsetBeforeEnd = document.offsetAt({
|
|
186
|
+
line: range.end.line,
|
|
187
|
+
character: range.end.character - 1
|
|
188
|
+
});
|
|
189
|
+
const foldEndCharacter = text[offsetBeforeEnd];
|
|
190
|
+
if (this.foldEndPairCharacters.includes(foldEndCharacter)) {
|
|
191
|
+
return { line: this.previousLineOfEndLine(range.start.line, range.end.line) };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return range.end;
|
|
195
|
+
}
|
|
196
|
+
getSvelteTagFoldingIfParserError(document, tsDoc) {
|
|
197
|
+
if (!tsDoc.parserError) {
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
const htmlTemplateRanges = this.getHtmlTemplateRangesForChecking(document);
|
|
201
|
+
return (0, indentFolding_1.indentBasedFoldingRange)({
|
|
202
|
+
document,
|
|
203
|
+
skipFold: (_, lineContent) => {
|
|
204
|
+
return !/{\s*(#|\/|:)/.test(lineContent);
|
|
205
|
+
},
|
|
206
|
+
ranges: htmlTemplateRanges
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
getHtmlTemplateRangesForChecking(document) {
|
|
210
|
+
const ranges = [];
|
|
211
|
+
const excludeTags = [
|
|
212
|
+
document.templateInfo,
|
|
213
|
+
document.moduleScriptInfo,
|
|
214
|
+
document.scriptInfo,
|
|
215
|
+
document.styleInfo
|
|
216
|
+
]
|
|
217
|
+
.filter(utils_1.isNotNullOrUndefined)
|
|
218
|
+
.map((info) => ({
|
|
219
|
+
startLine: document.positionAt(info.container.start).line,
|
|
220
|
+
endLine: document.positionAt(info.container.end).line
|
|
221
|
+
}))
|
|
222
|
+
.sort((a, b) => a.startLine - b.startLine);
|
|
223
|
+
if (excludeTags.length === 0) {
|
|
224
|
+
return [{ startLine: 0, endLine: document.lineCount - 1 }];
|
|
225
|
+
}
|
|
226
|
+
if (excludeTags[0].startLine > 0) {
|
|
227
|
+
ranges.push({
|
|
228
|
+
startLine: 0,
|
|
229
|
+
endLine: excludeTags[0].startLine - 1
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
for (let index = 0; index < excludeTags.length; index++) {
|
|
233
|
+
const element = excludeTags[index];
|
|
234
|
+
const next = excludeTags[index + 1];
|
|
235
|
+
ranges.push({
|
|
236
|
+
startLine: element.endLine + 1,
|
|
237
|
+
endLine: next ? next.startLine - 1 : document.lineCount - 1
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
return ranges;
|
|
241
|
+
}
|
|
242
|
+
previousLineOfEndLine(startLine, endLine) {
|
|
243
|
+
return Math.max(endLine - 1, startLine);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
exports.FoldingRangeProviderImpl = FoldingRangeProviderImpl;
|
|
247
|
+
//# sourceMappingURL=FoldingRangeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FoldingRangeProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/FoldingRangeProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Hover, Position } from 'vscode-languageserver';
|
|
2
|
+
import { Document } from '../../../lib/documents';
|
|
3
|
+
import { HoverProvider } from '../../interfaces';
|
|
4
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
5
|
+
export declare class HoverProviderImpl implements HoverProvider {
|
|
6
|
+
private readonly lsAndTsDocResolver;
|
|
7
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
8
|
+
doHover(document: Document, position: Position): Promise<Hover | null>;
|
|
9
|
+
private getEventHoverInfo;
|
|
10
|
+
private getLSAndTSDoc;
|
|
11
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HoverProviderImpl = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const documents_1 = require("../../../lib/documents");
|
|
9
|
+
const previewer_1 = require("../previewer");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
const utils_2 = require("./utils");
|
|
12
|
+
class HoverProviderImpl {
|
|
13
|
+
constructor(lsAndTsDocResolver) {
|
|
14
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
15
|
+
}
|
|
16
|
+
async doHover(document, position) {
|
|
17
|
+
const { lang, tsDoc, userPreferences } = await this.getLSAndTSDoc(document);
|
|
18
|
+
const eventHoverInfo = this.getEventHoverInfo(lang, document, tsDoc, position);
|
|
19
|
+
if (eventHoverInfo) {
|
|
20
|
+
return eventHoverInfo;
|
|
21
|
+
}
|
|
22
|
+
const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
|
|
23
|
+
const info = lang.getQuickInfoAtPosition(tsDoc.filePath, offset, userPreferences.maximumHoverLength);
|
|
24
|
+
if (!info) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
let declaration = typescript_1.default.displayPartsToString(info.displayParts);
|
|
28
|
+
if (tsDoc.isSvelte5Plus &&
|
|
29
|
+
declaration.includes('(alias)') &&
|
|
30
|
+
declaration.includes('__sveltets_2_IsomorphicComponent')) {
|
|
31
|
+
// info ends with "import ComponentName"
|
|
32
|
+
declaration = declaration.substring(declaration.lastIndexOf('import'));
|
|
33
|
+
}
|
|
34
|
+
const documentation = (0, previewer_1.getMarkdownDocumentation)(info.documentation, info.tags);
|
|
35
|
+
// https://microsoft.github.io/language-server-protocol/specification#textDocument_hover
|
|
36
|
+
const contents = ['```typescript', declaration, '```']
|
|
37
|
+
.concat(documentation ? ['---', documentation] : [])
|
|
38
|
+
.join('\n');
|
|
39
|
+
return (0, documents_1.mapObjWithRangeToOriginal)(tsDoc, {
|
|
40
|
+
range: (0, utils_1.convertRange)(tsDoc, info.textSpan),
|
|
41
|
+
contents
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
getEventHoverInfo(lang, doc, tsDoc, originalPosition) {
|
|
45
|
+
const possibleEventName = (0, documents_1.getWordAt)(doc.getText(), doc.offsetAt(originalPosition), {
|
|
46
|
+
left: /\S+$/,
|
|
47
|
+
right: /[\s=]/
|
|
48
|
+
});
|
|
49
|
+
if (!possibleEventName.startsWith('on:')) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const component = (0, utils_2.getComponentAtPosition)(lang, doc, tsDoc, originalPosition);
|
|
53
|
+
if (!component) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const eventName = possibleEventName.substr('on:'.length);
|
|
57
|
+
const event = component.getEvents().find((event) => event.name === eventName);
|
|
58
|
+
if (!event) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
contents: [
|
|
63
|
+
'```typescript',
|
|
64
|
+
`${event.name}: ${event.type}`,
|
|
65
|
+
'```',
|
|
66
|
+
event.doc || ''
|
|
67
|
+
].join('\n')
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
async getLSAndTSDoc(document) {
|
|
71
|
+
return this.lsAndTsDocResolver.getLSAndTSDoc(document);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.HoverProviderImpl = HoverProviderImpl;
|
|
75
|
+
//# sourceMappingURL=HoverProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HoverProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/HoverProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Position, Location, CancellationToken } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { Document } from '../../../lib/documents';
|
|
3
|
+
import { ImplementationProvider } from '../../interfaces';
|
|
4
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
5
|
+
export declare class ImplementationProviderImpl implements ImplementationProvider {
|
|
6
|
+
private readonly lsAndTsDocResolver;
|
|
7
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
8
|
+
getImplementation(document: Document, position: Position, cancellationToken?: CancellationToken): Promise<Location[] | null>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ImplementationProviderImpl = void 0;
|
|
4
|
+
const documents_1 = require("../../../lib/documents");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
const utils_2 = require("../utils");
|
|
7
|
+
const utils_3 = require("./utils");
|
|
8
|
+
class ImplementationProviderImpl {
|
|
9
|
+
constructor(lsAndTsDocResolver) {
|
|
10
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
11
|
+
}
|
|
12
|
+
async getImplementation(document, position, cancellationToken) {
|
|
13
|
+
const { tsDoc, lang, lsContainer } = await this.lsAndTsDocResolver.getLSAndTSDoc(document);
|
|
14
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
|
|
18
|
+
const implementations = lang.getImplementationAtPosition(tsDoc.filePath, offset);
|
|
19
|
+
const snapshots = new utils_3.SnapshotMap(this.lsAndTsDocResolver, lsContainer);
|
|
20
|
+
snapshots.set(tsDoc.filePath, tsDoc);
|
|
21
|
+
if (!implementations) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const result = await Promise.all(implementations.map(async (implementation) => {
|
|
25
|
+
let snapshot = await snapshots.retrieve(implementation.fileName);
|
|
26
|
+
// Go from generated $store to store if user wants to find implementation for $store
|
|
27
|
+
if ((0, utils_3.isTextSpanInGeneratedCode)(snapshot.getFullText(), implementation.textSpan)) {
|
|
28
|
+
if (!(0, utils_3.is$storeVariableIn$storeDeclaration)(snapshot.getFullText(), implementation.textSpan.start)) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// there will be exactly one definition, the store
|
|
32
|
+
implementation = lang.getImplementationAtPosition(tsDoc.filePath, tsDoc.getFullText().indexOf(');', implementation.textSpan.start) - 1)[0];
|
|
33
|
+
snapshot = await snapshots.retrieve(implementation.fileName);
|
|
34
|
+
}
|
|
35
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const location = (0, documents_1.mapLocationToOriginal)(snapshot, (0, utils_2.convertRange)(snapshot, implementation.textSpan));
|
|
39
|
+
if (location.range.start.line >= 0 && location.range.end.line >= 0) {
|
|
40
|
+
return location;
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
return result.filter(utils_1.isNotNullOrUndefined);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.ImplementationProviderImpl = ImplementationProviderImpl;
|
|
47
|
+
//# sourceMappingURL=ImplementationProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImplementationProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/ImplementationProvider.ts"],"names":[],"mappings":";;;AACA,sDAAyE;AACzE,0CAAsD;AAGtD,oCAAwC;AACxC,mCAIiB;AAEjB,MAAa,0BAA0B;IACnC,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE,KAAK,CAAC,iBAAiB,CACnB,QAAkB,EAClB,QAAkB,EAClB,iBAAqC;QAErC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE3F,IAAI,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEjF,MAAM,SAAS,GAAG,IAAI,mBAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACxE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YACzC,IAAI,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEjE,oFAAoF;YACpF,IAAI,IAAA,iCAAyB,EAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7E,IACI,CAAC,IAAA,2CAAmC,EAChC,QAAQ,CAAC,WAAW,EAAE,EACtB,cAAc,CAAC,QAAQ,CAAC,KAAK,CAChC,EACH,CAAC;oBACC,OAAO;gBACX,CAAC;gBACD,kDAAkD;gBAClD,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAC7C,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CACtE,CAAC,CAAC,CAAC,CAAC;gBACN,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,MAAM,QAAQ,GAAG,IAAA,iCAAqB,EAClC,QAAQ,EACR,IAAA,oBAAY,EAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,CAClD,CAAC;YAEF,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;gBACjE,OAAO,QAAQ,CAAC;YACpB,CAAC;QACL,CAAC,CAAC,CACL,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,CAAC,4BAAoB,CAAC,CAAC;IAC/C,CAAC;CACJ;AA/DD,gEA+DC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CancellationToken } from 'vscode-languageserver';
|
|
2
|
+
import { Range, InlayHint } from 'vscode-languageserver-types';
|
|
3
|
+
import { Document } from '../../../lib/documents';
|
|
4
|
+
import { InlayHintProvider } from '../../interfaces';
|
|
5
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
6
|
+
export declare class InlayHintProviderImpl implements InlayHintProvider {
|
|
7
|
+
private readonly lsAndTsDocResolver;
|
|
8
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
9
|
+
getInlayHints(document: Document, range: Range, cancellationToken?: CancellationToken): Promise<InlayHint[] | null>;
|
|
10
|
+
private areInlayHintsEnabled;
|
|
11
|
+
private convertToTargetTextSpan;
|
|
12
|
+
private convertInlayHintLabelParts;
|
|
13
|
+
private getOriginalPosition;
|
|
14
|
+
private convertInlayHintKind;
|
|
15
|
+
private isSvelte2tsxFunctionHints;
|
|
16
|
+
private isGeneratedVariableTypeHint;
|
|
17
|
+
/** `true` if is one of the `async () => {...}` functions svelte2tsx generates */
|
|
18
|
+
private isGeneratedAsyncFunctionReturnType;
|
|
19
|
+
private isGeneratedFunctionReturnType;
|
|
20
|
+
private getTypeAnnotationPosition;
|
|
21
|
+
private checkGeneratedFunctionHintWithSource;
|
|
22
|
+
}
|