@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,17 @@
|
|
|
1
|
+
import { Position, DocumentHighlight } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { Document } from '../../../lib/documents';
|
|
3
|
+
import { DocumentHighlightProvider } from '../../interfaces';
|
|
4
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
5
|
+
export declare class DocumentHighlightProviderImpl implements DocumentHighlightProvider {
|
|
6
|
+
private readonly lsAndTsDocResolver;
|
|
7
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
8
|
+
findDocumentHighlight(document: Document, position: Position): Promise<DocumentHighlight[] | null>;
|
|
9
|
+
private convertHighlightKind;
|
|
10
|
+
private getSvelteDocumentHighlight;
|
|
11
|
+
private findCandidateSvelteTag;
|
|
12
|
+
private getTagHighlight;
|
|
13
|
+
private getBlockHighlight;
|
|
14
|
+
private getElseHighlightsForIfBlock;
|
|
15
|
+
private getAwaitBlockHighlight;
|
|
16
|
+
private notInGeneratedCode;
|
|
17
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
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.DocumentHighlightProviderImpl = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
9
|
+
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
10
|
+
const documents_1 = require("../../../lib/documents");
|
|
11
|
+
const utils_1 = require("../../../utils");
|
|
12
|
+
const utils_2 = require("../utils");
|
|
13
|
+
const utils_3 = require("./utils");
|
|
14
|
+
const svelte_ast_utils_1 = require("../svelte-ast-utils");
|
|
15
|
+
class DocumentHighlightProviderImpl {
|
|
16
|
+
constructor(lsAndTsDocResolver) {
|
|
17
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
18
|
+
}
|
|
19
|
+
async findDocumentHighlight(document, position) {
|
|
20
|
+
const { tsDoc } = await this.lsAndTsDocResolver.getLsForSyntheticOperations(document);
|
|
21
|
+
const svelteResult = await this.getSvelteDocumentHighlight(document, tsDoc, position);
|
|
22
|
+
if (svelteResult) {
|
|
23
|
+
return svelteResult;
|
|
24
|
+
}
|
|
25
|
+
const { lang } = await this.lsAndTsDocResolver.getLSAndTSDoc(document);
|
|
26
|
+
const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
|
|
27
|
+
const highlights = lang
|
|
28
|
+
.getDocumentHighlights(tsDoc.filePath, offset, [tsDoc.filePath])
|
|
29
|
+
?.filter((highlight) => highlight.fileName === tsDoc.filePath);
|
|
30
|
+
if (!highlights?.length) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const result = (0, utils_1.flatten)(highlights.map((highlight) => highlight.highlightSpans))
|
|
34
|
+
.filter(this.notInGeneratedCode(tsDoc.getFullText()))
|
|
35
|
+
.map((highlight) => vscode_languageserver_protocol_1.DocumentHighlight.create((0, utils_2.convertToLocationRange)(tsDoc, highlight.textSpan), this.convertHighlightKind(highlight)))
|
|
36
|
+
.filter((highlight) => !(0, utils_1.isSamePosition)(highlight.range.start, highlight.range.end));
|
|
37
|
+
if (!result.length) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
convertHighlightKind(highlight) {
|
|
43
|
+
return highlight.kind === typescript_1.default.HighlightSpanKind.writtenReference
|
|
44
|
+
? vscode_languageserver_types_1.DocumentHighlightKind.Write
|
|
45
|
+
: vscode_languageserver_types_1.DocumentHighlightKind.Read;
|
|
46
|
+
}
|
|
47
|
+
async getSvelteDocumentHighlight(document, tsDoc, position) {
|
|
48
|
+
if ((0, documents_1.inStyleOrScript)(document, position)) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const offset = document.offsetAt(position);
|
|
52
|
+
const offsetStart = Math.max(offset - 10, 0);
|
|
53
|
+
const charactersAroundOffset = document
|
|
54
|
+
.getText()
|
|
55
|
+
// use last 10 and next 10 characters, should cover 99% of all cases
|
|
56
|
+
.substr(offsetStart, 20);
|
|
57
|
+
if (!['#', '/', ':', '@', 'then', 'catch'].some((keyword) => charactersAroundOffset.includes(keyword))) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const candidate = this.findCandidateSvelteTag(tsDoc, offset);
|
|
61
|
+
if (!candidate) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
if (candidate.type.endsWith('Tag')) {
|
|
65
|
+
return this.getTagHighlight(offset, document, candidate);
|
|
66
|
+
}
|
|
67
|
+
if (candidate.type.endsWith('Block')) {
|
|
68
|
+
return this.getBlockHighlight(offset, document, candidate);
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
findCandidateSvelteTag(tsDoc, offset) {
|
|
73
|
+
let candidate;
|
|
74
|
+
const subBlocks = ['ThenBlock', 'CatchBlock', 'PendingBlock', 'ElseBlock'];
|
|
75
|
+
tsDoc.walkSvelteAst({
|
|
76
|
+
enter(node, parent, key) {
|
|
77
|
+
if (node.type === 'Fragment') {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const templateNode = node;
|
|
81
|
+
const isWithin = templateNode.start <= offset && templateNode.end >= offset;
|
|
82
|
+
const canSkip = !isWithin ||
|
|
83
|
+
key === 'expression' ||
|
|
84
|
+
key === 'context' ||
|
|
85
|
+
((parent.type === 'InlineComponent' || parent.type === 'Element') &&
|
|
86
|
+
key !== 'children');
|
|
87
|
+
if (canSkip) {
|
|
88
|
+
this.skip();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (node.type.endsWith('Tag')) {
|
|
92
|
+
candidate = templateNode;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// don't use sub-blocks so we can highlight the whole block
|
|
96
|
+
if (node.type.endsWith('Block') && !subBlocks.includes(node.type)) {
|
|
97
|
+
if (
|
|
98
|
+
// else if
|
|
99
|
+
node.type === 'IfBlock' &&
|
|
100
|
+
parent.type === 'ElseBlock' &&
|
|
101
|
+
parent.start === node.start) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
candidate = templateNode;
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return candidate;
|
|
110
|
+
}
|
|
111
|
+
getTagHighlight(offset, document, candidate) {
|
|
112
|
+
const name = candidate.type === 'RawMustacheTag'
|
|
113
|
+
? 'html'
|
|
114
|
+
: candidate.type.replace('Tag', '').toLocaleLowerCase();
|
|
115
|
+
const startTag = '@' + name;
|
|
116
|
+
const indexOfName = document.getText().indexOf(startTag, candidate.start);
|
|
117
|
+
if (indexOfName < 0 || indexOfName > offset || candidate.start + startTag.length < offset) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return [
|
|
121
|
+
{
|
|
122
|
+
kind: vscode_languageserver_types_1.DocumentHighlightKind.Read,
|
|
123
|
+
range: vscode_languageserver_types_1.Range.create(document.positionAt(indexOfName), document.positionAt(indexOfName + startTag.length))
|
|
124
|
+
}
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
getBlockHighlight(offset, document, candidate) {
|
|
128
|
+
const name = candidate.type.replace('Block', '').toLowerCase();
|
|
129
|
+
const startTag = '#' + name;
|
|
130
|
+
const startTagStart = document.getText().indexOf(startTag, candidate.start);
|
|
131
|
+
if (startTagStart < 0) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
const ranges = [];
|
|
135
|
+
ranges.push([startTagStart, startTagStart + startTag.length]);
|
|
136
|
+
const content = document.getText();
|
|
137
|
+
const endTag = '/' + name;
|
|
138
|
+
const endTagStart = content.lastIndexOf(endTag, candidate.end);
|
|
139
|
+
if (endTagStart < startTagStart) {
|
|
140
|
+
return null; // can happen in loose parser mode for unclosed tags
|
|
141
|
+
}
|
|
142
|
+
ranges.push([endTagStart, endTagStart + endTag.length]);
|
|
143
|
+
if (candidate.type === 'EachBlock' && candidate.else) {
|
|
144
|
+
const elseStart = content.lastIndexOf(':else', candidate.else.start);
|
|
145
|
+
ranges.push([elseStart, elseStart + ':else'.length]);
|
|
146
|
+
}
|
|
147
|
+
ranges.push(...this.getElseHighlightsForIfBlock(candidate, content), ...this.getAwaitBlockHighlight(candidate, content));
|
|
148
|
+
if (!ranges.some(([start, end]) => offset >= start && offset <= end)) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
return ranges.map(([start, end]) => ({
|
|
152
|
+
range: vscode_languageserver_types_1.Range.create(document.positionAt(start), document.positionAt(end)),
|
|
153
|
+
kind: vscode_languageserver_types_1.DocumentHighlightKind.Read
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
getElseHighlightsForIfBlock(candidate, content) {
|
|
157
|
+
if (candidate.type !== 'IfBlock' || !candidate.else) {
|
|
158
|
+
return [];
|
|
159
|
+
}
|
|
160
|
+
const ranges = new Map();
|
|
161
|
+
(0, svelte_ast_utils_1.walkSvelteAst)(candidate.else, {
|
|
162
|
+
enter(node) {
|
|
163
|
+
const templateNode = node;
|
|
164
|
+
if (templateNode.type === 'IfBlock' && templateNode.elseif) {
|
|
165
|
+
const elseIfStart = content.lastIndexOf(':else if', templateNode.expression.start);
|
|
166
|
+
if (elseIfStart > 0) {
|
|
167
|
+
ranges.set(elseIfStart, [elseIfStart, elseIfStart + ':else if'.length]);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (templateNode.type === 'ElseBlock') {
|
|
171
|
+
const elseStart = content.lastIndexOf(':else', templateNode.start);
|
|
172
|
+
if (elseStart > 0 &&
|
|
173
|
+
content.slice(elseStart, elseStart + ':else if'.length) !== ':else if') {
|
|
174
|
+
ranges.set(elseStart, [elseStart, elseStart + ':else'.length]);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
return Array.from(ranges.values());
|
|
180
|
+
}
|
|
181
|
+
getAwaitBlockHighlight(candidate, content) {
|
|
182
|
+
if (candidate.type !== 'AwaitBlock' || (candidate.then.skip && candidate.catch.skip)) {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
const ranges = [];
|
|
186
|
+
if (candidate.value) {
|
|
187
|
+
const thenKeyword = candidate.pending.skip ? 'then' : ':then';
|
|
188
|
+
const thenStart = content.lastIndexOf(thenKeyword, candidate.value.start);
|
|
189
|
+
ranges.push([thenStart, thenStart + thenKeyword.length]);
|
|
190
|
+
}
|
|
191
|
+
// {#await promise catch error} or {:catch error}
|
|
192
|
+
if (candidate.error) {
|
|
193
|
+
const catchKeyword = candidate.pending.skip && candidate.then.skip ? 'catch' : ':catch';
|
|
194
|
+
const catchStart = content.lastIndexOf(catchKeyword, candidate.error.start);
|
|
195
|
+
ranges.push([catchStart, catchStart + catchKeyword.length]);
|
|
196
|
+
}
|
|
197
|
+
else if (!candidate.catch.skip) {
|
|
198
|
+
// {:catch}
|
|
199
|
+
const catchStart = content.indexOf(':catch', candidate.catch.start);
|
|
200
|
+
ranges.push([catchStart, catchStart + ':catch'.length]);
|
|
201
|
+
}
|
|
202
|
+
return ranges;
|
|
203
|
+
}
|
|
204
|
+
notInGeneratedCode(text) {
|
|
205
|
+
return (ref) => {
|
|
206
|
+
return !(0, utils_3.isInGeneratedCode)(text, ref.textSpan.start, ref.textSpan.start + ref.textSpan.length);
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.DocumentHighlightProviderImpl = DocumentHighlightProviderImpl;
|
|
211
|
+
//# sourceMappingURL=DocumentHighlightProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentHighlightProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/DocumentHighlightProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Location } from 'vscode-languageserver';
|
|
2
|
+
import { FindComponentReferencesProvider } from '../../interfaces';
|
|
3
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
4
|
+
export declare class FindComponentReferencesProviderImpl implements FindComponentReferencesProvider {
|
|
5
|
+
private readonly lsAndTsDocResolver;
|
|
6
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
7
|
+
findComponentReferences(uri: string): Promise<Location[] | null>;
|
|
8
|
+
private isEndTag;
|
|
9
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FindComponentReferencesProviderImpl = void 0;
|
|
4
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
const DocumentSnapshot_1 = require("../DocumentSnapshot");
|
|
7
|
+
const utils_2 = require("../utils");
|
|
8
|
+
const utils_3 = require("./utils");
|
|
9
|
+
class FindComponentReferencesProviderImpl {
|
|
10
|
+
constructor(lsAndTsDocResolver) {
|
|
11
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
12
|
+
}
|
|
13
|
+
async findComponentReferences(uri) {
|
|
14
|
+
// No document available, just the uri, because it could be called on an unopened file
|
|
15
|
+
const fileName = (0, utils_1.urlToPath)(uri);
|
|
16
|
+
if (!fileName) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const lsContainer = await this.lsAndTsDocResolver.getTSService(fileName);
|
|
20
|
+
const lang = lsContainer.getService();
|
|
21
|
+
const tsDoc = await this.lsAndTsDocResolver.getOrCreateSnapshot(fileName);
|
|
22
|
+
if (!(tsDoc instanceof DocumentSnapshot_1.SvelteDocumentSnapshot)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const references = lang.findReferences(tsDoc.filePath, (0, utils_2.offsetOfGeneratedComponentExport)(tsDoc));
|
|
26
|
+
if (!references) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const snapshots = new utils_3.SnapshotMap(this.lsAndTsDocResolver, lsContainer);
|
|
30
|
+
snapshots.set(tsDoc.filePath, tsDoc);
|
|
31
|
+
const locations = await Promise.all((0, utils_1.flatten)(references.map((ref) => ref.references)).map(async (ref) => {
|
|
32
|
+
if (ref.isDefinition) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const snapshot = await snapshots.retrieve(ref.fileName);
|
|
36
|
+
if ((0, utils_3.isTextSpanInGeneratedCode)(snapshot.getFullText(), ref.textSpan)) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const refLocation = vscode_languageserver_1.Location.create((0, utils_1.pathToUrl)(ref.fileName), (0, utils_2.convertToLocationRange)(snapshot, ref.textSpan));
|
|
40
|
+
//Only report starting tags
|
|
41
|
+
if (this.isEndTag(refLocation, snapshot)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
// Some references are in generated code but not wrapped with explicit ignore comments.
|
|
45
|
+
// These show up as zero-length ranges, so filter them out.
|
|
46
|
+
if (!(0, utils_2.hasNonZeroRange)(refLocation)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return refLocation;
|
|
50
|
+
}));
|
|
51
|
+
return locations.filter(utils_1.isNotNullOrUndefined);
|
|
52
|
+
}
|
|
53
|
+
isEndTag(element, snapshot) {
|
|
54
|
+
if (!(snapshot instanceof DocumentSnapshot_1.SvelteDocumentSnapshot)) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const testEndTagRange = vscode_languageserver_1.Range.create(vscode_languageserver_1.Position.create(element.range.start.line, element.range.start.character - 1), element.range.end);
|
|
58
|
+
const text = snapshot.getOriginalText(testEndTagRange);
|
|
59
|
+
if (text.substring(0, 1) == '/') {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.FindComponentReferencesProviderImpl = FindComponentReferencesProviderImpl;
|
|
66
|
+
//# sourceMappingURL=FindComponentReferencesProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FindComponentReferencesProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/FindComponentReferencesProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Location } from 'vscode-languageserver';
|
|
2
|
+
import { FileReferencesProvider } from '../../interfaces';
|
|
3
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
4
|
+
export declare class FindFileReferencesProviderImpl implements FileReferencesProvider {
|
|
5
|
+
private readonly lsAndTsDocResolver;
|
|
6
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
7
|
+
fileReferences(uri: string): Promise<Location[] | null>;
|
|
8
|
+
private getSnapshotForPath;
|
|
9
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FindFileReferencesProviderImpl = void 0;
|
|
4
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
5
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const utils_2 = require("./utils");
|
|
8
|
+
const utils_3 = require("../../../utils");
|
|
9
|
+
class FindFileReferencesProviderImpl {
|
|
10
|
+
constructor(lsAndTsDocResolver) {
|
|
11
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
12
|
+
}
|
|
13
|
+
async fileReferences(uri) {
|
|
14
|
+
const u = vscode_uri_1.URI.parse(uri);
|
|
15
|
+
const fileName = u.fsPath;
|
|
16
|
+
const lsContainer = await this.lsAndTsDocResolver.getTSService(fileName);
|
|
17
|
+
const lang = lsContainer.getService();
|
|
18
|
+
const tsDoc = await this.getSnapshotForPath(fileName);
|
|
19
|
+
const references = lang.getFileReferences(fileName);
|
|
20
|
+
if (!references) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const snapshots = new utils_2.SnapshotMap(this.lsAndTsDocResolver, lsContainer);
|
|
24
|
+
snapshots.set(tsDoc.filePath, tsDoc);
|
|
25
|
+
const locations = await Promise.all(references.map(async (ref) => {
|
|
26
|
+
const snapshot = await snapshots.retrieve(ref.fileName);
|
|
27
|
+
return vscode_languageserver_1.Location.create((0, utils_3.pathToUrl)(ref.fileName), (0, utils_1.convertToLocationRange)(snapshot, ref.textSpan));
|
|
28
|
+
}));
|
|
29
|
+
// Some references are in generated code but not wrapped with explicit ignore comments.
|
|
30
|
+
// These show up as zero-length ranges, so filter them out.
|
|
31
|
+
return locations.filter(utils_1.hasNonZeroRange);
|
|
32
|
+
}
|
|
33
|
+
async getSnapshotForPath(path) {
|
|
34
|
+
return this.lsAndTsDocResolver.getOrCreateSnapshot(path);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.FindFileReferencesProviderImpl = FindFileReferencesProviderImpl;
|
|
38
|
+
//# sourceMappingURL=FindFileReferencesProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FindFileReferencesProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/FindFileReferencesProvider.ts"],"names":[],"mappings":";;;AAAA,iEAAiD;AACjD,2CAAiC;AAGjC,oCAAmE;AACnE,mCAAsC;AACtC,0CAA2C;AAE3C,MAAa,8BAA8B;IACvC,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE,KAAK,CAAC,cAAc,CAAC,GAAW;QAC5B,MAAM,CAAC,GAAG,gBAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;QAE1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,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,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACzB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAExD,OAAO,gCAAQ,CAAC,MAAM,CAClB,IAAA,iBAAS,EAAC,GAAG,CAAC,QAAQ,CAAC,EACvB,IAAA,8BAAsB,EAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CACjD,CAAC;QACN,CAAC,CAAC,CACL,CAAC;QACF,uFAAuF;QACvF,2DAA2D;QAC3D,OAAO,SAAS,CAAC,MAAM,CAAC,uBAAe,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAY;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;CACJ;AAtCD,wEAsCC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CancellationToken, Location, Position, ReferenceContext } from 'vscode-languageserver';
|
|
2
|
+
import { Document } from '../../../lib/documents';
|
|
3
|
+
import { FindComponentReferencesProvider, FindReferencesProvider } from '../../interfaces';
|
|
4
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
5
|
+
export declare class FindReferencesProviderImpl implements FindReferencesProvider {
|
|
6
|
+
private readonly lsAndTsDocResolver;
|
|
7
|
+
private readonly componentReferencesProvider;
|
|
8
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver, componentReferencesProvider: FindComponentReferencesProvider);
|
|
9
|
+
findReferences(document: Document, position: Position, context: ReferenceContext, cancellationToken?: CancellationToken): Promise<Location[] | null>;
|
|
10
|
+
private isScriptStartOrEndTag;
|
|
11
|
+
private isPositionForComponentCodeLens;
|
|
12
|
+
/**
|
|
13
|
+
* If references of a $store are searched, also find references for the corresponding store
|
|
14
|
+
* and vice versa.
|
|
15
|
+
*/
|
|
16
|
+
private getStoreReferences;
|
|
17
|
+
private checkIfHasAliasedComponentReference;
|
|
18
|
+
private mapReference;
|
|
19
|
+
private getLSAndTSDoc;
|
|
20
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
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.FindReferencesProviderImpl = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const utils_1 = require("../../../utils");
|
|
9
|
+
const utils_2 = require("../utils");
|
|
10
|
+
const utils_3 = require("./utils");
|
|
11
|
+
class FindReferencesProviderImpl {
|
|
12
|
+
constructor(lsAndTsDocResolver, componentReferencesProvider) {
|
|
13
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
14
|
+
this.componentReferencesProvider = componentReferencesProvider;
|
|
15
|
+
}
|
|
16
|
+
async findReferences(document, position, context, cancellationToken) {
|
|
17
|
+
if (this.isPositionForComponentCodeLens(position) ||
|
|
18
|
+
this.isScriptStartOrEndTag(position, document)) {
|
|
19
|
+
return this.componentReferencesProvider.findComponentReferences(document.uri);
|
|
20
|
+
}
|
|
21
|
+
const { lang, tsDoc, lsContainer } = await this.getLSAndTSDoc(document);
|
|
22
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
|
|
26
|
+
const rawReferences = lang.findReferences(tsDoc.filePath, tsDoc.offsetAt(tsDoc.getGeneratedPosition(position)));
|
|
27
|
+
if (!rawReferences) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const snapshots = new utils_3.SnapshotMap(this.lsAndTsDocResolver, lsContainer);
|
|
31
|
+
snapshots.set(tsDoc.filePath, tsDoc);
|
|
32
|
+
if (rawReferences.some((ref) => ref.definition.kind === typescript_1.default.ScriptElementKind.alias)) {
|
|
33
|
+
const componentReferences = await this.checkIfHasAliasedComponentReference(offset, tsDoc, lang);
|
|
34
|
+
if (componentReferences?.length) {
|
|
35
|
+
return componentReferences;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const references = (0, utils_1.flatten)(rawReferences.map((ref) => ref.references));
|
|
39
|
+
references.push(...(await this.getStoreReferences(references, tsDoc, snapshots, lang, cancellationToken)));
|
|
40
|
+
const locations = await Promise.all(references.map(async (ref) => this.mapReference(ref, context, snapshots, cancellationToken)));
|
|
41
|
+
return (locations
|
|
42
|
+
.filter(utils_1.isNotNullOrUndefined)
|
|
43
|
+
// Possible $store references are added afterwards, sort for correct order
|
|
44
|
+
.sort(sortLocationByFileAndRange));
|
|
45
|
+
}
|
|
46
|
+
isScriptStartOrEndTag(position, document) {
|
|
47
|
+
if (!document.scriptInfo) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const { start, end } = document.scriptInfo.container;
|
|
51
|
+
const offset = document.offsetAt(position);
|
|
52
|
+
return ((offset >= start && offset <= start + '<script'.length) ||
|
|
53
|
+
(offset >= end - '</script>'.length && offset <= end));
|
|
54
|
+
}
|
|
55
|
+
isPositionForComponentCodeLens(position) {
|
|
56
|
+
return position.line === 0 && position.character === 0;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* If references of a $store are searched, also find references for the corresponding store
|
|
60
|
+
* and vice versa.
|
|
61
|
+
*/
|
|
62
|
+
async getStoreReferences(references, tsDoc, snapshots, lang, cancellationToken) {
|
|
63
|
+
// If user started finding references at $store, find references for store, too
|
|
64
|
+
let storeReferences = [];
|
|
65
|
+
const storeReference = references.find((ref) => (0, utils_1.normalizePath)(ref.fileName) === tsDoc.filePath &&
|
|
66
|
+
(0, utils_3.isTextSpanInGeneratedCode)(tsDoc.getFullText(), ref.textSpan) &&
|
|
67
|
+
(0, utils_3.is$storeVariableIn$storeDeclaration)(tsDoc.getFullText(), ref.textSpan.start));
|
|
68
|
+
if (storeReference) {
|
|
69
|
+
const additionalReferences = lang.findReferences(tsDoc.filePath, (0, utils_3.getStoreOffsetOf$storeDeclaration)(tsDoc.getFullText(), storeReference.textSpan.start)) || [];
|
|
70
|
+
storeReferences = (0, utils_1.flatten)(additionalReferences.map((ref) => ref.references));
|
|
71
|
+
}
|
|
72
|
+
// If user started finding references at store, find references for $store, too
|
|
73
|
+
// If user started finding references at $store, find references for $store in other files
|
|
74
|
+
const $storeReferences = [];
|
|
75
|
+
for (const ref of [...references, ...storeReferences]) {
|
|
76
|
+
const snapshot = await snapshots.retrieve(ref.fileName);
|
|
77
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
if (!((0, utils_3.isTextSpanInGeneratedCode)(snapshot.getFullText(), ref.textSpan) &&
|
|
81
|
+
(0, utils_3.isStoreVariableIn$storeDeclaration)(snapshot.getFullText(), ref.textSpan.start))) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (storeReference?.fileName === ref.fileName) {
|
|
85
|
+
// $store in X -> usages of store -> store in X -> we would add duplicate $store references
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const additionalReferences = lang.findReferences(snapshot.filePath, (0, utils_3.get$storeOffsetOf$storeDeclaration)(snapshot.getFullText(), ref.textSpan.start)) || [];
|
|
89
|
+
$storeReferences.push(...(0, utils_1.flatten)(additionalReferences.map((ref) => ref.references)));
|
|
90
|
+
}
|
|
91
|
+
return [...storeReferences, ...$storeReferences];
|
|
92
|
+
}
|
|
93
|
+
async checkIfHasAliasedComponentReference(offset, tsDoc, lang) {
|
|
94
|
+
const definitions = lang.getDefinitionAtPosition(tsDoc.filePath, offset);
|
|
95
|
+
if (!definitions?.length) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const nonAliasDefinitions = definitions.filter((definition) => (0, utils_2.isGeneratedSvelteComponentName)(definition.name));
|
|
99
|
+
const references = await Promise.all(nonAliasDefinitions.map((definition) => this.componentReferencesProvider.findComponentReferences((0, utils_1.pathToUrl)(definition.fileName))));
|
|
100
|
+
const flattened = [];
|
|
101
|
+
for (const ref of references) {
|
|
102
|
+
if (ref) {
|
|
103
|
+
const tmp = []; // perf optimization: we know each iteration has unique references
|
|
104
|
+
for (const r of ref) {
|
|
105
|
+
const exists = flattened.some((f) => f.uri === r.uri &&
|
|
106
|
+
f.range.start.line === r.range.start.line &&
|
|
107
|
+
f.range.start.character === r.range.start.character);
|
|
108
|
+
if (!exists) {
|
|
109
|
+
tmp.push(r);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
flattened.push(...tmp);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return flattened;
|
|
116
|
+
}
|
|
117
|
+
async mapReference(ref, context, snapshots, cancellationToken) {
|
|
118
|
+
if (!context.includeDeclaration && ref.isDefinition) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const snapshot = await snapshots.retrieve(ref.fileName);
|
|
122
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
if ((0, utils_3.isTextSpanInGeneratedCode)(snapshot.getFullText(), ref.textSpan)) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
// TODO we should deduplicate if we support finding references from multiple language service
|
|
129
|
+
const location = (0, utils_2.convertToLocationForReferenceOrDefinition)(snapshot, ref.textSpan);
|
|
130
|
+
// Some references are in generated code but not wrapped with explicit ignore comments.
|
|
131
|
+
// These show up as zero-length ranges, so filter them out.
|
|
132
|
+
if (!(0, utils_2.hasNonZeroRange)(location)) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return location;
|
|
136
|
+
}
|
|
137
|
+
async getLSAndTSDoc(document) {
|
|
138
|
+
return this.lsAndTsDocResolver.getLSAndTSDoc(document);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.FindReferencesProviderImpl = FindReferencesProviderImpl;
|
|
142
|
+
function sortLocationByFileAndRange(l1, l2) {
|
|
143
|
+
const localeCompare = l1.uri.localeCompare(l2.uri);
|
|
144
|
+
return localeCompare === 0
|
|
145
|
+
? (l1.range.start.line - l2.range.start.line) * 10000 +
|
|
146
|
+
(l1.range.start.character - l2.range.start.character)
|
|
147
|
+
: localeCompare;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=FindReferencesProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FindReferencesProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/FindReferencesProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FoldingRange } from 'vscode-languageserver-types';
|
|
2
|
+
import { Document } from '../../../lib/documents';
|
|
3
|
+
import { FoldingRangeProvider } from '../../interfaces';
|
|
4
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
5
|
+
import { LSConfigManager } from '../../../ls-config';
|
|
6
|
+
export declare class FoldingRangeProviderImpl implements FoldingRangeProvider {
|
|
7
|
+
private readonly lsAndTsDocResolver;
|
|
8
|
+
private readonly configManager;
|
|
9
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver, configManager: LSConfigManager);
|
|
10
|
+
private readonly foldEndPairCharacters;
|
|
11
|
+
getFoldingRanges(document: Document): Promise<FoldingRange[]>;
|
|
12
|
+
private mapToOriginalRange;
|
|
13
|
+
/**
|
|
14
|
+
* Doing this here with the svelte2tsx's svelte ast is slightly
|
|
15
|
+
* less prone to error and faster than
|
|
16
|
+
* using the svelte ast in the svelte plugins.
|
|
17
|
+
*/
|
|
18
|
+
private collectSvelteBlockFolding;
|
|
19
|
+
private getIfBlockFolding;
|
|
20
|
+
private getStartForNodeWithExpression;
|
|
21
|
+
private createFoldingRange;
|
|
22
|
+
private convertOutliningSpan;
|
|
23
|
+
private getFoldingRangeKind;
|
|
24
|
+
private adjustFoldingEndToNotHideEnd;
|
|
25
|
+
private getSvelteTagFoldingIfParserError;
|
|
26
|
+
private getHtmlTemplateRangesForChecking;
|
|
27
|
+
private previousLineOfEndLine;
|
|
28
|
+
}
|