@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,116 @@
|
|
|
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.SemanticTokensProviderImpl = 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 svelte2tsx_1 = require("svelte2tsx");
|
|
13
|
+
const CONTENT_LENGTH_LIMIT = 50000;
|
|
14
|
+
class SemanticTokensProviderImpl {
|
|
15
|
+
constructor(lsAndTsDocResolver) {
|
|
16
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
17
|
+
}
|
|
18
|
+
async getSemanticTokens(textDocument, range, cancellationToken) {
|
|
19
|
+
const { lang, tsDoc } = await this.lsAndTsDocResolver.getLSAndTSDoc(textDocument);
|
|
20
|
+
// for better performance, don't do full-file semantic tokens when the file is too big
|
|
21
|
+
if ((!range && tsDoc.getLength() > CONTENT_LENGTH_LIMIT) ||
|
|
22
|
+
cancellationToken?.isCancellationRequested) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
// No script tags -> nothing to analyse semantic tokens for
|
|
26
|
+
if (!textDocument.scriptInfo && !textDocument.moduleScriptInfo) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const textSpan = range
|
|
30
|
+
? (0, utils_1.convertToTextSpan)(range, tsDoc)
|
|
31
|
+
: {
|
|
32
|
+
start: 0,
|
|
33
|
+
length: tsDoc.parserError
|
|
34
|
+
? tsDoc.getLength()
|
|
35
|
+
: // This is appended by svelte2tsx, there's nothing mappable afterwards
|
|
36
|
+
tsDoc.getFullText().lastIndexOf('return { props:') || tsDoc.getLength()
|
|
37
|
+
};
|
|
38
|
+
const { spans } = lang.getEncodedSemanticClassifications(tsDoc.filePath, textSpan, typescript_1.default.SemanticClassificationFormat.TwentyTwenty);
|
|
39
|
+
const data = [];
|
|
40
|
+
let index = 0;
|
|
41
|
+
while (index < spans.length) {
|
|
42
|
+
// [start, length, encodedClassification, start2, length2, encodedClassification2]
|
|
43
|
+
const generatedOffset = spans[index++];
|
|
44
|
+
const generatedLength = spans[index++];
|
|
45
|
+
const encodedClassification = spans[index++];
|
|
46
|
+
const classificationType = this.getTokenTypeFromClassification(encodedClassification);
|
|
47
|
+
if (classificationType < 0) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const original = this.map(textDocument, tsDoc, generatedOffset, generatedLength, encodedClassification, classificationType);
|
|
51
|
+
// remove identifiers whose start and end mapped to the same location,
|
|
52
|
+
// like the svelte2tsx inserted render function,
|
|
53
|
+
// or reversed like Component.$on
|
|
54
|
+
if (!original || original[2] <= 0) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
data.push(original);
|
|
58
|
+
}
|
|
59
|
+
const sorted = data.sort((a, b) => {
|
|
60
|
+
const [lineA, charA] = a;
|
|
61
|
+
const [lineB, charB] = b;
|
|
62
|
+
return lineA - lineB || charA - charB;
|
|
63
|
+
});
|
|
64
|
+
const builder = new vscode_languageserver_1.SemanticTokensBuilder();
|
|
65
|
+
sorted.forEach((tokenData) => builder.push(...tokenData));
|
|
66
|
+
return builder.build();
|
|
67
|
+
}
|
|
68
|
+
map(document, snapshot, generatedOffset, generatedLength, encodedClassification, classificationType) {
|
|
69
|
+
const text = snapshot.getFullText();
|
|
70
|
+
if ((0, utils_2.isInGeneratedCode)(text, generatedOffset, generatedOffset + generatedLength) ||
|
|
71
|
+
(encodedClassification === 2817 /* top level function */ &&
|
|
72
|
+
text.substring(generatedOffset, generatedOffset + generatedLength) ===
|
|
73
|
+
svelte2tsx_1.internalHelpers.renderName)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const range = {
|
|
77
|
+
start: snapshot.positionAt(generatedOffset),
|
|
78
|
+
end: snapshot.positionAt(generatedOffset + generatedLength)
|
|
79
|
+
};
|
|
80
|
+
const { start: startPosition, end: endPosition } = (0, documents_1.mapRangeToOriginal)(snapshot, range);
|
|
81
|
+
if (startPosition.line < 0 || endPosition.line < 0) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const startOffset = document.offsetAt(startPosition);
|
|
85
|
+
const endOffset = document.offsetAt(endPosition);
|
|
86
|
+
// Ensure components in the template get no semantic highlighting
|
|
87
|
+
if ((classificationType === 0 /* TokenType.class */ ||
|
|
88
|
+
classificationType === 5 /* TokenType.type */ ||
|
|
89
|
+
classificationType === 6 /* TokenType.parameter */ ||
|
|
90
|
+
classificationType === 7 /* TokenType.variable */ ||
|
|
91
|
+
classificationType === 10 /* TokenType.function */) &&
|
|
92
|
+
snapshot.svelteNodeAt(startOffset)?.type === 'InlineComponent' &&
|
|
93
|
+
(document.getText().charCodeAt(startOffset - 1) === /* < */ 60 ||
|
|
94
|
+
document.getText().charCodeAt(startOffset - 1) === /* / */ 47)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
return [
|
|
98
|
+
startPosition.line,
|
|
99
|
+
startPosition.character,
|
|
100
|
+
endOffset - startOffset,
|
|
101
|
+
classificationType,
|
|
102
|
+
this.getTokenModifierFromClassification(encodedClassification)
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* TSClassification = (TokenType + 1) << TokenEncodingConsts.typeOffset + TokenModifier
|
|
107
|
+
*/
|
|
108
|
+
getTokenTypeFromClassification(tsClassification) {
|
|
109
|
+
return (tsClassification >> 8 /* TokenEncodingConsts.typeOffset */) - 1;
|
|
110
|
+
}
|
|
111
|
+
getTokenModifierFromClassification(tsClassification) {
|
|
112
|
+
return tsClassification & 255 /* TokenEncodingConsts.modifierMask */;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.SemanticTokensProviderImpl = SemanticTokensProviderImpl;
|
|
116
|
+
//# sourceMappingURL=SemanticTokensProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SemanticTokensProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/SemanticTokensProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Position, SignatureHelpContext, SignatureHelp, CancellationToken } from 'vscode-languageserver';
|
|
2
|
+
import { SignatureHelpProvider } from '../..';
|
|
3
|
+
import { Document } from '../../../lib/documents';
|
|
4
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
5
|
+
export declare class SignatureHelpProviderImpl implements SignatureHelpProvider {
|
|
6
|
+
private readonly lsAndTsDocResolver;
|
|
7
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
8
|
+
private static readonly triggerCharacters;
|
|
9
|
+
private static readonly retriggerCharacters;
|
|
10
|
+
getSignatureHelp(document: Document, position: Position, context: SignatureHelpContext | undefined, cancellationToken?: CancellationToken): Promise<SignatureHelp | null>;
|
|
11
|
+
private isReTrigger;
|
|
12
|
+
private isTriggerCharacter;
|
|
13
|
+
/**
|
|
14
|
+
* adopted from https://github.com/microsoft/vscode/blob/265a2f6424dfbd3a9788652c7d376a7991d049a3/extensions/typescript-language-features/src/languageFeatures/signatureHelp.ts#L103
|
|
15
|
+
*/
|
|
16
|
+
private toTsTriggerReason;
|
|
17
|
+
/**
|
|
18
|
+
* adopted from https://github.com/microsoft/vscode/blob/265a2f6424dfbd3a9788652c7d376a7991d049a3/extensions/typescript-language-features/src/languageFeatures/signatureHelp.ts#L73
|
|
19
|
+
*/
|
|
20
|
+
private toSignatureHelpInformation;
|
|
21
|
+
private isInSvelte2tsxGeneratedFunction;
|
|
22
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
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.SignatureHelpProviderImpl = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
9
|
+
const previewer_1 = require("../previewer");
|
|
10
|
+
class SignatureHelpProviderImpl {
|
|
11
|
+
constructor(lsAndTsDocResolver) {
|
|
12
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
13
|
+
}
|
|
14
|
+
async getSignatureHelp(document, position, context, cancellationToken) {
|
|
15
|
+
const { lang, tsDoc } = await this.lsAndTsDocResolver.getLSAndTSDoc(document);
|
|
16
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
|
|
20
|
+
const triggerReason = this.toTsTriggerReason(context);
|
|
21
|
+
const info = lang.getSignatureHelpItems(tsDoc.filePath, offset, triggerReason ? { triggerReason } : undefined);
|
|
22
|
+
if (!info ||
|
|
23
|
+
info.items.some((signature) => this.isInSvelte2tsxGeneratedFunction(signature))) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const signatures = info.items.map(this.toSignatureHelpInformation);
|
|
27
|
+
return {
|
|
28
|
+
signatures,
|
|
29
|
+
activeSignature: info.selectedItemIndex,
|
|
30
|
+
activeParameter: info.argumentIndex
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
isReTrigger(isRetrigger, triggerCharacter) {
|
|
34
|
+
return (isRetrigger &&
|
|
35
|
+
(this.isTriggerCharacter(triggerCharacter) ||
|
|
36
|
+
SignatureHelpProviderImpl.retriggerCharacters.includes(triggerCharacter)));
|
|
37
|
+
}
|
|
38
|
+
isTriggerCharacter(triggerCharacter) {
|
|
39
|
+
return SignatureHelpProviderImpl.triggerCharacters.includes(triggerCharacter);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* adopted from https://github.com/microsoft/vscode/blob/265a2f6424dfbd3a9788652c7d376a7991d049a3/extensions/typescript-language-features/src/languageFeatures/signatureHelp.ts#L103
|
|
43
|
+
*/
|
|
44
|
+
toTsTriggerReason(context) {
|
|
45
|
+
switch (context?.triggerKind) {
|
|
46
|
+
case vscode_languageserver_1.SignatureHelpTriggerKind.TriggerCharacter:
|
|
47
|
+
if (context.triggerCharacter) {
|
|
48
|
+
if (this.isReTrigger(context.isRetrigger, context.triggerCharacter)) {
|
|
49
|
+
return { kind: 'retrigger', triggerCharacter: context.triggerCharacter };
|
|
50
|
+
}
|
|
51
|
+
if (this.isTriggerCharacter(context.triggerCharacter)) {
|
|
52
|
+
return {
|
|
53
|
+
kind: 'characterTyped',
|
|
54
|
+
triggerCharacter: context.triggerCharacter
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return { kind: 'invoked' };
|
|
59
|
+
case vscode_languageserver_1.SignatureHelpTriggerKind.ContentChange:
|
|
60
|
+
return context.isRetrigger ? { kind: 'retrigger' } : { kind: 'invoked' };
|
|
61
|
+
case vscode_languageserver_1.SignatureHelpTriggerKind.Invoked:
|
|
62
|
+
default:
|
|
63
|
+
return { kind: 'invoked' };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* adopted from https://github.com/microsoft/vscode/blob/265a2f6424dfbd3a9788652c7d376a7991d049a3/extensions/typescript-language-features/src/languageFeatures/signatureHelp.ts#L73
|
|
68
|
+
*/
|
|
69
|
+
toSignatureHelpInformation(item) {
|
|
70
|
+
const [prefixLabel, separatorLabel, suffixLabel] = [
|
|
71
|
+
item.prefixDisplayParts,
|
|
72
|
+
item.separatorDisplayParts,
|
|
73
|
+
item.suffixDisplayParts
|
|
74
|
+
].map(typescript_1.default.displayPartsToString);
|
|
75
|
+
let textIndex = prefixLabel.length;
|
|
76
|
+
let signatureLabel = '';
|
|
77
|
+
const parameters = [];
|
|
78
|
+
const lastIndex = item.parameters.length - 1;
|
|
79
|
+
item.parameters.forEach((parameter, index) => {
|
|
80
|
+
const label = typescript_1.default.displayPartsToString(parameter.displayParts);
|
|
81
|
+
const startIndex = textIndex;
|
|
82
|
+
const endIndex = textIndex + label.length;
|
|
83
|
+
const doc = typescript_1.default.displayPartsToString(parameter.documentation);
|
|
84
|
+
signatureLabel += label;
|
|
85
|
+
parameters.push(vscode_languageserver_1.ParameterInformation.create([startIndex, endIndex], doc));
|
|
86
|
+
if (index < lastIndex) {
|
|
87
|
+
textIndex = endIndex + separatorLabel.length;
|
|
88
|
+
signatureLabel += separatorLabel;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
const signatureDocumentation = (0, previewer_1.getMarkdownDocumentation)(item.documentation, item.tags.filter((tag) => tag.name !== 'param'));
|
|
92
|
+
return {
|
|
93
|
+
label: prefixLabel + signatureLabel + suffixLabel,
|
|
94
|
+
documentation: signatureDocumentation
|
|
95
|
+
? {
|
|
96
|
+
value: signatureDocumentation,
|
|
97
|
+
kind: vscode_languageserver_1.MarkupKind.Markdown
|
|
98
|
+
}
|
|
99
|
+
: undefined,
|
|
100
|
+
parameters
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
isInSvelte2tsxGeneratedFunction(signatureHelpItem) {
|
|
104
|
+
return signatureHelpItem.prefixDisplayParts.some((part) => part.text.includes('__sveltets'));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.SignatureHelpProviderImpl = SignatureHelpProviderImpl;
|
|
108
|
+
SignatureHelpProviderImpl.triggerCharacters = ['(', ',', '<'];
|
|
109
|
+
SignatureHelpProviderImpl.retriggerCharacters = [')'];
|
|
110
|
+
//# sourceMappingURL=SignatureHelpProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignatureHelpProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/SignatureHelpProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Position, Location } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { Document } from '../../../lib/documents';
|
|
3
|
+
import { TypeDefinitionProvider } from '../../interfaces';
|
|
4
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
5
|
+
export declare class TypeDefinitionProviderImpl implements TypeDefinitionProvider {
|
|
6
|
+
private readonly lsAndTsDocResolver;
|
|
7
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver);
|
|
8
|
+
getTypeDefinition(document: Document, position: Position): Promise<Location[] | null>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeDefinitionProviderImpl = 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 TypeDefinitionProviderImpl {
|
|
9
|
+
constructor(lsAndTsDocResolver) {
|
|
10
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
11
|
+
}
|
|
12
|
+
async getTypeDefinition(document, position) {
|
|
13
|
+
const { tsDoc, lang, lsContainer } = await this.lsAndTsDocResolver.getLSAndTSDoc(document);
|
|
14
|
+
const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
|
|
15
|
+
const typeDefs = lang.getTypeDefinitionAtPosition(tsDoc.filePath, offset);
|
|
16
|
+
const snapshots = new utils_3.SnapshotMap(this.lsAndTsDocResolver, lsContainer);
|
|
17
|
+
snapshots.set(tsDoc.filePath, tsDoc);
|
|
18
|
+
if (!typeDefs) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const result = await Promise.all(typeDefs.map(async (typeDef) => {
|
|
22
|
+
const snapshot = await snapshots.retrieve(typeDef.fileName);
|
|
23
|
+
if ((0, utils_3.isTextSpanInGeneratedCode)(snapshot.getFullText(), typeDef.textSpan)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const location = (0, documents_1.mapLocationToOriginal)(snapshot, (0, utils_2.convertRange)(snapshot, typeDef.textSpan));
|
|
27
|
+
if (location.range.start.line >= 0 && location.range.end.line >= 0) {
|
|
28
|
+
return location;
|
|
29
|
+
}
|
|
30
|
+
}));
|
|
31
|
+
return result.filter(utils_1.isNotNullOrUndefined);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.TypeDefinitionProviderImpl = TypeDefinitionProviderImpl;
|
|
35
|
+
//# sourceMappingURL=TypeDefinitionProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeDefinitionProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/TypeDefinitionProvider.ts"],"names":[],"mappings":";;;AACA,sDAAyE;AACzE,0CAAsD;AAGtD,oCAAwC;AACxC,mCAAiE;AAEjE,MAAa,0BAA0B;IACnC,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE,KAAK,CAAC,iBAAiB,CAAC,QAAkB,EAAE,QAAkB;QAC1D,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1E,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,QAAQ,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE5D,IAAI,IAAA,iCAAyB,EAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtE,OAAO;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAA,iCAAqB,EAClC,QAAQ,EACR,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAC3C,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;AApCD,gEAoCC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TextDocumentEdit, WorkspaceEdit } from 'vscode-languageserver';
|
|
2
|
+
import { FileRename, UpdateImportsProvider } from '../../interfaces';
|
|
3
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
4
|
+
import { LanguageServiceContainer } from '../service';
|
|
5
|
+
export declare class UpdateImportsProviderImpl implements UpdateImportsProvider {
|
|
6
|
+
private readonly lsAndTsDocResolver;
|
|
7
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver, useCaseSensitiveFileNames: boolean);
|
|
8
|
+
private getCanonicalFileName;
|
|
9
|
+
updateImports(fileRename: FileRename): Promise<WorkspaceEdit | null>;
|
|
10
|
+
updateImportForSingleService(oldPath: string, newPath: string, lsContainer: LanguageServiceContainer, documentChanges: Map<string, TextDocumentEdit>): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
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.UpdateImportsProviderImpl = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
9
|
+
const documents_1 = require("../../../lib/documents");
|
|
10
|
+
const utils_1 = require("../../../utils");
|
|
11
|
+
const service_1 = require("../service");
|
|
12
|
+
const utils_2 = require("../utils");
|
|
13
|
+
const utils_3 = require("./utils");
|
|
14
|
+
class UpdateImportsProviderImpl {
|
|
15
|
+
constructor(lsAndTsDocResolver, useCaseSensitiveFileNames) {
|
|
16
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
17
|
+
this.getCanonicalFileName = (0, utils_1.createGetCanonicalFileName)(useCaseSensitiveFileNames);
|
|
18
|
+
}
|
|
19
|
+
async updateImports(fileRename) {
|
|
20
|
+
// TODO does this handle folder moves/renames correctly? old/new path isn't a file then
|
|
21
|
+
const oldPath = (0, utils_1.urlToPath)(fileRename.oldUri);
|
|
22
|
+
const newPath = (0, utils_1.urlToPath)(fileRename.newUri);
|
|
23
|
+
if (!oldPath || !newPath) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const services = [];
|
|
27
|
+
await (0, service_1.forAllServices)((ls) => {
|
|
28
|
+
services.push(ls);
|
|
29
|
+
});
|
|
30
|
+
const documentChanges = new Map();
|
|
31
|
+
for (const service of services) {
|
|
32
|
+
await this.updateImportForSingleService(oldPath, newPath, service, documentChanges);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
documentChanges: Array.from(documentChanges.values())
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async updateImportForSingleService(oldPath, newPath, lsContainer, documentChanges) {
|
|
39
|
+
const ls = lsContainer.getService();
|
|
40
|
+
const program = ls.getProgram();
|
|
41
|
+
if (!program) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const canonicalOldPath = this.getCanonicalFileName((0, utils_1.normalizePath)(oldPath));
|
|
45
|
+
const canonicalNewPath = this.getCanonicalFileName((0, utils_1.normalizePath)(newPath));
|
|
46
|
+
const hasFile = program.getSourceFiles().some((sf) => {
|
|
47
|
+
const normalizedFileName = this.getCanonicalFileName((0, utils_1.normalizePath)(sf.fileName));
|
|
48
|
+
return (normalizedFileName.startsWith(canonicalOldPath) ||
|
|
49
|
+
normalizedFileName.startsWith(canonicalNewPath));
|
|
50
|
+
});
|
|
51
|
+
if (!hasFile) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const oldPathTsProgramCasing = ls.getProgram()?.getSourceFile(oldPath)?.fileName ?? oldPath;
|
|
55
|
+
// `getEditsForFileRename` might take a while
|
|
56
|
+
const fileChanges = ls
|
|
57
|
+
.getEditsForFileRename(oldPathTsProgramCasing, newPath, {}, {})
|
|
58
|
+
// Assumption: Updating imports will not create new files, and to make sure just filter those out
|
|
59
|
+
// who - for whatever reason - might be new ones.
|
|
60
|
+
.filter((change) => !change.isNewFile || change.fileName === oldPathTsProgramCasing);
|
|
61
|
+
await this.lsAndTsDocResolver.updateSnapshotPath(oldPathTsProgramCasing, newPath);
|
|
62
|
+
const editInOldPath = fileChanges.find((change) => change.fileName.startsWith(oldPathTsProgramCasing) &&
|
|
63
|
+
(oldPathTsProgramCasing.includes(newPath) || !change.fileName.startsWith(newPath)));
|
|
64
|
+
const editInNewPath = fileChanges.find((change) => change.fileName.startsWith(newPath) &&
|
|
65
|
+
(newPath.includes(oldPathTsProgramCasing) ||
|
|
66
|
+
!change.fileName.startsWith(oldPathTsProgramCasing)));
|
|
67
|
+
const updateImportsChanges = fileChanges
|
|
68
|
+
.filter((change) => {
|
|
69
|
+
if ((0, utils_3.isKitTypePath)(change.fileName)) {
|
|
70
|
+
// These types are generated from the route files, so we don't want to update them
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (!editInOldPath || !editInNewPath) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
// If both present, take the one that has more text changes to it (more likely to be the correct one)
|
|
77
|
+
return editInOldPath.textChanges.length > editInNewPath.textChanges.length
|
|
78
|
+
? change !== editInNewPath
|
|
79
|
+
: change !== editInOldPath;
|
|
80
|
+
})
|
|
81
|
+
.map((change) => {
|
|
82
|
+
if (change === editInOldPath) {
|
|
83
|
+
// The language service might want to do edits to the old path, not the new path -> rewire it.
|
|
84
|
+
// If there is a better solution for this, please file a PR :)
|
|
85
|
+
change.fileName = change.fileName.replace(oldPathTsProgramCasing, newPath);
|
|
86
|
+
}
|
|
87
|
+
change.textChanges = change.textChanges.filter((textChange) =>
|
|
88
|
+
// Filter out changes to './$type' imports for Kit route files,
|
|
89
|
+
// you'll likely want these to stay as-is
|
|
90
|
+
!(0, utils_3.isKitTypePath)(textChange.newText) ||
|
|
91
|
+
!path_1.default.basename(change.fileName).startsWith('+'));
|
|
92
|
+
return change;
|
|
93
|
+
});
|
|
94
|
+
const docs = new utils_3.SnapshotMap(this.lsAndTsDocResolver, lsContainer);
|
|
95
|
+
await Promise.all(updateImportsChanges.map(async (change) => {
|
|
96
|
+
if (documentChanges.has(change.fileName)) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const snapshot = await docs.retrieve(change.fileName);
|
|
100
|
+
const edit = vscode_languageserver_1.TextDocumentEdit.create(vscode_languageserver_1.OptionalVersionedTextDocumentIdentifier.create(snapshot.getURL(), null), change.textChanges.map((edit) => {
|
|
101
|
+
const range = (0, documents_1.mapRangeToOriginal)(snapshot, (0, utils_2.convertRange)(snapshot, edit.span));
|
|
102
|
+
return vscode_languageserver_1.TextEdit.replace(range, edit.newText);
|
|
103
|
+
}));
|
|
104
|
+
documentChanges.set(change.fileName, edit);
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.UpdateImportsProviderImpl = UpdateImportsProviderImpl;
|
|
109
|
+
//# sourceMappingURL=UpdateImportsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateImportsProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/UpdateImportsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CancellationToken } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { WorkspaceSymbol } from 'vscode-languageserver-types';
|
|
3
|
+
import { LSConfigManager } from '../../../ls-config';
|
|
4
|
+
import { WorkspaceSymbolsProvider } from '../../interfaces';
|
|
5
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
6
|
+
export declare class WorkspaceSymbolsProviderImpl implements WorkspaceSymbolsProvider {
|
|
7
|
+
constructor(lsAndTsDocResolver: LSAndTSDocResolver, configManager: LSConfigManager);
|
|
8
|
+
private readonly configManager;
|
|
9
|
+
private readonly lsAndTsDocResolver;
|
|
10
|
+
getWorkspaceSymbols(query: string, cancellationToken?: CancellationToken): Promise<WorkspaceSymbol[] | null>;
|
|
11
|
+
private isGeneratedName;
|
|
12
|
+
private mapWorkspaceSymbol;
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* https://github.com/microsoft/TypeScript/blob/81c951894e93bdc37c6916f18adcd80de76679bc/src/server/session.ts#L2878
|
|
16
|
+
*/
|
|
17
|
+
private navigateToItemIsEqualTo;
|
|
18
|
+
/**
|
|
19
|
+
* Don't reuse our symbolKindFromString function, this should the same as the one in vscode
|
|
20
|
+
* so that vscode deduplicate the symbols from svelte and the typescript server.
|
|
21
|
+
* https://github.com/microsoft/vscode/blob/18ed64835ec8f8227dbd8562d2d9fd9fa339abbb/extensions/typescript-language-features/src/languageFeatures/workspaceSymbols.ts#L17
|
|
22
|
+
*/
|
|
23
|
+
private convertSymbolKindForWorkspaceSymbol;
|
|
24
|
+
private getLabel;
|
|
25
|
+
}
|