@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,447 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginHost = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const perf_hooks_1 = require("perf_hooks");
6
+ const vscode_languageserver_1 = require("vscode-languageserver");
7
+ const documents_1 = require("../lib/documents");
8
+ const logger_1 = require("../logger");
9
+ const utils_1 = require("../utils");
10
+ var ExecuteMode;
11
+ (function (ExecuteMode) {
12
+ ExecuteMode[ExecuteMode["None"] = 0] = "None";
13
+ ExecuteMode[ExecuteMode["FirstNonNull"] = 1] = "FirstNonNull";
14
+ ExecuteMode[ExecuteMode["Collect"] = 2] = "Collect";
15
+ })(ExecuteMode || (ExecuteMode = {}));
16
+ class PluginHost {
17
+ constructor(documentsManager) {
18
+ this.documentsManager = documentsManager;
19
+ this.plugins = [];
20
+ this.pluginHostConfig = {
21
+ filterIncompleteCompletions: true,
22
+ definitionLinkSupport: false
23
+ };
24
+ this.deferredRequests = {};
25
+ this.requestTimings = {};
26
+ }
27
+ initialize(pluginHostConfig) {
28
+ this.pluginHostConfig = pluginHostConfig;
29
+ }
30
+ register(plugin) {
31
+ this.plugins.push(plugin);
32
+ }
33
+ didUpdateDocument() {
34
+ this.deferredRequests = {};
35
+ }
36
+ async getDiagnostics(textDocument, cancellationToken) {
37
+ const document = this.getDocument(textDocument.uri);
38
+ if ((document.getFilePath()?.includes('/node_modules/') ||
39
+ document.getFilePath()?.includes('\\node_modules\\')) &&
40
+ // Sapper convention: Put stuff inside node_modules below src
41
+ !(document.getFilePath()?.includes('/src/node_modules/') ||
42
+ document.getFilePath()?.includes('\\src\\node_modules\\'))) {
43
+ // Don't return diagnostics for files inside node_modules. These are considered read-only (cannot be changed)
44
+ // and in case of svelte-check they would pollute/skew the output
45
+ return [];
46
+ }
47
+ return (0, lodash_1.flatten)(await this.execute('getDiagnostics', [document, cancellationToken], ExecuteMode.Collect, 'high'));
48
+ }
49
+ async doHover(textDocument, position) {
50
+ const document = this.getDocument(textDocument.uri);
51
+ return this.execute('doHover', [document, position], ExecuteMode.FirstNonNull, 'high');
52
+ }
53
+ async getCompletions(textDocument, position, completionContext, cancellationToken) {
54
+ const document = this.getDocument(textDocument.uri);
55
+ const completions = await Promise.all(this.plugins.map(async (plugin) => {
56
+ const result = await this.tryExecutePlugin(plugin, 'getCompletions', [document, position, completionContext, cancellationToken], null);
57
+ if (result) {
58
+ return { result: result, plugin: plugin.__name };
59
+ }
60
+ })).then((completions) => completions.filter(utils_1.isNotNullOrUndefined));
61
+ const html = completions.find((completion) => completion.plugin === 'html');
62
+ const ts = completions.find((completion) => completion.plugin === 'ts');
63
+ if (html && ts && (0, documents_1.getNodeIfIsInHTMLStartTag)(document.html, document.offsetAt(position))) {
64
+ // Completion in a component or html start tag and both html and ts
65
+ // suggest something -> filter out all duplicates from TS completions
66
+ const htmlCompletions = new Set(html.result.items.map((item) => item.label));
67
+ ts.result.items = ts.result.items.filter((item) => {
68
+ const label = item.label;
69
+ if (htmlCompletions.has(label)) {
70
+ return false;
71
+ }
72
+ if (label[0] === '"' && label[label.length - 1] === '"') {
73
+ // this will result in a wrong completion regardless, remove the quotes
74
+ item.label = item.label.slice(1, -1);
75
+ if (htmlCompletions.has(item.label)) {
76
+ // "aria-label" -> aria-label -> exists in html completions
77
+ return false;
78
+ }
79
+ }
80
+ if (label.startsWith('on')) {
81
+ if (htmlCompletions.has('on:' + label.slice(2))) {
82
+ // onclick -> on:click -> exists in html completions
83
+ return false;
84
+ }
85
+ }
86
+ // adjust sort text so it does appear after html completions
87
+ item.sortText = 'Z' + (item.sortText || '');
88
+ return true;
89
+ });
90
+ }
91
+ let itemDefaults;
92
+ if (completions.length === 1) {
93
+ itemDefaults = completions[0]?.result.itemDefaults;
94
+ }
95
+ else {
96
+ // don't apply items default to the result of other plugins
97
+ for (const completion of completions) {
98
+ const itemDefaults = completion.result.itemDefaults;
99
+ if (!itemDefaults) {
100
+ continue;
101
+ }
102
+ completion.result.items.forEach((item) => {
103
+ item.commitCharacters ??= itemDefaults.commitCharacters;
104
+ });
105
+ }
106
+ }
107
+ let flattenedCompletions = (0, lodash_1.flatten)(completions.map((completion) => completion.result.items));
108
+ const isIncomplete = completions.reduce((incomplete, completion) => incomplete || completion.result.isIncomplete, false);
109
+ // If the result is incomplete, we need to filter the results ourselves
110
+ // to throw out non-matching results. VSCode does filter client-side,
111
+ // but other IDEs might not.
112
+ if (isIncomplete && this.pluginHostConfig.filterIncompleteCompletions) {
113
+ const offset = document.offsetAt(position);
114
+ // Assumption for performance reasons:
115
+ // Noone types import names longer than 20 characters and still expects perfect autocompletion.
116
+ const text = document.getText().substring(Math.max(0, offset - 20), offset);
117
+ const start = (0, utils_1.regexLastIndexOf)(text, /[\W\s]/g) + 1;
118
+ const filterValue = text.substring(start).toLowerCase();
119
+ flattenedCompletions = flattenedCompletions.filter((comp) => comp.label.toLowerCase().includes(filterValue));
120
+ }
121
+ const result = vscode_languageserver_1.CompletionList.create(flattenedCompletions, isIncomplete);
122
+ result.itemDefaults = itemDefaults;
123
+ return result;
124
+ }
125
+ async resolveCompletion(textDocument, completionItem, cancellationToken) {
126
+ const document = this.getDocument(textDocument.uri);
127
+ const result = await this.execute('resolveCompletion', [document, completionItem, cancellationToken], ExecuteMode.FirstNonNull, 'high');
128
+ return result ?? completionItem;
129
+ }
130
+ async formatDocument(textDocument, options) {
131
+ const document = this.getDocument(textDocument.uri);
132
+ return (0, lodash_1.flatten)(await this.execute('formatDocument', [document, options], ExecuteMode.Collect, 'high'));
133
+ }
134
+ async doTagComplete(textDocument, position) {
135
+ const document = this.getDocument(textDocument.uri);
136
+ return this.execute('doTagComplete', [document, position], ExecuteMode.FirstNonNull, 'high');
137
+ }
138
+ async getDocumentColors(textDocument) {
139
+ const document = this.getDocument(textDocument.uri);
140
+ return (0, lodash_1.flatten)(await this.execute('getDocumentColors', [document], ExecuteMode.Collect, 'low'));
141
+ }
142
+ async getColorPresentations(textDocument, range, color) {
143
+ const document = this.getDocument(textDocument.uri);
144
+ return (0, lodash_1.flatten)(await this.execute('getColorPresentations', [document, range, color], ExecuteMode.Collect, 'high'));
145
+ }
146
+ async getDocumentSymbols(textDocument, cancellationToken) {
147
+ const document = this.getDocument(textDocument.uri);
148
+ // VSCode requested document symbols twice for the outline view and the sticky scroll
149
+ // Manually delay here and don't use low priority as one of them will return no symbols
150
+ await new Promise((resolve) => setTimeout(resolve, 1000));
151
+ if (cancellationToken.isCancellationRequested) {
152
+ return [];
153
+ }
154
+ return (0, lodash_1.flatten)(await this.execute('getDocumentSymbols', [document, cancellationToken], ExecuteMode.Collect, 'high'));
155
+ }
156
+ comparePosition(pos1, pos2) {
157
+ if (pos1.line < pos2.line)
158
+ return -1;
159
+ if (pos1.line > pos2.line)
160
+ return 1;
161
+ if (pos1.character < pos2.character)
162
+ return -1;
163
+ if (pos1.character > pos2.character)
164
+ return 1;
165
+ return 0;
166
+ }
167
+ rangeContains(parent, child) {
168
+ return (this.comparePosition(parent.start, child.start) <= 0 &&
169
+ this.comparePosition(child.end, parent.end) <= 0);
170
+ }
171
+ async getHierarchicalDocumentSymbols(textDocument, cancellationToken) {
172
+ const flat = await this.getDocumentSymbols(textDocument, cancellationToken);
173
+ const symbols = flat
174
+ .map((s) => vscode_languageserver_1.DocumentSymbol.create(s.name, undefined, s.kind, s.location.range, s.location.range, []))
175
+ .sort((a, b) => {
176
+ const start = this.comparePosition(a.range.start, b.range.start);
177
+ if (start !== 0)
178
+ return start;
179
+ return this.comparePosition(b.range.end, a.range.end);
180
+ });
181
+ const stack = [];
182
+ const roots = [];
183
+ for (const node of symbols) {
184
+ while (stack.length > 0 && !this.rangeContains(stack.at(-1).range, node.range)) {
185
+ stack.pop();
186
+ }
187
+ if (stack.length > 0) {
188
+ stack.at(-1).children.push(node);
189
+ }
190
+ else {
191
+ roots.push(node);
192
+ }
193
+ stack.push(node);
194
+ }
195
+ return roots;
196
+ }
197
+ async getDefinitions(textDocument, position) {
198
+ const document = this.getDocument(textDocument.uri);
199
+ const definitions = (0, lodash_1.flatten)(await this.execute('getDefinitions', [document, position], ExecuteMode.Collect, 'high'));
200
+ if (this.pluginHostConfig.definitionLinkSupport) {
201
+ return definitions;
202
+ }
203
+ else {
204
+ return definitions.map((def) => ({ range: def.targetSelectionRange, uri: def.targetUri }));
205
+ }
206
+ }
207
+ async getCodeActions(textDocument, range, context, cancellationToken) {
208
+ const document = this.getDocument(textDocument.uri);
209
+ const actions = (0, lodash_1.flatten)(await this.execute('getCodeActions', [document, range, context, cancellationToken], ExecuteMode.Collect, 'high'));
210
+ // Sort Svelte actions below other actions as they are often less relevant
211
+ actions.sort((a, b) => {
212
+ const aPrio = a.title.startsWith('(svelte)') ? 1 : 0;
213
+ const bPrio = b.title.startsWith('(svelte)') ? 1 : 0;
214
+ return aPrio - bPrio;
215
+ });
216
+ return actions;
217
+ }
218
+ async executeCommand(textDocument, command, args) {
219
+ const document = this.getDocument(textDocument.uri);
220
+ return await this.execute('executeCommand', [document, command, args], ExecuteMode.FirstNonNull, 'high');
221
+ }
222
+ async resolveCodeAction(textDocument, codeAction, cancellationToken) {
223
+ const document = this.getDocument(textDocument.uri);
224
+ const result = await this.execute('resolveCodeAction', [document, codeAction, cancellationToken], ExecuteMode.FirstNonNull, 'high');
225
+ return result ?? codeAction;
226
+ }
227
+ async updateImports(fileRename) {
228
+ return await this.execute('updateImports', [fileRename], ExecuteMode.FirstNonNull, 'high');
229
+ }
230
+ async prepareRename(textDocument, position) {
231
+ const document = this.getDocument(textDocument.uri);
232
+ return await this.execute('prepareRename', [document, position], ExecuteMode.FirstNonNull, 'high');
233
+ }
234
+ async rename(textDocument, position, newName) {
235
+ const document = this.getDocument(textDocument.uri);
236
+ return await this.execute('rename', [document, position, newName], ExecuteMode.FirstNonNull, 'high');
237
+ }
238
+ async findReferences(textDocument, position, context, cancellationToken) {
239
+ const document = this.getDocument(textDocument.uri);
240
+ return await this.execute('findReferences', [document, position, context, cancellationToken], ExecuteMode.FirstNonNull, 'high');
241
+ }
242
+ async fileReferences(uri) {
243
+ return await this.execute('fileReferences', [uri], ExecuteMode.FirstNonNull, 'high');
244
+ }
245
+ async findComponentReferences(uri) {
246
+ return await this.execute('findComponentReferences', [uri], ExecuteMode.FirstNonNull, 'high');
247
+ }
248
+ async getSignatureHelp(textDocument, position, context, cancellationToken) {
249
+ const document = this.getDocument(textDocument.uri);
250
+ return await this.execute('getSignatureHelp', [document, position, context, cancellationToken], ExecuteMode.FirstNonNull, 'high');
251
+ }
252
+ /**
253
+ * The selection range supports multiple cursors,
254
+ * each position should return its own selection range tree like `Array.map`.
255
+ * Quote the LSP spec
256
+ * > A selection range in the return array is for the position in the provided parameters at the same index. Therefore positions[i] must be contained in result[i].range.
257
+ * @see https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_selectionRange
258
+ *
259
+ * Making PluginHost implement the same interface would make it quite hard to get
260
+ * the corresponding selection range of each position from different plugins.
261
+ * Therefore the special treatment here.
262
+ */
263
+ async getSelectionRanges(textDocument, positions) {
264
+ const document = this.getDocument(textDocument.uri);
265
+ try {
266
+ return Promise.all(positions.map(async (position) => {
267
+ for (const plugin of this.plugins) {
268
+ const range = await plugin.getSelectionRange?.(document, position);
269
+ if (range) {
270
+ return range;
271
+ }
272
+ }
273
+ return vscode_languageserver_1.SelectionRange.create(vscode_languageserver_1.Range.create(position, position));
274
+ }));
275
+ }
276
+ catch (error) {
277
+ logger_1.Logger.error(error);
278
+ return null;
279
+ }
280
+ }
281
+ async getSemanticTokens(textDocument, range, cancellationToken) {
282
+ const document = this.getDocument(textDocument.uri);
283
+ return await this.execute('getSemanticTokens', [document, range, cancellationToken], ExecuteMode.FirstNonNull, 'smart');
284
+ }
285
+ async getLinkedEditingRanges(textDocument, position) {
286
+ const document = this.getDocument(textDocument.uri);
287
+ return await this.execute('getLinkedEditingRanges', [document, position], ExecuteMode.FirstNonNull, 'high');
288
+ }
289
+ getImplementation(textDocument, position, cancellationToken) {
290
+ const document = this.getDocument(textDocument.uri);
291
+ return this.execute('getImplementation', [document, position, cancellationToken], ExecuteMode.FirstNonNull, 'high');
292
+ }
293
+ getTypeDefinition(textDocument, position) {
294
+ const document = this.getDocument(textDocument.uri);
295
+ return this.execute('getTypeDefinition', [document, position], ExecuteMode.FirstNonNull, 'high');
296
+ }
297
+ getInlayHints(textDocument, range, cancellationToken) {
298
+ const document = this.getDocument(textDocument.uri);
299
+ return this.execute('getInlayHints', [document, range, cancellationToken], ExecuteMode.FirstNonNull, 'smart');
300
+ }
301
+ prepareCallHierarchy(textDocument, position, cancellationToken) {
302
+ const document = this.getDocument(textDocument.uri);
303
+ return this.execute('prepareCallHierarchy', [document, position, cancellationToken], ExecuteMode.FirstNonNull, 'high');
304
+ }
305
+ getIncomingCalls(item, cancellationToken) {
306
+ return this.execute('getIncomingCalls', [item, cancellationToken], ExecuteMode.FirstNonNull, 'high');
307
+ }
308
+ getOutgoingCalls(item, cancellationToken) {
309
+ return this.execute('getOutgoingCalls', [item, cancellationToken], ExecuteMode.FirstNonNull, 'high');
310
+ }
311
+ async getCodeLens(textDocument) {
312
+ const document = this.getDocument(textDocument.uri);
313
+ if (!document) {
314
+ throw new Error('Cannot call methods on an unopened document');
315
+ }
316
+ const result = await this.execute('getCodeLens', [document], ExecuteMode.Collect, 'smart');
317
+ return (0, lodash_1.flatten)(result.filter(Boolean));
318
+ }
319
+ async getFoldingRanges(textDocument) {
320
+ const document = this.getDocument(textDocument.uri);
321
+ const result = (0, lodash_1.flatten)(await this.execute('getFoldingRanges', [document], ExecuteMode.Collect, 'high'));
322
+ return result;
323
+ }
324
+ async resolveCodeLens(textDocument, codeLens, cancellationToken) {
325
+ const document = this.getDocument(textDocument.uri);
326
+ if (!document) {
327
+ throw new Error('Cannot call methods on an unopened document');
328
+ }
329
+ return ((await this.execute('resolveCodeLens', [document, codeLens, cancellationToken], ExecuteMode.FirstNonNull, 'smart')) ?? codeLens);
330
+ }
331
+ findDocumentHighlight(textDocument, position) {
332
+ const document = this.getDocument(textDocument.uri);
333
+ if (!document) {
334
+ throw new Error('Cannot call methods on an unopened document');
335
+ }
336
+ return (this.execute('findDocumentHighlight', [document, position], ExecuteMode.FirstNonNull, 'high') ?? [] // fall back to empty array to prevent fallback to word-based highlighting
337
+ );
338
+ }
339
+ async getWorkspaceSymbols(query, token) {
340
+ return await this.execute('getWorkspaceSymbols', [query, token], ExecuteMode.FirstNonNull, 'high');
341
+ }
342
+ onWatchFileChanges(onWatchFileChangesParas) {
343
+ for (const support of this.plugins) {
344
+ support.onWatchFileChanges?.(onWatchFileChangesParas);
345
+ }
346
+ }
347
+ updateTsOrJsFile(fileName, changes) {
348
+ for (const support of this.plugins) {
349
+ support.updateTsOrJsFile?.(fileName, changes);
350
+ }
351
+ }
352
+ getDocument(uri) {
353
+ const document = this.documentsManager.get(uri);
354
+ if (!document) {
355
+ throw new Error('Cannot call methods on an unopened document');
356
+ }
357
+ return document;
358
+ }
359
+ async execute(name, args, mode, priority) {
360
+ const plugins = this.plugins.filter((plugin) => typeof plugin[name] === 'function');
361
+ // Priority 'smart' tries to aproximate how much time a method takes to execute,
362
+ // making it low priority if it takes too long or if it seems like other methods do.
363
+ const now = perf_hooks_1.performance.now();
364
+ if (priority === 'smart' &&
365
+ (this.requestTimings[name]?.[0] > 500 ||
366
+ Object.values(this.requestTimings).filter((t) => t[0] > 400 && now - t[1] < 60 * 1000).length > 2)) {
367
+ logger_1.Logger.debug(`Executing next invocation of "${name}" with low priority`);
368
+ priority = 'low';
369
+ if (this.requestTimings[name]) {
370
+ this.requestTimings[name][0] = this.requestTimings[name][0] / 2 + 150;
371
+ }
372
+ }
373
+ if (priority === 'low') {
374
+ // If a request doesn't have priority, we first wait 1 second to
375
+ // 1. let higher priority requests get through first
376
+ // 2. wait for possible document changes, which make the request wait again
377
+ // Due to waiting, low priority items should preferrably be those who do not
378
+ // rely on positions or ranges and rather on the whole document only.
379
+ const debounce = async () => {
380
+ const id = Math.random();
381
+ this.deferredRequests[name] = [
382
+ id,
383
+ new Promise((resolve, reject) => {
384
+ setTimeout(() => {
385
+ if (!this.deferredRequests[name] ||
386
+ this.deferredRequests[name][0] === id) {
387
+ resolve();
388
+ }
389
+ else {
390
+ // We should not get into this case. According to the spec,
391
+ // the language client does not send another request
392
+ // of the same type until the previous one is answered.
393
+ reject();
394
+ }
395
+ }, 1000);
396
+ })
397
+ ];
398
+ try {
399
+ await this.deferredRequests[name][1];
400
+ if (!this.deferredRequests[name]) {
401
+ return debounce();
402
+ }
403
+ return true;
404
+ }
405
+ catch (e) {
406
+ return false;
407
+ }
408
+ };
409
+ const shouldContinue = await debounce();
410
+ if (!shouldContinue) {
411
+ return;
412
+ }
413
+ }
414
+ const startTime = perf_hooks_1.performance.now();
415
+ const result = await this.executePlugins(name, args, mode, plugins);
416
+ this.requestTimings[name] = [perf_hooks_1.performance.now() - startTime, startTime];
417
+ return result;
418
+ }
419
+ async executePlugins(name, args, mode, plugins) {
420
+ switch (mode) {
421
+ case ExecuteMode.FirstNonNull:
422
+ for (const plugin of plugins) {
423
+ const res = await this.tryExecutePlugin(plugin, name, args, null);
424
+ if (res != null) {
425
+ return res;
426
+ }
427
+ }
428
+ return null;
429
+ case ExecuteMode.Collect:
430
+ return Promise.all(plugins.map((plugin) => this.tryExecutePlugin(plugin, name, args, [])));
431
+ case ExecuteMode.None:
432
+ await Promise.all(plugins.map((plugin) => this.tryExecutePlugin(plugin, name, args, null)));
433
+ return;
434
+ }
435
+ }
436
+ async tryExecutePlugin(plugin, fnName, args, failValue) {
437
+ try {
438
+ return await plugin[fnName](...args);
439
+ }
440
+ catch (e) {
441
+ logger_1.Logger.error(e);
442
+ return failValue;
443
+ }
444
+ }
445
+ }
446
+ exports.PluginHost = PluginHost;
447
+ //# sourceMappingURL=PluginHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginHost.js","sourceRoot":"","sources":["../../../src/plugins/PluginHost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { Stylesheet, TextDocument } from 'vscode-css-languageservice';
2
+ import { Position } from 'vscode-languageserver';
3
+ import { Document, DocumentMapper, ReadableDocument } from '../../lib/documents';
4
+ import { CSSLanguageServices } from './service';
5
+ export interface CSSDocumentBase extends DocumentMapper, TextDocument {
6
+ languageId: string;
7
+ stylesheet: Stylesheet;
8
+ }
9
+ export declare class CSSDocument extends ReadableDocument implements DocumentMapper {
10
+ private parent;
11
+ private styleInfo;
12
+ readonly version: number;
13
+ stylesheet: Stylesheet;
14
+ languageId: string;
15
+ constructor(parent: Document, languageServices: CSSLanguageServices);
16
+ /**
17
+ * Get the fragment position relative to the parent
18
+ * @param pos Position in fragment
19
+ */
20
+ getOriginalPosition(pos: Position): Position;
21
+ /**
22
+ * Get the position relative to the start of the fragment
23
+ * @param pos Position in parent
24
+ */
25
+ getGeneratedPosition(pos: Position): Position;
26
+ /**
27
+ * Returns true if the given parent position is inside of this fragment
28
+ * @param pos Position in parent
29
+ */
30
+ isInGenerated(pos: Position): boolean;
31
+ /**
32
+ * Get the fragment text from the parent
33
+ */
34
+ getText(): string;
35
+ /**
36
+ * Returns the length of the fragment as calculated from the start and end positon
37
+ */
38
+ getTextLength(): number;
39
+ /**
40
+ * Return the parent file path
41
+ */
42
+ getFilePath(): string | null;
43
+ getURL(): string;
44
+ getAttributes(): Record<string, string>;
45
+ private get language();
46
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CSSDocument = void 0;
4
+ const documents_1 = require("../../lib/documents");
5
+ const service_1 = require("./service");
6
+ class CSSDocument extends documents_1.ReadableDocument {
7
+ constructor(parent, languageServices) {
8
+ super();
9
+ this.parent = parent;
10
+ this.version = this.parent.version;
11
+ if (this.parent.styleInfo) {
12
+ this.styleInfo = this.parent.styleInfo;
13
+ }
14
+ else {
15
+ this.styleInfo = {
16
+ attributes: {},
17
+ start: -1,
18
+ end: -1
19
+ };
20
+ }
21
+ this.languageId = this.language;
22
+ this.stylesheet = (0, service_1.getLanguageService)(languageServices, this.languageId).parseStylesheet(this);
23
+ }
24
+ /**
25
+ * Get the fragment position relative to the parent
26
+ * @param pos Position in fragment
27
+ */
28
+ getOriginalPosition(pos) {
29
+ const parentOffset = this.styleInfo.start + this.offsetAt(pos);
30
+ return this.parent.positionAt(parentOffset);
31
+ }
32
+ /**
33
+ * Get the position relative to the start of the fragment
34
+ * @param pos Position in parent
35
+ */
36
+ getGeneratedPosition(pos) {
37
+ const fragmentOffset = this.parent.offsetAt(pos) - this.styleInfo.start;
38
+ return this.positionAt(fragmentOffset);
39
+ }
40
+ /**
41
+ * Returns true if the given parent position is inside of this fragment
42
+ * @param pos Position in parent
43
+ */
44
+ isInGenerated(pos) {
45
+ const offset = this.parent.offsetAt(pos);
46
+ return offset >= this.styleInfo.start && offset <= this.styleInfo.end;
47
+ }
48
+ /**
49
+ * Get the fragment text from the parent
50
+ */
51
+ getText() {
52
+ return this.parent.getText().slice(this.styleInfo.start, this.styleInfo.end);
53
+ }
54
+ /**
55
+ * Returns the length of the fragment as calculated from the start and end positon
56
+ */
57
+ getTextLength() {
58
+ return this.styleInfo.end - this.styleInfo.start;
59
+ }
60
+ /**
61
+ * Return the parent file path
62
+ */
63
+ getFilePath() {
64
+ return this.parent.getFilePath();
65
+ }
66
+ getURL() {
67
+ return this.parent.getURL();
68
+ }
69
+ getAttributes() {
70
+ return this.styleInfo.attributes;
71
+ }
72
+ get language() {
73
+ const attrs = this.getAttributes();
74
+ return attrs.lang || attrs.type || 'css';
75
+ }
76
+ }
77
+ exports.CSSDocument = CSSDocument;
78
+ //# sourceMappingURL=CSSDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CSSDocument.js","sourceRoot":"","sources":["../../../../src/plugins/css/CSSDocument.ts"],"names":[],"mappings":";;;AAEA,mDAAiG;AACjG,uCAAoE;AAOpE,MAAa,WAAY,SAAQ,4BAAgB;IAO7C,YACY,MAAgB,EACxB,gBAAqC;QAErC,KAAK,EAAE,CAAC;QAHA,WAAM,GAAN,MAAM,CAAU;QANnB,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAWnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,GAAG;gBACb,UAAU,EAAE,EAAE;gBACd,KAAK,EAAE,CAAC,CAAC;gBACT,GAAG,EAAE,CAAC,CAAC;aACV,CAAC;QACN,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAA,4BAAkB,EAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CACnF,IAAI,CACP,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,GAAa;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAAC,GAAa;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACxE,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,GAAa;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,WAAW;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IACrC,CAAC;IAED,IAAY,QAAQ;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;IAC7C,CAAC;CACJ;AAzFD,kCAyFC"}
@@ -0,0 +1,35 @@
1
+ import { Color, ColorInformation, ColorPresentation, CompletionContext, CompletionList, Diagnostic, Hover, Position, Range, SymbolInformation, SelectionRange, DocumentHighlight, WorkspaceFolder } from 'vscode-languageserver';
2
+ import { Document, DocumentManager } from '../../lib/documents';
3
+ import { LSConfigManager } from '../../ls-config';
4
+ import { ColorPresentationsProvider, CompletionsProvider, DiagnosticsProvider, DocumentColorsProvider, DocumentHighlightProvider, DocumentSymbolsProvider, FoldingRangeProvider, HoverProvider, SelectionRangeProvider } from '../interfaces';
5
+ import { CSSLanguageServices } from './service';
6
+ import { FoldingRange } from 'vscode-languageserver-types';
7
+ export declare class CSSPlugin implements HoverProvider, CompletionsProvider, DiagnosticsProvider, DocumentColorsProvider, ColorPresentationsProvider, DocumentSymbolsProvider, SelectionRangeProvider, DocumentHighlightProvider, FoldingRangeProvider {
8
+ __name: string;
9
+ private configManager;
10
+ private cssDocuments;
11
+ private cssLanguageServices;
12
+ private workspaceFolders;
13
+ private triggerCharacters;
14
+ private globalVars;
15
+ constructor(docManager: DocumentManager, configManager: LSConfigManager, workspaceFolders: WorkspaceFolder[], cssLanguageServices: CSSLanguageServices);
16
+ getSelectionRange(document: Document, position: Position): SelectionRange | null;
17
+ getDiagnostics(document: Document): Diagnostic[];
18
+ doHover(document: Document, position: Position): Hover | null;
19
+ private doHoverInternal;
20
+ getCompletions(document: Document, position: Position, completionContext?: CompletionContext): Promise<CompletionList | null>;
21
+ private inStyleAttributeWithoutInterpolation;
22
+ private getCompletionsInternal;
23
+ private appendGlobalVars;
24
+ getDocumentColors(document: Document): ColorInformation[];
25
+ getColorPresentations(document: Document, range: Range, color: Color): ColorPresentation[];
26
+ getDocumentSymbols(document: Document): SymbolInformation[];
27
+ getFoldingRanges(document: Document): FoldingRange[];
28
+ private nonSyntacticFolding;
29
+ findDocumentHighlight(document: Document, position: Position): DocumentHighlight[] | null;
30
+ private findDocumentHighlightInternal;
31
+ private getCSSDoc;
32
+ private updateConfigs;
33
+ private featureEnabled;
34
+ private getLanguageService;
35
+ }