@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,423 @@
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.RenameProviderImpl = void 0;
7
+ const vscode_languageserver_1 = require("vscode-languageserver");
8
+ const documents_1 = require("../../../lib/documents");
9
+ const utils_1 = require("../../../utils");
10
+ const DocumentSnapshot_1 = require("../DocumentSnapshot");
11
+ const utils_2 = require("../utils");
12
+ const typescript_1 = __importDefault(require("typescript"));
13
+ const utils_3 = require("./utils");
14
+ const svelte_ast_utils_1 = require("../svelte-ast-utils");
15
+ const bind = 'bind:';
16
+ class RenameProviderImpl {
17
+ constructor(lsAndTsDocResolver, configManager) {
18
+ this.lsAndTsDocResolver = lsAndTsDocResolver;
19
+ this.configManager = configManager;
20
+ }
21
+ // TODO props written as `export {x as y}` are not supported yet.
22
+ async prepareRename(document, position) {
23
+ const { lang, tsDoc } = await this.getLSAndTSDoc(document);
24
+ const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
25
+ const renameInfo = this.getRenameInfo(lang, tsDoc, document, position, offset);
26
+ if (!renameInfo) {
27
+ return null;
28
+ }
29
+ return this.mapRangeToOriginal(tsDoc, renameInfo.triggerSpan);
30
+ }
31
+ async rename(document, position, newName) {
32
+ const { lang, tsDoc, lsContainer } = await this.getLSAndTSDoc(document);
33
+ const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
34
+ const renameInfo = this.getRenameInfo(lang, tsDoc, document, position, offset);
35
+ if (!renameInfo) {
36
+ return null;
37
+ }
38
+ const renameLocations = lang.findRenameLocations(tsDoc.filePath, offset, false, false, true);
39
+ if (!renameLocations) {
40
+ return null;
41
+ }
42
+ const docs = new utils_3.SnapshotMap(this.lsAndTsDocResolver, lsContainer);
43
+ docs.set(tsDoc.filePath, tsDoc);
44
+ let convertedRenameLocations = await this.mapAndFilterRenameLocations(renameLocations, docs, renameInfo.isStore ? `$${newName}` : undefined);
45
+ convertedRenameLocations.push(...(await this.enhanceRenamesInCaseOf$Store(renameLocations, newName, docs, lang)));
46
+ convertedRenameLocations = this.checkShortHandBindingOrSlotLetLocation(lang, convertedRenameLocations, docs, newName);
47
+ const additionalRenameForPropRenameInsideComponentWithProp = await this.getAdditionLocationsForRenameOfPropInsideComponentWithProp(document, tsDoc, position, convertedRenameLocations, docs, lang, newName);
48
+ const additionalRenamesForPropRenameOutsideComponentWithProp =
49
+ // This is an either-or-situation, don't do both
50
+ additionalRenameForPropRenameInsideComponentWithProp.length > 0
51
+ ? []
52
+ : await this.getAdditionalLocationsForRenameOfPropInsideOtherComponent(convertedRenameLocations, docs, lang, tsDoc.filePath);
53
+ convertedRenameLocations = [
54
+ ...convertedRenameLocations,
55
+ ...additionalRenameForPropRenameInsideComponentWithProp,
56
+ ...additionalRenamesForPropRenameOutsideComponentWithProp
57
+ ];
58
+ return (0, utils_1.unique)(convertedRenameLocations.filter((loc) => loc.range.start.line >= 0 && loc.range.end.line >= 0)).reduce((acc, loc) => {
59
+ const uri = (0, utils_1.pathToUrl)(loc.fileName);
60
+ if (!acc.changes[uri]) {
61
+ acc.changes[uri] = [];
62
+ }
63
+ acc.changes[uri].push({
64
+ newText: (loc.prefixText || '') + (loc.newName || newName) + (loc.suffixText || ''),
65
+ range: loc.range
66
+ });
67
+ return acc;
68
+ }, { changes: {} });
69
+ }
70
+ getRenameInfo(lang, tsDoc, doc, originalPosition, generatedOffset) {
71
+ // Don't allow renames in error-state, because then there is no generated svelte2tsx-code
72
+ // and rename cannot work
73
+ if (tsDoc.parserError) {
74
+ return null;
75
+ }
76
+ const svelteNode = tsDoc.svelteNodeAt(originalPosition);
77
+ const renameInfo = lang.getRenameInfo(tsDoc.filePath, generatedOffset, {
78
+ allowRenameOfImportPath: false
79
+ });
80
+ if (!renameInfo.canRename ||
81
+ renameInfo.fullDisplayName?.includes('JSX.IntrinsicElements') ||
82
+ (renameInfo.kind === typescript_1.default.ScriptElementKind.jsxAttribute &&
83
+ !(0, utils_3.isComponentAtPosition)(doc, tsDoc, originalPosition))) {
84
+ return null;
85
+ }
86
+ if ((0, documents_1.isInHTMLTagRange)(doc.html, doc.offsetAt(originalPosition)) ||
87
+ (0, svelte_ast_utils_1.isAttributeName)(svelteNode, 'Element') ||
88
+ (0, svelte_ast_utils_1.isEventHandler)(svelteNode, 'Element')) {
89
+ return null;
90
+ }
91
+ // If $store is renamed, only allow rename for $|store|
92
+ const text = tsDoc.getFullText();
93
+ if (text.charAt(renameInfo.triggerSpan.start) === '$') {
94
+ const definition = lang.getDefinitionAndBoundSpan(tsDoc.filePath, generatedOffset)
95
+ ?.definitions?.[0];
96
+ if (definition && (0, utils_3.isTextSpanInGeneratedCode)(text, definition.textSpan)) {
97
+ renameInfo.triggerSpan.start++;
98
+ renameInfo.triggerSpan.length--;
99
+ renameInfo.isStore = true;
100
+ }
101
+ }
102
+ return renameInfo;
103
+ }
104
+ /**
105
+ * If the user renames a store variable, we need to rename the corresponding $store variables
106
+ * and vice versa.
107
+ */
108
+ async enhanceRenamesInCaseOf$Store(renameLocations, newName, docs, lang) {
109
+ for (const loc of renameLocations) {
110
+ const snapshot = await docs.retrieve(loc.fileName);
111
+ if ((0, utils_3.isTextSpanInGeneratedCode)(snapshot.getFullText(), loc.textSpan)) {
112
+ if ((0, utils_3.isStoreVariableIn$storeDeclaration)(snapshot.getFullText(), loc.textSpan.start)) {
113
+ // User renamed store, also rename corresponding $store locations
114
+ const storeRenameLocations = lang.findRenameLocations(snapshot.filePath, (0, utils_3.get$storeOffsetOf$storeDeclaration)(snapshot.getFullText(), loc.textSpan.start), false, false, true);
115
+ return await this.mapAndFilterRenameLocations(storeRenameLocations, docs, `$${newName}`);
116
+ }
117
+ else if ((0, utils_3.is$storeVariableIn$storeDeclaration)(snapshot.getFullText(), loc.textSpan.start)) {
118
+ // User renamed $store, also rename corresponding store
119
+ const storeRenameLocations = lang.findRenameLocations(snapshot.filePath, (0, utils_3.getStoreOffsetOf$storeDeclaration)(snapshot.getFullText(), loc.textSpan.start), false, false, true);
120
+ return await this.mapAndFilterRenameLocations(storeRenameLocations, docs);
121
+ // TODO once we allow providePrefixAndSuffixTextForRename to be configurable,
122
+ // we need to add one more step to update all other $store usages in other files
123
+ }
124
+ }
125
+ }
126
+ return [];
127
+ }
128
+ /**
129
+ * If user renames prop of component A inside component A,
130
+ * we need to handle the rename of the prop of A ourselves.
131
+ * Reason: the rename will do {oldPropName: newPropName}, meaning
132
+ * the rename will not propagate further, so we have to handle
133
+ * the conversion to {newPropName: newPropName} ourselves.
134
+ */
135
+ async getAdditionLocationsForRenameOfPropInsideComponentWithProp(document, tsDoc, position, convertedRenameLocations, snapshots, lang, newName) {
136
+ // First find out if it's really the "rename prop inside component with that prop" case
137
+ // Use original document for that because only there the `export` is present.
138
+ // ':' for typescript's type operator (`export let bla: boolean`)
139
+ // '//' and '/*' for comments (`export let bla// comment` or `export let bla/* comment */`)
140
+ const regex = new RegExp(`export\\s+let\\s+${this.getVariableAtPosition(tsDoc, lang, position)}($|\\s|;|:|\/\*|\/\/)`);
141
+ const isRenameInsideComponentWithProp = regex.test((0, documents_1.getLineAtPosition)(position, document.getText()));
142
+ if (!isRenameInsideComponentWithProp) {
143
+ return [];
144
+ }
145
+ // We now know that the rename happens at `export let X` -> let's find the corresponding
146
+ // prop rename further below in the document.
147
+ const updatePropLocation = this.findLocationWhichWantsToUpdatePropName(convertedRenameLocations, snapshots);
148
+ if (!updatePropLocation) {
149
+ return [];
150
+ }
151
+ // Typescript does a rename of `oldPropName: newPropName` -> find oldPropName and rename that, too.
152
+ const idxOfOldPropName = tsDoc
153
+ .getFullText()
154
+ .lastIndexOf(':', updatePropLocation.textSpan.start);
155
+ // This requires svelte2tsx to have the properties written down like `return props: {bla: bla}`.
156
+ // It would not work for `return props: {bla}` because then typescript would do a rename of `{bla: renamed}`,
157
+ // so other locations would not be affected.
158
+ const replacementsForProp = (lang.findRenameLocations(updatePropLocation.fileName, idxOfOldPropName, false, false, true) || []).filter((rename) =>
159
+ // filter out all renames inside the component except the prop rename,
160
+ // because the others were done before and then would show up twice, making a wrong rename.
161
+ rename.fileName !== updatePropLocation.fileName ||
162
+ this.isInSvelte2TsxPropLine(tsDoc, rename));
163
+ const renameLocations = await this.mapAndFilterRenameLocations(replacementsForProp, snapshots);
164
+ // Adjust shorthands
165
+ return renameLocations.map((location) => {
166
+ if (updatePropLocation.fileName === location.fileName) {
167
+ return location;
168
+ }
169
+ const sourceFile = lang.getProgram()?.getSourceFile(location.fileName);
170
+ if (!sourceFile ||
171
+ location.fileName !== sourceFile.fileName ||
172
+ location.range.start.line < 0 ||
173
+ location.range.end.line < 0) {
174
+ return location;
175
+ }
176
+ const snapshot = snapshots.get(location.fileName);
177
+ if (!(snapshot instanceof DocumentSnapshot_1.SvelteDocumentSnapshot)) {
178
+ return location;
179
+ }
180
+ const shorthandLocation = this.transformShorthand(snapshot, location, newName);
181
+ return shorthandLocation || location;
182
+ });
183
+ }
184
+ /**
185
+ * If user renames prop of component A inside component B,
186
+ * we need to handle the rename of the prop of A ourselves.
187
+ * Reason: the rename will rename the prop in the computed svelte2tsx code,
188
+ * but not the `export let X` code in the original because the
189
+ * rename does not propagate further than the prop.
190
+ * This additional logic/propagation is done in this method.
191
+ */
192
+ async getAdditionalLocationsForRenameOfPropInsideOtherComponent(convertedRenameLocations, snapshots, lang, requestedFileName) {
193
+ // Check if it's a prop rename
194
+ const updatePropLocation = this.findLocationWhichWantsToUpdatePropName(convertedRenameLocations, snapshots);
195
+ if (!updatePropLocation) {
196
+ return [];
197
+ }
198
+ const getCanonicalFileName = (0, utils_1.createGetCanonicalFileName)(typescript_1.default.sys.useCaseSensitiveFileNames);
199
+ if (getCanonicalFileName(updatePropLocation.fileName) ===
200
+ getCanonicalFileName(requestedFileName)) {
201
+ return [];
202
+ }
203
+ // Find generated `export let`
204
+ const doc = snapshots.get(updatePropLocation.fileName);
205
+ const match = this.matchGeneratedExportLet(doc, updatePropLocation);
206
+ if (!match) {
207
+ return [];
208
+ }
209
+ // Use match to replace that let, too.
210
+ const idx = (match.index || 0) + match[0].lastIndexOf(match[1]);
211
+ const replacementsForProp = lang.findRenameLocations(updatePropLocation.fileName, idx, false, false) || [];
212
+ return this.checkShortHandBindingOrSlotLetLocation(lang, await this.mapAndFilterRenameLocations(replacementsForProp, snapshots), snapshots);
213
+ }
214
+ // --------> svelte2tsx?
215
+ matchGeneratedExportLet(snapshot, updatePropLocation) {
216
+ const regex = new RegExp(
217
+ // no 'export let', only 'let', because that's what it's translated to in svelte2tsx
218
+ // '//' and '/*' for comments (`let bla/*Ωignore_startΩ*/`)
219
+ `\\s+let\\s+(${snapshot
220
+ .getFullText()
221
+ .substring(updatePropLocation.textSpan.start, updatePropLocation.textSpan.start + updatePropLocation.textSpan.length)})($|\\s|;|:|\/\*|\/\/)`);
222
+ const match = snapshot.getFullText().match(regex);
223
+ return match;
224
+ }
225
+ findLocationWhichWantsToUpdatePropName(convertedRenameLocations, snapshots) {
226
+ return convertedRenameLocations.find((loc) => {
227
+ // Props are not in mapped range
228
+ if (loc.range.start.line >= 0 && loc.range.end.line >= 0) {
229
+ return;
230
+ }
231
+ const snapshot = snapshots.get(loc.fileName);
232
+ // Props are in svelte snapshots only
233
+ if (!(snapshot instanceof DocumentSnapshot_1.SvelteDocumentSnapshot)) {
234
+ return false;
235
+ }
236
+ return this.isInSvelte2TsxPropLine(snapshot, loc);
237
+ });
238
+ }
239
+ // --------> svelte2tsx?
240
+ isInSvelte2TsxPropLine(snapshot, loc) {
241
+ return (0, utils_3.isAfterSvelte2TsxPropsReturn)(snapshot.getFullText(), loc.textSpan.start);
242
+ }
243
+ /**
244
+ * The rename locations the ts language services hands back are relative to the
245
+ * svelte2tsx generated code -> map it back to the original document positions.
246
+ * Some of those positions could be unmapped (line=-1), these are handled elsewhere.
247
+ * Also filter out wrong renames.
248
+ */
249
+ async mapAndFilterRenameLocations(renameLocations, snapshots, newName) {
250
+ const mappedLocations = await Promise.all(renameLocations.map(async (loc) => {
251
+ const snapshot = await snapshots.retrieve(loc.fileName);
252
+ if (!(0, utils_3.isTextSpanInGeneratedCode)(snapshot.getFullText(), loc.textSpan)) {
253
+ return {
254
+ ...loc,
255
+ range: this.mapRangeToOriginal(snapshot, loc.textSpan),
256
+ newName
257
+ };
258
+ }
259
+ }));
260
+ return this.filterWrongRenameLocations(mappedLocations.filter(utils_1.isNotNullOrUndefined));
261
+ }
262
+ filterWrongRenameLocations(mappedLocations) {
263
+ return (0, utils_1.filterAsync)(mappedLocations, async (loc) => {
264
+ const snapshot = await this.getSnapshot(loc.fileName);
265
+ if (!(snapshot instanceof DocumentSnapshot_1.SvelteDocumentSnapshot)) {
266
+ return true;
267
+ }
268
+ const content = snapshot.getText(0, snapshot.getLength());
269
+ // When the user renames a Svelte component, ts will also want to rename
270
+ // `__sveltets_2_instanceOf(TheComponentToRename)` or
271
+ // `__sveltets_1_ensureType(TheComponentToRename,..`. Prevent that.
272
+ // Additionally, we cannot rename the hidden variable containing the store value
273
+ return (notPrecededBy('__sveltets_2_instanceOf(') &&
274
+ notPrecededBy('__sveltets_1_ensureType(') && // no longer necessary for new transformation
275
+ notPrecededBy('= __sveltets_2_store_get('));
276
+ function notPrecededBy(str) {
277
+ return (content.lastIndexOf(str, loc.textSpan.start) !== loc.textSpan.start - str.length);
278
+ }
279
+ });
280
+ }
281
+ mapRangeToOriginal(snapshot, textSpan) {
282
+ // We need to work around a current svelte2tsx limitation: Replacements and
283
+ // source mapping is done in such a way that sometimes the end of the range is unmapped
284
+ // and the index of the last character is returned instead (which is one less).
285
+ // Most of the time this is not much of a problem, but in the context of renaming, it is.
286
+ // We work around that by adding +1 to the end, if necessary.
287
+ // This can be done because
288
+ // 1. we know renames can only ever occur in one line
289
+ // 2. the generated svelte2tsx code will not modify variable names, so we know
290
+ // the original range should be the same length as the textSpan's length
291
+ const range = (0, documents_1.mapRangeToOriginal)(snapshot, (0, utils_2.convertRange)(snapshot, textSpan));
292
+ if (range.end.character - range.start.character < textSpan.length) {
293
+ range.end.character++;
294
+ }
295
+ return range;
296
+ }
297
+ getVariableAtPosition(tsDoc, lang, position) {
298
+ const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position));
299
+ const { start, length } = lang.getSmartSelectionRange(tsDoc.filePath, offset).textSpan;
300
+ return tsDoc.getText(start, start + length);
301
+ }
302
+ async getLSAndTSDoc(document) {
303
+ return this.lsAndTsDocResolver.getLSAndTSDoc(document);
304
+ }
305
+ getSnapshot(filePath) {
306
+ return this.lsAndTsDocResolver.getOrCreateSnapshot(filePath);
307
+ }
308
+ checkShortHandBindingOrSlotLetLocation(lang, renameLocations, snapshots, newName) {
309
+ return renameLocations.map((location) => {
310
+ const sourceFile = lang.getProgram()?.getSourceFile(location.fileName);
311
+ if (!sourceFile ||
312
+ location.fileName !== sourceFile.fileName ||
313
+ location.range.start.line < 0 ||
314
+ location.range.end.line < 0) {
315
+ return location;
316
+ }
317
+ const snapshot = snapshots.get(location.fileName);
318
+ if (!(snapshot instanceof DocumentSnapshot_1.SvelteDocumentSnapshot)) {
319
+ return location;
320
+ }
321
+ const { parent } = snapshot;
322
+ if (snapshot.isSvelte5Plus && newName && location.suffixText) {
323
+ // Svelte 5 runes mode, thanks to $props(), is much easier to handle rename-wise.
324
+ // Notably, it doesn't need the "additional props rename locations" logic, because
325
+ // these renames already appear here.
326
+ const shorthandLocation = this.transformShorthand(snapshot, location, newName);
327
+ if (shorthandLocation) {
328
+ return shorthandLocation;
329
+ }
330
+ }
331
+ let rangeStart = parent.offsetAt(location.range.start);
332
+ let prefixText = location.prefixText?.trimRight();
333
+ // rename needs to be prefixed in case of a bind shorthand on a HTML element
334
+ if (!prefixText) {
335
+ const original = parent.getText({
336
+ start: vscode_languageserver_1.Position.create(location.range.start.line, location.range.start.character - bind.length),
337
+ end: location.range.end
338
+ });
339
+ if (original.startsWith(bind) &&
340
+ (0, documents_1.getNodeIfIsInHTMLStartTag)(parent.html, rangeStart)) {
341
+ return {
342
+ ...location,
343
+ prefixText: original.slice(bind.length) + '={',
344
+ suffixText: '}'
345
+ };
346
+ }
347
+ }
348
+ if (!prefixText || prefixText.slice(-1) !== ':') {
349
+ return location;
350
+ }
351
+ // prefix is of the form `oldVarName: ` -> hints at a shorthand
352
+ // we need to make sure we only adjust shorthands on elements/components
353
+ if (!(0, documents_1.getNodeIfIsInStartTag)(parent.html, rangeStart) ||
354
+ // shorthands: let:xx, bind:xx, {xx}
355
+ (parent.getText().charAt(rangeStart - 1) !== ':' &&
356
+ // not use:action={{foo}}
357
+ !/[^{]\s+{$/.test(parent.getText({
358
+ start: vscode_languageserver_1.Position.create(0, 0),
359
+ end: location.range.start
360
+ })))) {
361
+ return location;
362
+ }
363
+ prefixText = prefixText.slice(0, -1) + '={';
364
+ location = {
365
+ ...location,
366
+ prefixText,
367
+ suffixText: '}'
368
+ };
369
+ // rename range needs to be adjusted in case of an attribute shorthand
370
+ if (snapshot.getOriginalText().charAt(rangeStart - 1) === '{') {
371
+ rangeStart--;
372
+ const rangeEnd = parent.offsetAt(location.range.end) + 1;
373
+ location.range = {
374
+ start: parent.positionAt(rangeStart),
375
+ end: parent.positionAt(rangeEnd)
376
+ };
377
+ }
378
+ return location;
379
+ });
380
+ }
381
+ transformShorthand(snapshot, location, newName) {
382
+ const shorthand = this.getBindingOrAttrShorthand(snapshot, location.range.start);
383
+ if (shorthand) {
384
+ if (shorthand.isBinding) {
385
+ // bind:|foo| -> bind:|newName|={foo}
386
+ return {
387
+ ...location,
388
+ prefixText: '',
389
+ suffixText: `={${shorthand.id.name}}`
390
+ };
391
+ }
392
+ else {
393
+ return {
394
+ ...location,
395
+ range: {
396
+ // {|foo|} -> |{foo|}
397
+ start: {
398
+ line: location.range.start.line,
399
+ character: location.range.start.character - 1
400
+ },
401
+ end: location.range.end
402
+ },
403
+ // |{foo|} -> newName=|{foo|}
404
+ newName: shorthand.id.name,
405
+ prefixText: `${newName}={`,
406
+ suffixText: ''
407
+ };
408
+ }
409
+ }
410
+ }
411
+ getBindingOrAttrShorthand(snapshot, position, svelteNode = snapshot.svelteNodeAt(position)) {
412
+ if ((svelteNode?.parent?.type === 'Binding' ||
413
+ svelteNode?.parent?.type === 'AttributeShorthand') &&
414
+ svelteNode.parent.expression.end === svelteNode.parent.end) {
415
+ return {
416
+ id: svelteNode,
417
+ isBinding: svelteNode.parent.type === 'Binding'
418
+ };
419
+ }
420
+ }
421
+ }
422
+ exports.RenameProviderImpl = RenameProviderImpl;
423
+ //# sourceMappingURL=RenameProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenameProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/RenameProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Position, SelectionRange } from 'vscode-languageserver';
2
+ import { Document } from '../../../lib/documents';
3
+ import { SelectionRangeProvider } from '../../interfaces';
4
+ import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
5
+ export declare class SelectionRangeProviderImpl implements SelectionRangeProvider {
6
+ private readonly lsAndTsDocResolver;
7
+ constructor(lsAndTsDocResolver: LSAndTSDocResolver);
8
+ getSelectionRange(document: Document, position: Position): Promise<SelectionRange | null>;
9
+ private toSelectionRange;
10
+ private mapSelectionRangeToParent;
11
+ private filterOutUnmappedRange;
12
+ /**
13
+ * flatten the selection range and its parent to an array in reverse order
14
+ * so it's easier to filter out unmapped selection and create a new tree of
15
+ * selection range
16
+ */
17
+ private flattenAndReverseSelectionRange;
18
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectionRangeProviderImpl = void 0;
4
+ const vscode_languageserver_1 = require("vscode-languageserver");
5
+ const documents_1 = require("../../../lib/documents");
6
+ const utils_1 = require("../utils");
7
+ const utils_2 = require("./utils");
8
+ class SelectionRangeProviderImpl {
9
+ constructor(lsAndTsDocResolver) {
10
+ this.lsAndTsDocResolver = lsAndTsDocResolver;
11
+ }
12
+ async getSelectionRange(document, position) {
13
+ const { tsDoc, lang } = await this.lsAndTsDocResolver.getLsForSyntheticOperations(document);
14
+ const tsSelectionRange = lang.getSmartSelectionRange(tsDoc.filePath, tsDoc.offsetAt(tsDoc.getGeneratedPosition(position)));
15
+ const selectionRange = this.toSelectionRange(tsDoc, tsSelectionRange);
16
+ const mappedRange = this.mapSelectionRangeToParent(tsDoc, document, selectionRange);
17
+ return this.filterOutUnmappedRange(mappedRange);
18
+ }
19
+ toSelectionRange(snapshot, { textSpan, parent }) {
20
+ return {
21
+ range: (0, utils_1.convertRange)(snapshot, textSpan),
22
+ parent: parent && this.toSelectionRange(snapshot, parent)
23
+ };
24
+ }
25
+ mapSelectionRangeToParent(tsDoc, document, selectionRange) {
26
+ const { range, parent } = selectionRange;
27
+ const originalRange = (0, documents_1.mapRangeToOriginal)(tsDoc, range);
28
+ (0, utils_2.checkRangeMappingWithGeneratedSemi)(originalRange, range, tsDoc);
29
+ if (!parent) {
30
+ return vscode_languageserver_1.SelectionRange.create(originalRange);
31
+ }
32
+ return vscode_languageserver_1.SelectionRange.create(originalRange, this.mapSelectionRangeToParent(tsDoc, document, parent));
33
+ }
34
+ filterOutUnmappedRange(selectionRange) {
35
+ const flattened = this.flattenAndReverseSelectionRange(selectionRange);
36
+ const filtered = flattened.filter((range) => range.start.line > 0 && range.end.line > 0);
37
+ if (!filtered.length) {
38
+ return null;
39
+ }
40
+ let result;
41
+ for (const selectionRange of filtered) {
42
+ result = vscode_languageserver_1.SelectionRange.create(selectionRange, result);
43
+ }
44
+ return result ?? null;
45
+ }
46
+ /**
47
+ * flatten the selection range and its parent to an array in reverse order
48
+ * so it's easier to filter out unmapped selection and create a new tree of
49
+ * selection range
50
+ */
51
+ flattenAndReverseSelectionRange(selectionRange) {
52
+ const result = [];
53
+ let current = selectionRange;
54
+ while (current.parent) {
55
+ result.unshift(current.range);
56
+ current = current.parent;
57
+ }
58
+ return result;
59
+ }
60
+ }
61
+ exports.SelectionRangeProviderImpl = SelectionRangeProviderImpl;
62
+ //# sourceMappingURL=SelectionRangeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectionRangeProvider.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/SelectionRangeProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { CancellationToken, Range, SemanticTokens } from 'vscode-languageserver';
2
+ import { Document } from '../../../lib/documents';
3
+ import { SemanticTokensProvider } from '../../interfaces';
4
+ import { LSAndTSDocResolver } from '../LSAndTSDocResolver';
5
+ export declare class SemanticTokensProviderImpl implements SemanticTokensProvider {
6
+ private readonly lsAndTsDocResolver;
7
+ constructor(lsAndTsDocResolver: LSAndTSDocResolver);
8
+ getSemanticTokens(textDocument: Document, range?: Range, cancellationToken?: CancellationToken): Promise<SemanticTokens | null>;
9
+ private map;
10
+ /**
11
+ * TSClassification = (TokenType + 1) << TokenEncodingConsts.typeOffset + TokenModifier
12
+ */
13
+ private getTokenTypeFromClassification;
14
+ private getTokenModifierFromClassification;
15
+ }