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