@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.
Files changed (256) hide show
  1. package/README.md +331 -0
  2. package/bin/server.js +5 -0
  3. package/dist/src/importPackage.d.ts +16 -0
  4. package/dist/src/importPackage.js +76 -0
  5. package/dist/src/importPackage.js.map +1 -0
  6. package/dist/src/index.d.ts +3 -0
  7. package/dist/src/index.js +23 -0
  8. package/dist/src/index.js.map +1 -0
  9. package/dist/src/lib/DiagnosticsManager.d.ts +20 -0
  10. package/dist/src/lib/DiagnosticsManager.js +71 -0
  11. package/dist/src/lib/DiagnosticsManager.js.map +1 -0
  12. package/dist/src/lib/FallbackWatcher.d.ts +15 -0
  13. package/dist/src/lib/FallbackWatcher.js +66 -0
  14. package/dist/src/lib/FallbackWatcher.js.map +1 -0
  15. package/dist/src/lib/documentHighlight/wordHighlight.d.ts +3 -0
  16. package/dist/src/lib/documentHighlight/wordHighlight.js +62 -0
  17. package/dist/src/lib/documentHighlight/wordHighlight.js.map +1 -0
  18. package/dist/src/lib/documents/Document.d.ts +63 -0
  19. package/dist/src/lib/documents/Document.js +138 -0
  20. package/dist/src/lib/documents/Document.js.map +1 -0
  21. package/dist/src/lib/documents/DocumentBase.d.ts +65 -0
  22. package/dist/src/lib/documents/DocumentBase.js +69 -0
  23. package/dist/src/lib/documents/DocumentBase.js.map +1 -0
  24. package/dist/src/lib/documents/DocumentManager.d.ts +28 -0
  25. package/dist/src/lib/documents/DocumentManager.js +122 -0
  26. package/dist/src/lib/documents/DocumentManager.js.map +1 -0
  27. package/dist/src/lib/documents/DocumentMapper.d.ts +88 -0
  28. package/dist/src/lib/documents/DocumentMapper.js +258 -0
  29. package/dist/src/lib/documents/DocumentMapper.js.map +1 -0
  30. package/dist/src/lib/documents/configLoader.d.ts +80 -0
  31. package/dist/src/lib/documents/configLoader.js +265 -0
  32. package/dist/src/lib/documents/configLoader.js.map +1 -0
  33. package/dist/src/lib/documents/fileCollection.d.ts +41 -0
  34. package/dist/src/lib/documents/fileCollection.js +87 -0
  35. package/dist/src/lib/documents/fileCollection.js.map +1 -0
  36. package/dist/src/lib/documents/index.d.ts +5 -0
  37. package/dist/src/lib/documents/index.js +22 -0
  38. package/dist/src/lib/documents/index.js.map +1 -0
  39. package/dist/src/lib/documents/parseHtml.d.ts +13 -0
  40. package/dist/src/lib/documents/parseHtml.js +160 -0
  41. package/dist/src/lib/documents/parseHtml.js.map +1 -0
  42. package/dist/src/lib/documents/utils.d.ts +105 -0
  43. package/dist/src/lib/documents/utils.js +410 -0
  44. package/dist/src/lib/documents/utils.js.map +1 -0
  45. package/dist/src/lib/foldingRange/indentFolding.d.ts +26 -0
  46. package/dist/src/lib/foldingRange/indentFolding.js +142 -0
  47. package/dist/src/lib/foldingRange/indentFolding.js.map +1 -0
  48. package/dist/src/lib/semanticToken/semanticTokenLegend.d.ts +33 -0
  49. package/dist/src/lib/semanticToken/semanticTokenLegend.js +37 -0
  50. package/dist/src/lib/semanticToken/semanticTokenLegend.js.map +1 -0
  51. package/dist/src/logger.d.ts +9 -0
  52. package/dist/src/logger.js +28 -0
  53. package/dist/src/logger.js.map +1 -0
  54. package/dist/src/ls-config.d.ts +326 -0
  55. package/dist/src/ls-config.js +386 -0
  56. package/dist/src/ls-config.js.map +1 -0
  57. package/dist/src/plugins/PluginHost.d.ts +68 -0
  58. package/dist/src/plugins/PluginHost.js +447 -0
  59. package/dist/src/plugins/PluginHost.js.map +1 -0
  60. package/dist/src/plugins/css/CSSDocument.d.ts +46 -0
  61. package/dist/src/plugins/css/CSSDocument.js +78 -0
  62. package/dist/src/plugins/css/CSSDocument.js.map +1 -0
  63. package/dist/src/plugins/css/CSSPlugin.d.ts +35 -0
  64. package/dist/src/plugins/css/CSSPlugin.js +407 -0
  65. package/dist/src/plugins/css/CSSPlugin.js.map +1 -0
  66. package/dist/src/plugins/css/FileSystemProvider.d.ts +10 -0
  67. package/dist/src/plugins/css/FileSystemProvider.js +75 -0
  68. package/dist/src/plugins/css/FileSystemProvider.js.map +1 -0
  69. package/dist/src/plugins/css/StyleAttributeDocument.d.ts +41 -0
  70. package/dist/src/plugins/css/StyleAttributeDocument.js +65 -0
  71. package/dist/src/plugins/css/StyleAttributeDocument.js.map +1 -0
  72. package/dist/src/plugins/css/features/getIdClassCompletion.d.ts +19 -0
  73. package/dist/src/plugins/css/features/getIdClassCompletion.js +56 -0
  74. package/dist/src/plugins/css/features/getIdClassCompletion.js.map +1 -0
  75. package/dist/src/plugins/css/features/svelte-selectors.d.ts +2 -0
  76. package/dist/src/plugins/css/features/svelte-selectors.js +18 -0
  77. package/dist/src/plugins/css/features/svelte-selectors.js.map +1 -0
  78. package/dist/src/plugins/css/global-vars.d.ts +16 -0
  79. package/dist/src/plugins/css/global-vars.js +82 -0
  80. package/dist/src/plugins/css/global-vars.js.map +1 -0
  81. package/dist/src/plugins/css/service.d.ts +5 -0
  82. package/dist/src/plugins/css/service.js +66 -0
  83. package/dist/src/plugins/css/service.js.map +1 -0
  84. package/dist/src/plugins/documentContext.d.ts +3 -0
  85. package/dist/src/plugins/documentContext.js +36 -0
  86. package/dist/src/plugins/documentContext.js.map +1 -0
  87. package/dist/src/plugins/html/HTMLPlugin.d.ts +36 -0
  88. package/dist/src/plugins/html/HTMLPlugin.js +363 -0
  89. package/dist/src/plugins/html/HTMLPlugin.js.map +1 -0
  90. package/dist/src/plugins/html/dataProvider.d.ts +1 -0
  91. package/dist/src/plugins/html/dataProvider.js +481 -0
  92. package/dist/src/plugins/html/dataProvider.js.map +1 -0
  93. package/dist/src/plugins/index.d.ts +7 -0
  94. package/dist/src/plugins/index.js +24 -0
  95. package/dist/src/plugins/index.js.map +1 -0
  96. package/dist/src/plugins/interfaces.d.ts +132 -0
  97. package/dist/src/plugins/interfaces.js +3 -0
  98. package/dist/src/plugins/interfaces.js.map +1 -0
  99. package/dist/src/plugins/svelte/SvelteDocument.d.ts +98 -0
  100. package/dist/src/plugins/svelte/SvelteDocument.js +318 -0
  101. package/dist/src/plugins/svelte/SvelteDocument.js.map +1 -0
  102. package/dist/src/plugins/svelte/SveltePlugin.d.ts +24 -0
  103. package/dist/src/plugins/svelte/SveltePlugin.js +306 -0
  104. package/dist/src/plugins/svelte/SveltePlugin.js.map +1 -0
  105. package/dist/src/plugins/svelte/features/SvelteTags.d.ts +28 -0
  106. package/dist/src/plugins/svelte/features/SvelteTags.js +136 -0
  107. package/dist/src/plugins/svelte/features/SvelteTags.js.map +1 -0
  108. package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.d.ts +11 -0
  109. package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js +140 -0
  110. package/dist/src/plugins/svelte/features/getCodeActions/getQuickfixes.js.map +1 -0
  111. package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.d.ts +9 -0
  112. package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js +140 -0
  113. package/dist/src/plugins/svelte/features/getCodeActions/getRefactorings.js.map +1 -0
  114. package/dist/src/plugins/svelte/features/getCodeActions/index.d.ts +4 -0
  115. package/dist/src/plugins/svelte/features/getCodeActions/index.js +19 -0
  116. package/dist/src/plugins/svelte/features/getCodeActions/index.js.map +1 -0
  117. package/dist/src/plugins/svelte/features/getCompletions.d.ts +4 -0
  118. package/dist/src/plugins/svelte/features/getCompletions.js +184 -0
  119. package/dist/src/plugins/svelte/features/getCompletions.js.map +1 -0
  120. package/dist/src/plugins/svelte/features/getDiagnostics.d.ts +9 -0
  121. package/dist/src/plugins/svelte/features/getDiagnostics.js +284 -0
  122. package/dist/src/plugins/svelte/features/getDiagnostics.js.map +1 -0
  123. package/dist/src/plugins/svelte/features/getHoverInfo.d.ts +7 -0
  124. package/dist/src/plugins/svelte/features/getHoverInfo.js +93 -0
  125. package/dist/src/plugins/svelte/features/getHoverInfo.js.map +1 -0
  126. package/dist/src/plugins/svelte/features/getModifierData.d.ts +7 -0
  127. package/dist/src/plugins/svelte/features/getModifierData.js +56 -0
  128. package/dist/src/plugins/svelte/features/getModifierData.js.map +1 -0
  129. package/dist/src/plugins/svelte/features/getSelectionRanges.d.ts +3 -0
  130. package/dist/src/plugins/svelte/features/getSelectionRanges.js +46 -0
  131. package/dist/src/plugins/svelte/features/getSelectionRanges.js.map +1 -0
  132. package/dist/src/plugins/svelte/features/utils.d.ts +5 -0
  133. package/dist/src/plugins/svelte/features/utils.js +18 -0
  134. package/dist/src/plugins/svelte/features/utils.js.map +1 -0
  135. package/dist/src/plugins/typescript/ComponentInfoProvider.d.ts +27 -0
  136. package/dist/src/plugins/typescript/ComponentInfoProvider.js +116 -0
  137. package/dist/src/plugins/typescript/ComponentInfoProvider.js.map +1 -0
  138. package/dist/src/plugins/typescript/DocumentMapper.d.ts +10 -0
  139. package/dist/src/plugins/typescript/DocumentMapper.js +25 -0
  140. package/dist/src/plugins/typescript/DocumentMapper.js.map +1 -0
  141. package/dist/src/plugins/typescript/DocumentSnapshot.d.ts +173 -0
  142. package/dist/src/plugins/typescript/DocumentSnapshot.js +623 -0
  143. package/dist/src/plugins/typescript/DocumentSnapshot.js.map +1 -0
  144. package/dist/src/plugins/typescript/LSAndTSDocResolver.d.ts +100 -0
  145. package/dist/src/plugins/typescript/LSAndTSDocResolver.js +301 -0
  146. package/dist/src/plugins/typescript/LSAndTSDocResolver.js.map +1 -0
  147. package/dist/src/plugins/typescript/SnapshotManager.d.ts +59 -0
  148. package/dist/src/plugins/typescript/SnapshotManager.js +238 -0
  149. package/dist/src/plugins/typescript/SnapshotManager.js.map +1 -0
  150. package/dist/src/plugins/typescript/TypeScriptPlugin.d.ts +65 -0
  151. package/dist/src/plugins/typescript/TypeScriptPlugin.js +332 -0
  152. package/dist/src/plugins/typescript/TypeScriptPlugin.js.map +1 -0
  153. package/dist/src/plugins/typescript/features/CallHierarchyProvider.d.ts +24 -0
  154. package/dist/src/plugins/typescript/features/CallHierarchyProvider.js +325 -0
  155. package/dist/src/plugins/typescript/features/CallHierarchyProvider.js.map +1 -0
  156. package/dist/src/plugins/typescript/features/CodeActionsProvider.d.ts +72 -0
  157. package/dist/src/plugins/typescript/features/CodeActionsProvider.js +1030 -0
  158. package/dist/src/plugins/typescript/features/CodeActionsProvider.js.map +1 -0
  159. package/dist/src/plugins/typescript/features/CodeLensProvider.d.ts +28 -0
  160. package/dist/src/plugins/typescript/features/CodeLensProvider.js +205 -0
  161. package/dist/src/plugins/typescript/features/CodeLensProvider.js.map +1 -0
  162. package/dist/src/plugins/typescript/features/CompletionProvider.d.ts +57 -0
  163. package/dist/src/plugins/typescript/features/CompletionProvider.js +791 -0
  164. package/dist/src/plugins/typescript/features/CompletionProvider.js.map +1 -0
  165. package/dist/src/plugins/typescript/features/DiagnosticsProvider.d.ts +36 -0
  166. package/dist/src/plugins/typescript/features/DiagnosticsProvider.js +497 -0
  167. package/dist/src/plugins/typescript/features/DiagnosticsProvider.js.map +1 -0
  168. package/dist/src/plugins/typescript/features/DocumentHighlightProvider.d.ts +17 -0
  169. package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js +211 -0
  170. package/dist/src/plugins/typescript/features/DocumentHighlightProvider.js.map +1 -0
  171. package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.d.ts +9 -0
  172. package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js +66 -0
  173. package/dist/src/plugins/typescript/features/FindComponentReferencesProvider.js.map +1 -0
  174. package/dist/src/plugins/typescript/features/FindFileReferencesProvider.d.ts +9 -0
  175. package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js +38 -0
  176. package/dist/src/plugins/typescript/features/FindFileReferencesProvider.js.map +1 -0
  177. package/dist/src/plugins/typescript/features/FindReferencesProvider.d.ts +20 -0
  178. package/dist/src/plugins/typescript/features/FindReferencesProvider.js +149 -0
  179. package/dist/src/plugins/typescript/features/FindReferencesProvider.js.map +1 -0
  180. package/dist/src/plugins/typescript/features/FoldingRangeProvider.d.ts +28 -0
  181. package/dist/src/plugins/typescript/features/FoldingRangeProvider.js +247 -0
  182. package/dist/src/plugins/typescript/features/FoldingRangeProvider.js.map +1 -0
  183. package/dist/src/plugins/typescript/features/HoverProvider.d.ts +11 -0
  184. package/dist/src/plugins/typescript/features/HoverProvider.js +75 -0
  185. package/dist/src/plugins/typescript/features/HoverProvider.js.map +1 -0
  186. package/dist/src/plugins/typescript/features/ImplementationProvider.d.ts +9 -0
  187. package/dist/src/plugins/typescript/features/ImplementationProvider.js +47 -0
  188. package/dist/src/plugins/typescript/features/ImplementationProvider.js.map +1 -0
  189. package/dist/src/plugins/typescript/features/InlayHintProvider.d.ts +22 -0
  190. package/dist/src/plugins/typescript/features/InlayHintProvider.js +225 -0
  191. package/dist/src/plugins/typescript/features/InlayHintProvider.js.map +1 -0
  192. package/dist/src/plugins/typescript/features/RenameProvider.d.ts +53 -0
  193. package/dist/src/plugins/typescript/features/RenameProvider.js +423 -0
  194. package/dist/src/plugins/typescript/features/RenameProvider.js.map +1 -0
  195. package/dist/src/plugins/typescript/features/SelectionRangeProvider.d.ts +18 -0
  196. package/dist/src/plugins/typescript/features/SelectionRangeProvider.js +62 -0
  197. package/dist/src/plugins/typescript/features/SelectionRangeProvider.js.map +1 -0
  198. package/dist/src/plugins/typescript/features/SemanticTokensProvider.d.ts +15 -0
  199. package/dist/src/plugins/typescript/features/SemanticTokensProvider.js +116 -0
  200. package/dist/src/plugins/typescript/features/SemanticTokensProvider.js.map +1 -0
  201. package/dist/src/plugins/typescript/features/SignatureHelpProvider.d.ts +22 -0
  202. package/dist/src/plugins/typescript/features/SignatureHelpProvider.js +110 -0
  203. package/dist/src/plugins/typescript/features/SignatureHelpProvider.js.map +1 -0
  204. package/dist/src/plugins/typescript/features/TypeDefinitionProvider.d.ts +9 -0
  205. package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js +35 -0
  206. package/dist/src/plugins/typescript/features/TypeDefinitionProvider.js.map +1 -0
  207. package/dist/src/plugins/typescript/features/UpdateImportsProvider.d.ts +11 -0
  208. package/dist/src/plugins/typescript/features/UpdateImportsProvider.js +109 -0
  209. package/dist/src/plugins/typescript/features/UpdateImportsProvider.js.map +1 -0
  210. package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.d.ts +25 -0
  211. package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js +176 -0
  212. package/dist/src/plugins/typescript/features/WorkspaceSymbolProvider.js.map +1 -0
  213. package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.d.ts +13 -0
  214. package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js +58 -0
  215. package/dist/src/plugins/typescript/features/getDirectiveCommentCompletions.js.map +1 -0
  216. package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.d.ts +4 -0
  217. package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js +57 -0
  218. package/dist/src/plugins/typescript/features/getJsDocTemplateCompletion.js.map +1 -0
  219. package/dist/src/plugins/typescript/features/utils.d.ts +81 -0
  220. package/dist/src/plugins/typescript/features/utils.js +331 -0
  221. package/dist/src/plugins/typescript/features/utils.js.map +1 -0
  222. package/dist/src/plugins/typescript/macroforgeAugmenter.d.ts +23 -0
  223. package/dist/src/plugins/typescript/macroforgeAugmenter.js +41 -0
  224. package/dist/src/plugins/typescript/macroforgeAugmenter.js.map +1 -0
  225. package/dist/src/plugins/typescript/module-loader.d.ts +28 -0
  226. package/dist/src/plugins/typescript/module-loader.js +254 -0
  227. package/dist/src/plugins/typescript/module-loader.js.map +1 -0
  228. package/dist/src/plugins/typescript/previewer.d.ts +7 -0
  229. package/dist/src/plugins/typescript/previewer.js +120 -0
  230. package/dist/src/plugins/typescript/previewer.js.map +1 -0
  231. package/dist/src/plugins/typescript/service.d.ts +105 -0
  232. package/dist/src/plugins/typescript/service.js +1073 -0
  233. package/dist/src/plugins/typescript/service.js.map +1 -0
  234. package/dist/src/plugins/typescript/serviceCache.d.ts +90 -0
  235. package/dist/src/plugins/typescript/serviceCache.js +50 -0
  236. package/dist/src/plugins/typescript/serviceCache.js.map +1 -0
  237. package/dist/src/plugins/typescript/svelte-ast-utils.d.ts +77 -0
  238. package/dist/src/plugins/typescript/svelte-ast-utils.js +100 -0
  239. package/dist/src/plugins/typescript/svelte-ast-utils.js.map +1 -0
  240. package/dist/src/plugins/typescript/svelte-sys.d.ts +9 -0
  241. package/dist/src/plugins/typescript/svelte-sys.js +79 -0
  242. package/dist/src/plugins/typescript/svelte-sys.js.map +1 -0
  243. package/dist/src/plugins/typescript/utils.d.ts +48 -0
  244. package/dist/src/plugins/typescript/utils.js +334 -0
  245. package/dist/src/plugins/typescript/utils.js.map +1 -0
  246. package/dist/src/server.d.ts +19 -0
  247. package/dist/src/server.js +434 -0
  248. package/dist/src/server.js.map +1 -0
  249. package/dist/src/svelte-check.d.ts +65 -0
  250. package/dist/src/svelte-check.js +288 -0
  251. package/dist/src/svelte-check.js.map +1 -0
  252. package/dist/src/utils.d.ts +111 -0
  253. package/dist/src/utils.js +337 -0
  254. package/dist/src/utils.js.map +1 -0
  255. package/dist/tsconfig.tsbuildinfo +1 -0
  256. 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 {};