@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,284 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDiagnostics = getDiagnostics;
4
+ const vscode_languageserver_1 = require("vscode-languageserver");
5
+ const documents_1 = require("../../../lib/documents");
6
+ const logger_1 = require("../../../logger");
7
+ const utils_1 = require("../../../utils");
8
+ const SvelteDocument_1 = require("../SvelteDocument");
9
+ /**
10
+ * Returns diagnostics from the svelte compiler.
11
+ * Also tries to return errors at correct position if transpilation/preprocessing fails.
12
+ */
13
+ async function getDiagnostics(document, svelteDoc, settings, cancellationToken) {
14
+ const config = await svelteDoc.config;
15
+ if (config?.loadConfigError) {
16
+ return getConfigLoadErrorDiagnostics(config.loadConfigError);
17
+ }
18
+ if (cancellationToken?.isCancellationRequested) {
19
+ return [];
20
+ }
21
+ try {
22
+ return await tryGetDiagnostics(document, svelteDoc, settings, cancellationToken);
23
+ }
24
+ catch (error) {
25
+ return getPreprocessErrorDiagnostics(document, error);
26
+ }
27
+ }
28
+ /**
29
+ * Try to transpile and compile the svelte file and return diagnostics.
30
+ */
31
+ async function tryGetDiagnostics(document, svelteDoc, settings, cancellationToken) {
32
+ const transpiled = await svelteDoc.getTranspiled();
33
+ if (cancellationToken?.isCancellationRequested) {
34
+ return [];
35
+ }
36
+ try {
37
+ const res = await svelteDoc.getCompiled();
38
+ if (cancellationToken?.isCancellationRequested) {
39
+ return [];
40
+ }
41
+ let ignoreScriptWarnings = false;
42
+ let ignoreStyleWarnings = false;
43
+ let ignoreTemplateWarnings = false;
44
+ if (!document.config?.preprocess || !!document.config.isFallbackConfig) {
45
+ ignoreTemplateWarnings = !!document.getLanguageAttribute('template');
46
+ ignoreStyleWarnings = !!document.getLanguageAttribute('style');
47
+ const scriptAttr = document.getLanguageAttribute('script');
48
+ ignoreScriptWarnings = !!scriptAttr && scriptAttr !== 'ts';
49
+ }
50
+ return (res.warnings || [])
51
+ .filter((warning) => settings[warning.code] !== 'ignore')
52
+ .map((warning) => {
53
+ const start = warning.start || { line: 1, column: 0 };
54
+ const end = warning.end || start;
55
+ return {
56
+ range: vscode_languageserver_1.Range.create(start.line - 1, start.column, end.line - 1, end.column),
57
+ message: warning.message,
58
+ severity: settings[warning.code] === 'error'
59
+ ? vscode_languageserver_1.DiagnosticSeverity.Error
60
+ : vscode_languageserver_1.DiagnosticSeverity.Warning,
61
+ source: 'svelte',
62
+ code: warning.code
63
+ };
64
+ })
65
+ .map((diag) => (0, documents_1.mapObjWithRangeToOriginal)(transpiled, diag))
66
+ .map((diag) => adjustMappings(diag, document))
67
+ .filter((diag) => isNoFalsePositive(diag, document, ignoreScriptWarnings, ignoreStyleWarnings, ignoreTemplateWarnings));
68
+ }
69
+ catch (err) {
70
+ return createParserErrorDiagnostic(err, document)
71
+ .map((diag) => (0, documents_1.mapObjWithRangeToOriginal)(transpiled, diag))
72
+ .map((diag) => adjustMappings(diag, document));
73
+ }
74
+ }
75
+ /**
76
+ * Try to infer a nice diagnostic error message from the compilation error.
77
+ */
78
+ function createParserErrorDiagnostic(error, document) {
79
+ const start = error.start || { line: 1, column: 0 };
80
+ const end = error.end || start;
81
+ const diagnostic = {
82
+ range: vscode_languageserver_1.Range.create(start.line - 1, start.column, end.line - 1, end.column),
83
+ message: error.message,
84
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
85
+ source: 'svelte',
86
+ code: error.code
87
+ };
88
+ if (diagnostic.message.includes('expected')) {
89
+ const isInStyle = (0, documents_1.isInTag)(diagnostic.range.start, document.styleInfo);
90
+ const isInScript = (0, documents_1.isInTag)(diagnostic.range.start, document.scriptInfo || document.moduleScriptInfo);
91
+ if ((!document.config?.preprocess || document.config.isFallbackConfig) &&
92
+ document.hasLanguageAttribute()) {
93
+ logger_1.Logger.error(`Parsing ${document.getFilePath()} failed. No preprocess config found but lang tag exists. Skip showing error because they likely use other preprocessors.`);
94
+ return [];
95
+ }
96
+ if (isInStyle || isInScript) {
97
+ diagnostic.message +=
98
+ '\n\nIf you expect this syntax to work, here are some suggestions: ';
99
+ if (isInScript) {
100
+ diagnostic.message +=
101
+ '\nIf you use typescript with `svelte-preprocess`, did you add `lang="ts"` to your `script` tag? ';
102
+ }
103
+ else {
104
+ diagnostic.message +=
105
+ '\nIf you use less/SCSS with `svelte-preprocess`, did you add `lang="scss"`/`lang="less"` to your `style` tag? ' +
106
+ scssNodeRuntimeHint;
107
+ }
108
+ diagnostic.message +=
109
+ '\nDid you setup a `svelte.config.js`? ' +
110
+ '\nSee https://github.com/sveltejs/language-tools/tree/master/docs#using-with-preprocessors for more info.';
111
+ }
112
+ }
113
+ return [diagnostic];
114
+ }
115
+ /**
116
+ * Try to infer a nice diagnostic error message from the transpilation error.
117
+ */
118
+ function getPreprocessErrorDiagnostics(document, error) {
119
+ logger_1.Logger.error('Preprocessing failed');
120
+ logger_1.Logger.error(error);
121
+ if (document.styleInfo && error.__source === SvelteDocument_1.TranspileErrorSource.Style) {
122
+ return getStyleErrorDiagnostics(error, document);
123
+ }
124
+ if ((document.scriptInfo || document.moduleScriptInfo) &&
125
+ error.__source === SvelteDocument_1.TranspileErrorSource.Script) {
126
+ return getScriptErrorDiagnostics(error, document);
127
+ }
128
+ return getOtherErrorDiagnostics(error);
129
+ }
130
+ function getConfigLoadErrorDiagnostics(error) {
131
+ return [
132
+ {
133
+ message: 'Error in svelte.config.js\n\n' + error,
134
+ range: vscode_languageserver_1.Range.create(vscode_languageserver_1.Position.create(0, 0), vscode_languageserver_1.Position.create(0, 5)),
135
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
136
+ source: 'svelte'
137
+ }
138
+ ];
139
+ }
140
+ /**
141
+ * Try to infer a nice diagnostic error message from the transpilation error.
142
+ */
143
+ function getStyleErrorDiagnostics(error, document) {
144
+ // Error could be from another file that was mixed into the Svelte file as part of preprocessing.
145
+ // Some preprocessors set the file property from which we can infer that
146
+ const isErrorFromOtherFile = typeof error?.file === 'string' &&
147
+ (0, utils_1.getLastPartOfPath)(error.file) !== (0, utils_1.getLastPartOfPath)(document.getFilePath() || '');
148
+ return [
149
+ {
150
+ message: getStyleErrorMessage(),
151
+ range: getStyleErrorRange(),
152
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
153
+ source: 'svelte(style)'
154
+ }
155
+ ];
156
+ function getStyleErrorMessage() {
157
+ if (isSveltePreprocessCannotFindModulesError(error)) {
158
+ const hint = error.message.includes('node-sass') ? scssNodeRuntimeHint : '';
159
+ return getErrorMessage(error.message, 'style', hint);
160
+ }
161
+ const msg = error.formatted /* sass error messages have this */ ||
162
+ error.message ||
163
+ 'Style error. Transpilation failed.';
164
+ return isErrorFromOtherFile ? 'Error in referenced file\n\n' + msg : msg;
165
+ }
166
+ function getStyleErrorRange() {
167
+ const lineOffset = document.styleInfo?.startPos.line || 0;
168
+ const position = !isErrorFromOtherFile &&
169
+ // Some preprocessors like sass or less return error objects with these attributes.
170
+ // Use it to display message at better position.
171
+ typeof error?.column === 'number' &&
172
+ typeof error?.line === 'number'
173
+ ? vscode_languageserver_1.Position.create(lineOffset + error.line - 1, error.column)
174
+ : document.styleInfo?.startPos || vscode_languageserver_1.Position.create(0, 0);
175
+ return vscode_languageserver_1.Range.create(position, position);
176
+ }
177
+ }
178
+ /**
179
+ * Try to infer a nice diagnostic error message from the transpilation error.
180
+ */
181
+ function getScriptErrorDiagnostics(error, document) {
182
+ return [
183
+ {
184
+ message: getScriptErrorMessage(),
185
+ range: getScriptErrorRange(),
186
+ severity: vscode_languageserver_1.DiagnosticSeverity.Error,
187
+ source: 'svelte(script)'
188
+ }
189
+ ];
190
+ function getScriptErrorMessage() {
191
+ if (isSveltePreprocessCannotFindModulesError(error)) {
192
+ return getErrorMessage(error.message, 'script');
193
+ }
194
+ return error.message || 'Script error. Transpilation failed.';
195
+ }
196
+ function getScriptErrorRange() {
197
+ const position = document.scriptInfo?.startPos ||
198
+ document.moduleScriptInfo?.startPos ||
199
+ vscode_languageserver_1.Position.create(0, 0);
200
+ return vscode_languageserver_1.Range.create(position, position);
201
+ }
202
+ }
203
+ /**
204
+ * Try to infer a nice diagnostic error message from the transpilation error.
205
+ */
206
+ function getOtherErrorDiagnostics(error) {
207
+ return [
208
+ {
209
+ message: getOtherErrorMessage(),
210
+ range: vscode_languageserver_1.Range.create(vscode_languageserver_1.Position.create(0, 0), vscode_languageserver_1.Position.create(0, 5)),
211
+ severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
212
+ source: 'svelte'
213
+ }
214
+ ];
215
+ function getOtherErrorMessage() {
216
+ if (isSveltePreprocessCannotFindModulesError(error)) {
217
+ return getErrorMessage(error.message, 'it');
218
+ }
219
+ return error.message || 'Error. Transpilation failed.';
220
+ }
221
+ }
222
+ /**
223
+ * Preprocessing could fail if packages cannot be resolved.
224
+ * A warning about a broken svelte.configs.js/preprocessor setup should be added then.
225
+ */
226
+ function isSveltePreprocessCannotFindModulesError(error) {
227
+ return error instanceof Error && error.message.startsWith('Cannot find any of modules');
228
+ }
229
+ function getErrorMessage(error, source, hint = '') {
230
+ return (error +
231
+ '\n\nThe file cannot be parsed because ' +
232
+ source +
233
+ " requires a preprocessor that doesn't seem to be setup or failed during setup. " +
234
+ 'Did you setup a `svelte.config.js`? ' +
235
+ hint +
236
+ '\n\nSee https://github.com/sveltejs/language-tools/tree/master/docs#using-with-preprocessors for more info.');
237
+ }
238
+ function isNoFalsePositive(diag, doc, ignoreScriptWarnings, ignoreStyleWarnings, ignoreTemplateWarnings) {
239
+ if ((ignoreTemplateWarnings || ignoreScriptWarnings) &&
240
+ (typeof diag.code !== 'string' || !diag.code.startsWith('a11y'))) {
241
+ return false;
242
+ }
243
+ if (ignoreStyleWarnings &&
244
+ (diag.code === 'css-unused-selector' || diag.code === 'css_unused_selector')) {
245
+ return false;
246
+ }
247
+ if (diag.code !== 'unused-export-let' && diag.code !== 'export_let_unused') {
248
+ return true;
249
+ }
250
+ // TypeScript transpiles `export enum A` and `export namespace A` to `export var A`,
251
+ // which the compiler will warn about.
252
+ // Silence this edge case. We extract the property from the message and don't use the position
253
+ // because that position could be wrong when source mapping trips up.
254
+ const unusedExportName = diag.message.substring(diag.message.indexOf("'") + 1, diag.message.lastIndexOf("'"));
255
+ const hasExportedEnumWithThatName = new RegExp(`\\bexport\\s+?(enum|namespace)\\s+?${unusedExportName}\\b`).test(doc.getText());
256
+ return !hasExportedEnumWithThatName;
257
+ }
258
+ /**
259
+ * Some mappings might be invalid. Try to catch these cases here.
260
+ */
261
+ function adjustMappings(diag, doc) {
262
+ if (diag.range.start.character < 0) {
263
+ diag.range.start.character = 0;
264
+ }
265
+ if (diag.range.end.character < 0) {
266
+ diag.range.end.character = 0;
267
+ }
268
+ if (diag.range.start.line < 0) {
269
+ diag.range.start = { line: 0, character: 0 };
270
+ }
271
+ if (diag.range.end.line < 0) {
272
+ diag.range.end = { line: 0, character: 0 };
273
+ }
274
+ diag.range = (0, utils_1.moveRangeStartToEndIfNecessary)(diag.range);
275
+ if ((diag.code === 'css-unused-selector' || diag.code === 'css_unused_selector') &&
276
+ doc.styleInfo &&
277
+ !(0, documents_1.isInTag)(diag.range.start, doc.styleInfo)) {
278
+ diag.range.start = doc.styleInfo.startPos;
279
+ diag.range.end = diag.range.start;
280
+ }
281
+ return diag;
282
+ }
283
+ const scssNodeRuntimeHint = 'If you use SCSS, it may be necessary to add the path to your NODE runtime to the setting `svelte.language-server.runtime`, or use `sass` instead of `node-sass`. ';
284
+ //# sourceMappingURL=getDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDiagnostics.js","sourceRoot":"","sources":["../../../../../src/plugins/svelte/features/getDiagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Hover, Position } from 'vscode-languageserver';
2
+ import { SvelteDocument } from '../SvelteDocument';
3
+ import { Document } from '../../../lib/documents';
4
+ /**
5
+ * Get hover information for special svelte tags within moustache tags.
6
+ */
7
+ export declare function getHoverInfo(document: Document, svelteDoc: SvelteDocument, position: Position): Hover | null;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getHoverInfo = getHoverInfo;
4
+ const SvelteTags_1 = require("./SvelteTags");
5
+ const utils_1 = require("../../../utils");
6
+ const parseHtml_1 = require("../../../lib/documents/parseHtml");
7
+ const utils_2 = require("./utils");
8
+ const getModifierData_1 = require("./getModifierData");
9
+ /**
10
+ * Get hover information for special svelte tags within moustache tags.
11
+ */
12
+ function getHoverInfo(document, svelteDoc, position) {
13
+ const offset = svelteDoc.offsetAt(position);
14
+ const offsetStart = Math.max(offset - 10, 0);
15
+ const charactersAroundOffset = svelteDoc
16
+ .getText()
17
+ // use last 10 and next 10 characters, should cover 99% of all cases
18
+ .substr(offsetStart, 20);
19
+ const isSvelteTag = tagRegexp.test(charactersAroundOffset);
20
+ if ((0, utils_2.inStyleOrScript)(svelteDoc, position)) {
21
+ return null;
22
+ }
23
+ if (isSvelteTag) {
24
+ return getTagHoverInfoAtOffset(svelteDoc, offsetStart, charactersAroundOffset, offset);
25
+ }
26
+ const attributeContext = (0, parseHtml_1.getAttributeContextAtPosition)(document, position);
27
+ if (!attributeContext || !(0, utils_2.attributeCanHaveEventModifier)(attributeContext)) {
28
+ return null;
29
+ }
30
+ const attributeOffset = svelteDoc.getText().lastIndexOf(attributeContext.name, offset);
31
+ return getEventModifierHoverInfo(attributeContext, attributeOffset, offset);
32
+ }
33
+ function getTagHoverInfoAtOffset(svelteDoc, charactersOffset, charactersAroundOffset, offset) {
34
+ const tag = getTagAtOffset(svelteDoc, charactersOffset, charactersAroundOffset, offset);
35
+ if (!tag) {
36
+ return null;
37
+ }
38
+ return { contents: SvelteTags_1.documentation[tag] };
39
+ }
40
+ /**
41
+ * Get the tag that is at the offset.
42
+ */
43
+ function getTagAtOffset(svelteDoc, charactersOffset, charactersAroundOffset, offset) {
44
+ const foundTag = tagPossibilities.find((tagAndValues) => tagAndValues.values.find((value) => isAroundOffset(charactersOffset, charactersAroundOffset, value, offset)));
45
+ if (!foundTag) {
46
+ return null;
47
+ }
48
+ if (foundTag.tag !== ':else') {
49
+ return foundTag.tag;
50
+ }
51
+ // ':else can be part of one of each, await, if --> find out which one
52
+ return (0, SvelteTags_1.getLatestOpeningTag)(svelteDoc, offset);
53
+ }
54
+ function isAroundOffset(charactersOffset, charactersAroundOffset, toFind, offset) {
55
+ const match = charactersAroundOffset.match(toFind);
56
+ if (!match || match.index === undefined) {
57
+ return false;
58
+ }
59
+ const idx = match.index + charactersOffset;
60
+ return idx <= offset && idx + toFind.length >= offset;
61
+ }
62
+ const tagPossibilities = [
63
+ { tag: 'if', values: ['#if', '/if', ':else if'] },
64
+ // each
65
+ { tag: 'each', values: ['#each', '/each'] },
66
+ // await
67
+ { tag: 'await', values: ['#await', '/await', ':then', ':catch'] },
68
+ // key
69
+ { tag: 'key', values: ['#key', '/key'] },
70
+ // snippet
71
+ { tag: 'snippet', values: ['#snippet', '/snippet'] },
72
+ // @
73
+ { tag: 'html', values: ['@html'] },
74
+ { tag: 'debug', values: ['@debug'] },
75
+ { tag: 'const', values: ['@const'] },
76
+ { tag: 'render', values: ['@render'] },
77
+ { tag: 'attach', values: ['@attach'] },
78
+ // this tag has multiple possibilities
79
+ { tag: ':else', values: [':else'] }
80
+ ];
81
+ const tagRegexp = new RegExp(`[\\s\\S]*{\\s*(${(0, utils_1.flatten)(tagPossibilities.map((p) => p.values)).join('|')})(\\s|})`);
82
+ function getEventModifierHoverInfo(attributeContext, attributeOffset, offset) {
83
+ const { name } = attributeContext;
84
+ const modifierData = (0, getModifierData_1.getModifierData)();
85
+ const found = modifierData.find((modifier) => isAroundOffset(attributeOffset, name, modifier.modifier, offset));
86
+ if (!found) {
87
+ return null;
88
+ }
89
+ return {
90
+ contents: found.documentation
91
+ };
92
+ }
93
+ //# sourceMappingURL=getHoverInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getHoverInfo.js","sourceRoot":"","sources":["../../../../../src/plugins/svelte/features/getHoverInfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { MarkupContent } from 'vscode-languageserver';
2
+ export interface ModifierData {
3
+ modifier: string;
4
+ documentation: MarkupContent;
5
+ modifiersInvalidWith?: string[];
6
+ }
7
+ export declare function getModifierData(): ModifierData[];
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModifierData = getModifierData;
4
+ const vscode_languageserver_1 = require("vscode-languageserver");
5
+ function getModifierData() {
6
+ return [
7
+ {
8
+ modifier: 'preventDefault',
9
+ documentation: 'calls `event.preventDefault()` before running the handler',
10
+ modifiersInvalidWith: ['passive']
11
+ },
12
+ {
13
+ modifier: 'stopPropagation',
14
+ documentation: 'calls `event.stopPropagation()`, preventing the event reaching the next element'
15
+ },
16
+ {
17
+ modifier: 'passive',
18
+ documentation: 'improves scrolling performance on touch/wheel events ' +
19
+ "(Svelte will add it automatically where it's safe to do so)",
20
+ modifiersInvalidWith: ['nopassive', 'preventDefault']
21
+ },
22
+ {
23
+ modifier: 'nonpassive',
24
+ documentation: 'explicitly set `passive: false`',
25
+ modifiersInvalidWith: ['passive']
26
+ },
27
+ {
28
+ modifier: 'capture',
29
+ documentation: 'fires the handler during the capture phase instead of the bubbling phase'
30
+ },
31
+ {
32
+ modifier: 'once',
33
+ documentation: 'remove the handler after the first time it runs'
34
+ },
35
+ {
36
+ modifier: 'self',
37
+ documentation: 'only trigger handler if `event.target` is the element itself'
38
+ },
39
+ {
40
+ modifier: 'trusted',
41
+ documentation: 'only trigger handler if event.isTrusted is true. ' +
42
+ 'I.e. if the event is triggered by a user action'
43
+ }
44
+ ].map((item) => ({
45
+ ...item,
46
+ documentation: {
47
+ kind: vscode_languageserver_1.MarkupKind.Markdown,
48
+ value: `\`${item.modifier}\` event modifier
49
+
50
+ ${item.documentation}
51
+
52
+ https://v4.svelte.dev/docs/element-directives#on-eventname`
53
+ }
54
+ }));
55
+ }
56
+ //# sourceMappingURL=getModifierData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getModifierData.js","sourceRoot":"","sources":["../../../../../src/plugins/svelte/features/getModifierData.ts"],"names":[],"mappings":";;AAQA,0CAsDC;AA9DD,iEAAkE;AAQlE,SAAgB,eAAe;IAC3B,OAAO;QACH;YACI,QAAQ,EAAE,gBAAgB;YAC1B,aAAa,EAAE,2DAA2D;YAC1E,oBAAoB,EAAE,CAAC,SAAS,CAAC;SACpC;QACD;YACI,QAAQ,EAAE,iBAAiB;YAC3B,aAAa,EACT,iFAAiF;SACxF;QACD;YACI,QAAQ,EAAE,SAAS;YACnB,aAAa,EACT,uDAAuD;gBACvD,6DAA6D;YACjE,oBAAoB,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;SACxD;QACD;YACI,QAAQ,EAAE,YAAY;YACtB,aAAa,EAAE,iCAAiC;YAChD,oBAAoB,EAAE,CAAC,SAAS,CAAC;SACpC;QACD;YACI,QAAQ,EAAE,SAAS;YACnB,aAAa,EACT,0EAA0E;SACjF;QACD;YACI,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,iDAAiD;SACnE;QACD;YACI,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,8DAA8D;SAChF;QACD;YACI,QAAQ,EAAE,SAAS;YACnB,aAAa,EACT,mDAAmD;gBACnD,iDAAiD;SACxD;KACJ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACb,GAAG,IAAI;QACP,aAAa,EAAE;YACX,IAAI,EAAE,kCAAU,CAAC,QAAQ;YACzB,KAAK,EAAE,KAAK,IAAI,CAAC,QAAQ;;EAEnC,IAAI,CAAC,aAAa;;2DAEuC;SAClD;KACJ,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Position, SelectionRange } from 'vscode-languageserver';
2
+ import { SvelteDocument } from '../SvelteDocument';
3
+ export declare function getSelectionRange(svelteDoc: SvelteDocument, position: Position): Promise<SelectionRange | null>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSelectionRange = getSelectionRange;
4
+ const estree_walker_1 = require("estree-walker");
5
+ const vscode_languageserver_1 = require("vscode-languageserver");
6
+ const documents_1 = require("../../../lib/documents");
7
+ const utils_1 = require("./utils");
8
+ async function getSelectionRange(svelteDoc, position) {
9
+ if ((0, utils_1.inStyleOrScript)(svelteDoc, position)) {
10
+ return null;
11
+ }
12
+ const { ast: { html } } = await svelteDoc.getCompiled();
13
+ const transpiled = await svelteDoc.getTranspiled();
14
+ const content = transpiled.getText();
15
+ const offset = (0, documents_1.offsetAt)(transpiled.getGeneratedPosition(position), content);
16
+ let nearest = html;
17
+ let result;
18
+ (0, estree_walker_1.walk)(html, {
19
+ enter(node, parent) {
20
+ if (!parent) {
21
+ // keep looking
22
+ return;
23
+ }
24
+ if (!('start' in node && 'end' in node)) {
25
+ this.skip();
26
+ return;
27
+ }
28
+ const { start, end } = node;
29
+ const isWithin = start <= offset && end >= offset;
30
+ if (!isWithin) {
31
+ this.skip();
32
+ return;
33
+ }
34
+ if (nearest === parent) {
35
+ nearest = node;
36
+ result = createSelectionRange(node, result);
37
+ }
38
+ }
39
+ });
40
+ return result ? (0, documents_1.mapSelectionRangeToParent)(transpiled, result) : null;
41
+ function createSelectionRange(node, parent) {
42
+ const range = (0, documents_1.toRange)(content, node.start, node.end);
43
+ return vscode_languageserver_1.SelectionRange.create(range, parent);
44
+ }
45
+ }
46
+ //# sourceMappingURL=getSelectionRanges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSelectionRanges.js","sourceRoot":"","sources":["../../../../../src/plugins/svelte/features/getSelectionRanges.ts"],"names":[],"mappings":";;AAeA,8CAgDC;AA/DD,iDAAqC;AACrC,iEAAiE;AACjE,sDAAsF;AAEtF,mCAA0C;AAWnC,KAAK,UAAU,iBAAiB,CAAC,SAAyB,EAAE,QAAkB;IACjF,IAAI,IAAA,uBAAe,EAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,EACF,GAAG,EAAE,EAAE,IAAI,EAAE,EAChB,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,IAAA,oBAAQ,EAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAE5E,IAAI,OAAO,GAAgB,IAAI,CAAC;IAChC,IAAI,MAAkC,CAAC;IAEvC,IAAA,oBAAI,EAAC,IAAI,EAAE;QACP,KAAK,CAAC,IAAU,EAAE,MAAY;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,eAAe;gBACf,OAAO;YACX,CAAC;YAED,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAC5B,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;YAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;YACX,CAAC;YAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACrB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,CAAC,CAAC,IAAA,qCAAyB,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAErE,SAAS,oBAAoB,CAAC,IAAiB,EAAE,MAAuB;QACpE,MAAM,KAAK,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,OAAO,sCAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Position } from 'vscode-languageserver';
2
+ import { AttributeContext } from '../../../lib/documents/parseHtml';
3
+ import { SvelteDocument } from '../SvelteDocument';
4
+ export declare function attributeCanHaveEventModifier(attributeContext: AttributeContext): boolean;
5
+ export declare function inStyleOrScript(svelteDoc: SvelteDocument, position: Position): boolean;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.attributeCanHaveEventModifier = attributeCanHaveEventModifier;
4
+ exports.inStyleOrScript = inStyleOrScript;
5
+ const documents_1 = require("../../../lib/documents");
6
+ const utils_1 = require("../../../utils");
7
+ function attributeCanHaveEventModifier(attributeContext) {
8
+ return (!attributeContext.inValue &&
9
+ !(0, utils_1.possiblyComponent)(attributeContext.elementTag) &&
10
+ attributeContext.name.startsWith('on:') &&
11
+ attributeContext.name.includes('|'));
12
+ }
13
+ function inStyleOrScript(svelteDoc, position) {
14
+ return ((0, documents_1.isInTag)(position, svelteDoc.style) ||
15
+ (0, documents_1.isInTag)(position, svelteDoc.script) ||
16
+ (0, documents_1.isInTag)(position, svelteDoc.moduleScript));
17
+ }
18
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/plugins/svelte/features/utils.ts"],"names":[],"mappings":";;AAMA,sEAOC;AAED,0CAMC;AApBD,sDAAiD;AAEjD,0CAAmD;AAGnD,SAAgB,6BAA6B,CAAC,gBAAkC;IAC5E,OAAO,CACH,CAAC,gBAAgB,CAAC,OAAO;QACzB,CAAC,IAAA,yBAAiB,EAAC,gBAAgB,CAAC,UAAU,CAAC;QAC/C,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACvC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CACtC,CAAC;AACN,CAAC;AAED,SAAgB,eAAe,CAAC,SAAyB,EAAE,QAAkB;IACzE,OAAO,CACH,IAAA,mBAAO,EAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC;QAClC,IAAA,mBAAO,EAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC;QACnC,IAAA,mBAAO,EAAC,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAC5C,CAAC;AACN,CAAC"}
@@ -0,0 +1,27 @@
1
+ import ts from 'typescript';
2
+ export type ComponentPartInfo = Array<{
3
+ name: string;
4
+ type: string;
5
+ doc?: string;
6
+ }>;
7
+ export interface ComponentInfoProvider {
8
+ getEvents(): ComponentPartInfo;
9
+ getSlotLets(slot?: string): ComponentPartInfo;
10
+ getProps(): ComponentPartInfo;
11
+ }
12
+ export declare class JsOrTsComponentInfoProvider implements ComponentInfoProvider {
13
+ private readonly typeChecker;
14
+ private readonly classType;
15
+ private readonly useSvelte5PlusPropsParameter;
16
+ private constructor();
17
+ getEvents(): ComponentPartInfo;
18
+ getSlotLets(slot?: string): ComponentPartInfo;
19
+ getProps(): ComponentPartInfo;
20
+ private getType;
21
+ private mapPropertiesOfType;
22
+ /**
23
+ * The result of this shouldn't be cached as it could lead to memory leaks. The type checker
24
+ * could become old and then multiple versions of it could exist.
25
+ */
26
+ static create(lang: ts.LanguageService, def: ts.DefinitionInfo, isSvelte5Plus: boolean): ComponentInfoProvider | null;
27
+ }