@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,176 @@
|
|
|
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.WorkspaceSymbolsProviderImpl = void 0;
|
|
7
|
+
const svelte2tsx_1 = require("svelte2tsx");
|
|
8
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
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 DocumentSnapshot_1 = require("../DocumentSnapshot");
|
|
13
|
+
const service_1 = require("../service");
|
|
14
|
+
const utils_2 = require("../utils");
|
|
15
|
+
const utils_3 = require("./utils");
|
|
16
|
+
class WorkspaceSymbolsProviderImpl {
|
|
17
|
+
constructor(lsAndTsDocResolver, configManager) {
|
|
18
|
+
this.configManager = configManager;
|
|
19
|
+
this.lsAndTsDocResolver = lsAndTsDocResolver;
|
|
20
|
+
}
|
|
21
|
+
async getWorkspaceSymbols(query, cancellationToken) {
|
|
22
|
+
const allServices = [];
|
|
23
|
+
await (0, service_1.forAllServices)((service) => {
|
|
24
|
+
allServices.push(service);
|
|
25
|
+
});
|
|
26
|
+
const symbols = new Map();
|
|
27
|
+
// The config only exists for typescript. No javascript counterpart.
|
|
28
|
+
const preference = this.configManager.getTsUserPreferences('typescript', null);
|
|
29
|
+
for (const ls of allServices) {
|
|
30
|
+
if (cancellationToken?.isCancellationRequested) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const service = ls.getService();
|
|
34
|
+
const projectItems = service.getNavigateToItems(query,
|
|
35
|
+
/* maxResultCount */ 256,
|
|
36
|
+
/* fileName */ undefined,
|
|
37
|
+
/* excludeDtsFiles */ ls.snapshotManager.allFilesAreJsOrDts(), preference.excludeLibrarySymbolsInNavTo);
|
|
38
|
+
const snapshots = new utils_3.SnapshotMap(this.lsAndTsDocResolver, ls);
|
|
39
|
+
for (const item of projectItems) {
|
|
40
|
+
if (this.isGeneratedName(item) ||
|
|
41
|
+
(item.kind === typescript_1.default.ScriptElementKind.alias && !item.containerName)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const seen = symbols.get(item.name);
|
|
45
|
+
if (!seen) {
|
|
46
|
+
symbols.set(item.name, [
|
|
47
|
+
[
|
|
48
|
+
item,
|
|
49
|
+
this.mapWorkspaceSymbol(item, await snapshots.retrieve(item.fileName))
|
|
50
|
+
]
|
|
51
|
+
]);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
let skip = false;
|
|
55
|
+
for (const [seenItem] of seen) {
|
|
56
|
+
if (this.navigateToItemIsEqualTo(seenItem, item)) {
|
|
57
|
+
skip = true;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (skip) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const snapshot = await snapshots.retrieve(item.fileName);
|
|
65
|
+
if (snapshot instanceof DocumentSnapshot_1.SvelteDocumentSnapshot &&
|
|
66
|
+
(0, utils_3.isInGeneratedCode)(snapshot.getFullText(), item.textSpan.start)) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
seen.push([
|
|
70
|
+
item,
|
|
71
|
+
this.mapWorkspaceSymbol(item, await snapshots.retrieve(item.fileName))
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return Array.from(symbols.values())
|
|
76
|
+
.flatMap((items) => items.map(([_, symbol]) => symbol))
|
|
77
|
+
.filter(utils_1.isNotNullOrUndefined);
|
|
78
|
+
}
|
|
79
|
+
isGeneratedName(item) {
|
|
80
|
+
if (!(0, utils_2.isSvelteFilePath)(item.fileName)) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return (item.name === svelte2tsx_1.internalHelpers.renderName ||
|
|
84
|
+
item.name.startsWith('__sveltets_') ||
|
|
85
|
+
item.name.startsWith('$$'));
|
|
86
|
+
}
|
|
87
|
+
mapWorkspaceSymbol(item, snapshot) {
|
|
88
|
+
let location = (0, documents_1.mapLocationToOriginal)(snapshot, (0, utils_2.convertRange)(snapshot, item.textSpan));
|
|
89
|
+
if (location.range.start.line < 0) {
|
|
90
|
+
if ((0, utils_2.isGeneratedSvelteComponentName)(item.name)) {
|
|
91
|
+
location = {
|
|
92
|
+
uri: snapshot.getURL(),
|
|
93
|
+
range: {
|
|
94
|
+
start: { line: 0, character: 0 },
|
|
95
|
+
end: { line: 0, character: 1 }
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
kind: this.convertSymbolKindForWorkspaceSymbol(item.kind),
|
|
105
|
+
name: this.getLabel(item),
|
|
106
|
+
containerName: snapshot instanceof DocumentSnapshot_1.SvelteDocumentSnapshot &&
|
|
107
|
+
(item.containerName === svelte2tsx_1.internalHelpers.renderName || !item.containerName)
|
|
108
|
+
? (0, utils_2.isInScript)(location.range.start, snapshot)
|
|
109
|
+
? 'script'
|
|
110
|
+
: undefined
|
|
111
|
+
: item.containerName,
|
|
112
|
+
location,
|
|
113
|
+
tags: item.kindModifiers?.includes('deprecated') ? [vscode_languageserver_types_1.SymbolTag.Deprecated] : undefined
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
*
|
|
118
|
+
* https://github.com/microsoft/TypeScript/blob/81c951894e93bdc37c6916f18adcd80de76679bc/src/server/session.ts#L2878
|
|
119
|
+
*/
|
|
120
|
+
navigateToItemIsEqualTo(a, b) {
|
|
121
|
+
if (a === b) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
if (!a || !b) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
return (a.containerKind === b.containerKind &&
|
|
128
|
+
a.containerName === b.containerName &&
|
|
129
|
+
a.fileName === b.fileName &&
|
|
130
|
+
a.isCaseSensitive === b.isCaseSensitive &&
|
|
131
|
+
a.kind === b.kind &&
|
|
132
|
+
a.kindModifiers === b.kindModifiers &&
|
|
133
|
+
a.matchKind === b.matchKind &&
|
|
134
|
+
a.name === b.name &&
|
|
135
|
+
a.textSpan.start === b.textSpan.start &&
|
|
136
|
+
a.textSpan.length === b.textSpan.length);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Don't reuse our symbolKindFromString function, this should the same as the one in vscode
|
|
140
|
+
* so that vscode deduplicate the symbols from svelte and the typescript server.
|
|
141
|
+
* https://github.com/microsoft/vscode/blob/18ed64835ec8f8227dbd8562d2d9fd9fa339abbb/extensions/typescript-language-features/src/languageFeatures/workspaceSymbols.ts#L17
|
|
142
|
+
*/
|
|
143
|
+
convertSymbolKindForWorkspaceSymbol(kind) {
|
|
144
|
+
switch (kind) {
|
|
145
|
+
case typescript_1.default.ScriptElementKind.memberFunctionElement:
|
|
146
|
+
return vscode_languageserver_types_1.SymbolKind.Method;
|
|
147
|
+
case typescript_1.default.ScriptElementKind.enumElement:
|
|
148
|
+
return vscode_languageserver_types_1.SymbolKind.Enum;
|
|
149
|
+
case typescript_1.default.ScriptElementKind.enumMemberElement:
|
|
150
|
+
return vscode_languageserver_types_1.SymbolKind.EnumMember;
|
|
151
|
+
case typescript_1.default.ScriptElementKind.functionElement:
|
|
152
|
+
return vscode_languageserver_types_1.SymbolKind.Function;
|
|
153
|
+
case typescript_1.default.ScriptElementKind.classElement:
|
|
154
|
+
return vscode_languageserver_types_1.SymbolKind.Class;
|
|
155
|
+
case typescript_1.default.ScriptElementKind.interfaceElement:
|
|
156
|
+
return vscode_languageserver_types_1.SymbolKind.Interface;
|
|
157
|
+
case typescript_1.default.ScriptElementKind.typeElement:
|
|
158
|
+
return vscode_languageserver_types_1.SymbolKind.Class;
|
|
159
|
+
case typescript_1.default.ScriptElementKind.memberVariableElement:
|
|
160
|
+
case typescript_1.default.ScriptElementKind.memberGetAccessorElement:
|
|
161
|
+
case typescript_1.default.ScriptElementKind.memberSetAccessorElement:
|
|
162
|
+
return vscode_languageserver_types_1.SymbolKind.Field;
|
|
163
|
+
default:
|
|
164
|
+
return vscode_languageserver_types_1.SymbolKind.Variable;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
getLabel(item) {
|
|
168
|
+
const label = item.name;
|
|
169
|
+
if (item.kind === 'method' || item.kind === 'function') {
|
|
170
|
+
return label + '()';
|
|
171
|
+
}
|
|
172
|
+
return label;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.WorkspaceSymbolsProviderImpl = WorkspaceSymbolsProviderImpl;
|
|
176
|
+
//# sourceMappingURL=WorkspaceSymbolProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceSymbolProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/WorkspaceSymbolProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Document } from '../../../lib/documents';
|
|
2
|
+
import { Position, CompletionList, CompletionContext } from 'vscode-languageserver';
|
|
3
|
+
/**
|
|
4
|
+
* from https://github.com/microsoft/vscode/blob/157255fa4b0775c5ab8729565faf95927b610cac/extensions/typescript-language-features/src/languageFeatures/directiveCommentCompletions.ts#L19
|
|
5
|
+
*/
|
|
6
|
+
export declare const tsDirectives: {
|
|
7
|
+
value: string;
|
|
8
|
+
description: string;
|
|
9
|
+
}[];
|
|
10
|
+
/**
|
|
11
|
+
* from https://github.com/microsoft/vscode/blob/157255fa4b0775c5ab8729565faf95927b610cac/extensions/typescript-language-features/src/languageFeatures/directiveCommentCompletions.ts#L64
|
|
12
|
+
*/
|
|
13
|
+
export declare function getDirectiveCommentCompletions(position: Position, document: Document, completionContext: CompletionContext | undefined): CompletionList | null;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tsDirectives = void 0;
|
|
4
|
+
exports.getDirectiveCommentCompletions = getDirectiveCommentCompletions;
|
|
5
|
+
const documents_1 = require("../../../lib/documents");
|
|
6
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
7
|
+
/**
|
|
8
|
+
* from https://github.com/microsoft/vscode/blob/157255fa4b0775c5ab8729565faf95927b610cac/extensions/typescript-language-features/src/languageFeatures/directiveCommentCompletions.ts#L19
|
|
9
|
+
*/
|
|
10
|
+
exports.tsDirectives = [
|
|
11
|
+
{
|
|
12
|
+
value: '@ts-check',
|
|
13
|
+
description: 'Enables semantic checking in a JavaScript file. Must be at the top of a file.'
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
value: '@ts-nocheck',
|
|
17
|
+
description: 'Disables semantic checking in a JavaScript file. Must be at the top of a file.'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
value: '@ts-ignore',
|
|
21
|
+
description: 'Suppresses @ts-check errors on the next line of a file.'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
value: '@ts-expect-error',
|
|
25
|
+
description: 'Suppresses @ts-check errors on the next line of a file, expecting at least one to exist.'
|
|
26
|
+
}
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* from https://github.com/microsoft/vscode/blob/157255fa4b0775c5ab8729565faf95927b610cac/extensions/typescript-language-features/src/languageFeatures/directiveCommentCompletions.ts#L64
|
|
30
|
+
*/
|
|
31
|
+
function getDirectiveCommentCompletions(position, document, completionContext) {
|
|
32
|
+
// don't trigger until // @
|
|
33
|
+
if (completionContext?.triggerCharacter === '/') {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const inScript = (0, documents_1.isInTag)(position, document.scriptInfo);
|
|
37
|
+
const inModule = (0, documents_1.isInTag)(position, document.moduleScriptInfo);
|
|
38
|
+
if (!inModule && !inScript) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const lineStart = document.offsetAt(vscode_languageserver_1.Position.create(position.line, 0));
|
|
42
|
+
const offset = document.offsetAt(position);
|
|
43
|
+
const prefix = document.getText().slice(lineStart, offset);
|
|
44
|
+
const match = prefix.match(/^\s*\/\/+\s?(@[a-zA-Z-]*)?$/);
|
|
45
|
+
if (!match) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const startCharacter = Math.max(0, position.character - (match[1]?.length ?? 0));
|
|
49
|
+
const start = vscode_languageserver_1.Position.create(position.line, startCharacter);
|
|
50
|
+
const items = exports.tsDirectives.map(({ value, description }) => ({
|
|
51
|
+
detail: description,
|
|
52
|
+
label: value,
|
|
53
|
+
kind: vscode_languageserver_1.CompletionItemKind.Snippet,
|
|
54
|
+
textEdit: vscode_languageserver_1.TextEdit.replace(vscode_languageserver_1.Range.create(start, vscode_languageserver_1.Position.create(start.line, start.character + value.length)), value)
|
|
55
|
+
}));
|
|
56
|
+
return vscode_languageserver_1.CompletionList.create(items, false);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=getDirectiveCommentCompletions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDirectiveCommentCompletions.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/getDirectiveCommentCompletions.ts"],"names":[],"mappings":";;;AAsCA,wEAsCC;AA5ED,sDAA2D;AAC3D,iEAQ+B;AAE/B;;GAEG;AACU,QAAA,YAAY,GAAG;IACxB;QACI,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,+EAA+E;KAC/F;IACD;QACI,KAAK,EAAE,aAAa;QACpB,WAAW,EACP,gFAAgF;KACvF;IACD;QACI,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,yDAAyD;KACzE;IACD;QACI,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACP,0FAA0F;KACjG;CACJ,CAAC;AAEF;;GAEG;AACH,SAAgB,8BAA8B,CAC1C,QAAkB,EAClB,QAAkB,EAClB,iBAAgD;IAEhD,2BAA2B;IAC3B,IAAI,iBAAiB,EAAE,gBAAgB,KAAK,GAAG,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,mBAAO,EAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAA,mBAAO,EAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,gCAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,gCAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAG,oBAAY,CAAC,GAAG,CAAiB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,0CAAkB,CAAC,OAAO;QAChC,QAAQ,EAAE,gCAAQ,CAAC,OAAO,CACtB,6BAAK,CAAC,MAAM,CAAC,KAAK,EAAE,gCAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAChF,KAAK,CACR;KACJ,CAAC,CAAC,CAAC;IAEJ,OAAO,sCAAc,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { CompletionList } from 'vscode-languageserver';
|
|
3
|
+
import { SvelteDocumentSnapshot } from '../DocumentSnapshot';
|
|
4
|
+
export declare function getJsDocTemplateCompletion(snapshot: SvelteDocumentSnapshot, lang: ts.LanguageService, filePath: string, offset: number): CompletionList | null;
|
|
@@ -0,0 +1,57 @@
|
|
|
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.getJsDocTemplateCompletion = getJsDocTemplateCompletion;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
9
|
+
const documents_1 = require("../../../lib/documents");
|
|
10
|
+
const DEFAULT_SNIPPET = `/**${typescript_1.default.sys.newLine} * $0${typescript_1.default.sys.newLine} */`;
|
|
11
|
+
function getJsDocTemplateCompletion(snapshot, lang, filePath, offset) {
|
|
12
|
+
const template = lang.getDocCommentTemplateAtPosition(filePath, offset);
|
|
13
|
+
if (!template) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const text = snapshot.getFullText();
|
|
17
|
+
const lineStart = text.lastIndexOf('\n', offset);
|
|
18
|
+
const lineEnd = text.indexOf('\n', offset);
|
|
19
|
+
const isLastLine = lineEnd === -1;
|
|
20
|
+
const line = text.substring(lineStart, isLastLine ? undefined : lineEnd);
|
|
21
|
+
const character = offset - lineStart;
|
|
22
|
+
const start = line.lastIndexOf('/**', character) + lineStart;
|
|
23
|
+
const suffix = line.slice(character).match(/^\s*\**\//);
|
|
24
|
+
const textEditRange = (0, documents_1.mapRangeToOriginal)(snapshot, vscode_languageserver_1.Range.create(snapshot.positionAt(start), snapshot.positionAt(offset + (suffix?.[0]?.length ?? 0))));
|
|
25
|
+
const { newText } = template;
|
|
26
|
+
const snippet =
|
|
27
|
+
// When typescript returns an empty single line template
|
|
28
|
+
// return the default multi-lines snippet,
|
|
29
|
+
// making it consistent with VSCode typescript
|
|
30
|
+
newText === '/** */' ? DEFAULT_SNIPPET : templateToSnippet(newText);
|
|
31
|
+
const item = {
|
|
32
|
+
label: '/** */',
|
|
33
|
+
detail: 'JSDoc comment',
|
|
34
|
+
sortText: '\0',
|
|
35
|
+
kind: vscode_languageserver_1.CompletionItemKind.Snippet,
|
|
36
|
+
textEdit: vscode_languageserver_1.TextEdit.replace(textEditRange, snippet),
|
|
37
|
+
insertTextFormat: vscode_languageserver_1.InsertTextFormat.Snippet
|
|
38
|
+
};
|
|
39
|
+
return vscode_languageserver_1.CompletionList.create([item]);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* adopted from https://github.com/microsoft/vscode/blob/a4b011697892ab656e1071b42c8af4b192078f28/extensions/typescript-language-features/src/languageFeatures/jsDocCompletions.ts#L94
|
|
43
|
+
* Currently typescript won't return `@param` type template for files
|
|
44
|
+
* that has extension other than `.js` and `.jsx`
|
|
45
|
+
* So we don't need to insert snippet-tab-stop for it
|
|
46
|
+
*/
|
|
47
|
+
function templateToSnippet(text) {
|
|
48
|
+
return (text
|
|
49
|
+
// $ is for snippet tab stop
|
|
50
|
+
.replace(/\$/g, '\\$')
|
|
51
|
+
.split('\n')
|
|
52
|
+
// remove indent but not line break and let client handle it
|
|
53
|
+
.map((part) => part.replace(/^\s*(?=(\/|[ ]\*))/g, ''))
|
|
54
|
+
.join('\n')
|
|
55
|
+
.replace(/^(\/\*\*\s*\*[ ]*)$/m, (x) => x + '$0'));
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=getJsDocTemplateCompletion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getJsDocTemplateCompletion.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/getJsDocTemplateCompletion.ts"],"names":[],"mappings":";;;;;AAcA,gEA6CC;AA3DD,4DAA4B;AAC5B,iEAO+B;AAC/B,sDAA4D;AAG5D,MAAM,eAAe,GAAG,MAAM,oBAAE,CAAC,GAAG,CAAC,OAAO,QAAQ,oBAAE,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC;AAExE,SAAgB,0BAA0B,CACtC,QAAgC,EAChC,IAAwB,EACxB,QAAgB,EAChB,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IAErC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAA,8BAAkB,EACpC,QAAQ,EACR,6BAAK,CAAC,MAAM,CACR,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAC1B,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAC3D,CACJ,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC7B,MAAM,OAAO;IACT,wDAAwD;IACxD,0CAA0C;IAC1C,8CAA8C;IAC9C,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExE,MAAM,IAAI,GAAmB;QACzB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,0CAAkB,CAAC,OAAO;QAChC,QAAQ,EAAE,gCAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;QAClD,gBAAgB,EAAE,wCAAgB,CAAC,OAAO;KAC7C,CAAC;IAEF,OAAO,sCAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACnC,OAAO,CACH,IAAI;QACA,4BAA4B;SAC3B,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,KAAK,CAAC,IAAI,CAAC;QACZ,4DAA4D;SAC3D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CACxD,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { Position, Range } from 'vscode-languageserver';
|
|
3
|
+
import { Document } from '../../../lib/documents';
|
|
4
|
+
import { ComponentInfoProvider } from '../ComponentInfoProvider';
|
|
5
|
+
import { DocumentSnapshot, SvelteDocumentSnapshot } from '../DocumentSnapshot';
|
|
6
|
+
import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
|
|
7
|
+
import { LSConfig } from '../../../ls-config';
|
|
8
|
+
import { LanguageServiceContainer } from '../service';
|
|
9
|
+
type NodeTypePredicate<T extends ts.Node> = (node: ts.Node) => node is T;
|
|
10
|
+
/**
|
|
11
|
+
* If the given original position is within a Svelte starting tag,
|
|
12
|
+
* return the snapshot of that component.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getComponentAtPosition(lang: ts.LanguageService, doc: Document, tsDoc: SvelteDocumentSnapshot, originalPosition: Position): ComponentInfoProvider | null;
|
|
15
|
+
export declare function isComponentAtPosition(doc: Document, tsDoc: SvelteDocumentSnapshot, originalPosition: Position): boolean;
|
|
16
|
+
export declare const IGNORE_START_COMMENT = "/*\u03A9ignore_start\u03A9*/";
|
|
17
|
+
export declare const IGNORE_END_COMMENT = "/*\u03A9ignore_end\u03A9*/";
|
|
18
|
+
export declare const IGNORE_POSITION_COMMENT = "/*\u03A9ignore_position\u03A9*/";
|
|
19
|
+
/**
|
|
20
|
+
* Surrounds given string with a start/end comment which marks it
|
|
21
|
+
* to be ignored by tooling.
|
|
22
|
+
*/
|
|
23
|
+
export declare function surroundWithIgnoreComments(str: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Checks if this a section that should be completely ignored
|
|
26
|
+
* because it's purely generated.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isInGeneratedCode(text: string, start: number, end?: number): boolean;
|
|
29
|
+
export declare function startsWithIgnoredPosition(text: string, offset: number): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Checks if this is a text span that is inside svelte2tsx-generated code
|
|
32
|
+
* (has no mapping to the original)
|
|
33
|
+
*/
|
|
34
|
+
export declare function isTextSpanInGeneratedCode(text: string, span: ts.TextSpan): boolean;
|
|
35
|
+
export declare function isPartOfImportStatement(text: string, position: Position): boolean;
|
|
36
|
+
export declare function isStoreVariableIn$storeDeclaration(text: string, varStart: number): boolean;
|
|
37
|
+
export declare function get$storeOffsetOf$storeDeclaration(text: string, storePosition: number): number;
|
|
38
|
+
export declare function is$storeVariableIn$storeDeclaration(text: string, varStart: number): boolean;
|
|
39
|
+
export declare function getStoreOffsetOf$storeDeclaration(text: string, $storeVarStart: number): number;
|
|
40
|
+
export declare class SnapshotMap {
|
|
41
|
+
private resolver;
|
|
42
|
+
private sourceLs;
|
|
43
|
+
private map;
|
|
44
|
+
constructor(resolver: LSAndTSDocResolver, sourceLs: LanguageServiceContainer);
|
|
45
|
+
set(fileName: string, snapshot: DocumentSnapshot): void;
|
|
46
|
+
get(fileName: string): DocumentSnapshot | undefined;
|
|
47
|
+
retrieve(fileName: string): Promise<DocumentSnapshot>;
|
|
48
|
+
}
|
|
49
|
+
export declare function isAfterSvelte2TsxPropsReturn(text: string, end: number): true | undefined;
|
|
50
|
+
export declare function findContainingNode<T extends ts.Node>(node: ts.Node, textSpan: ts.TextSpan, predicate: (node: ts.Node) => node is T): T | undefined;
|
|
51
|
+
export declare function findClosestContainingNode<T extends ts.Node>(node: ts.Node, textSpan: ts.TextSpan, predicate: (node: ts.Node) => node is T): T | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Finds node exactly matching span {start, length}.
|
|
54
|
+
*/
|
|
55
|
+
export declare function findNodeAtSpan<T extends ts.Node>(node: ts.Node, span: {
|
|
56
|
+
start: number;
|
|
57
|
+
length: number;
|
|
58
|
+
}, predicate?: NodeTypePredicate<T>): T | void;
|
|
59
|
+
export declare const isReactiveStatement: (node: ts.Node | undefined | void | null) => node is ts.LabeledStatement;
|
|
60
|
+
export declare function findRenderFunction(sourceFile: ts.SourceFile): (ts.FunctionDeclaration & {
|
|
61
|
+
name: ts.Identifier;
|
|
62
|
+
}) | undefined;
|
|
63
|
+
export declare const isInReactiveStatement: (node: ts.Node) => boolean;
|
|
64
|
+
export declare function gatherDescendants<T extends ts.Node>(node: ts.Node, predicate: NodeTypePredicate<T>, dest?: T[]): T[];
|
|
65
|
+
export declare const gatherIdentifiers: (node: ts.Node) => ts.Identifier[];
|
|
66
|
+
export declare function isKitTypePath(path?: string): boolean;
|
|
67
|
+
export declare function getFormatCodeBasis(formatCodeSetting: ts.FormatCodeSettings): FormatCodeBasis;
|
|
68
|
+
export interface FormatCodeBasis {
|
|
69
|
+
baseIndent: string;
|
|
70
|
+
indent: string;
|
|
71
|
+
semi: string;
|
|
72
|
+
newLine: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* https://github.com/microsoft/TypeScript/blob/00dc0b6674eef3fbb3abb86f9d71705b11134446/src/services/utilities.ts#L2452
|
|
76
|
+
*/
|
|
77
|
+
export declare function getQuotePreference(sourceFile: ts.SourceFile, preferences: ts.UserPreferences): '"' | "'";
|
|
78
|
+
export declare function findChildOfKind(node: ts.Node, kind: ts.SyntaxKind): ts.Node | undefined;
|
|
79
|
+
export declare function getNewScriptStartTag(lsConfig: Readonly<LSConfig>, newLine: string): string;
|
|
80
|
+
export declare function checkRangeMappingWithGeneratedSemi(originalRange: Range, generatedRange: Range, tsDoc: SvelteDocumentSnapshot): void;
|
|
81
|
+
export {};
|