@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,331 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.gatherIdentifiers = exports.isInReactiveStatement = exports.isReactiveStatement = exports.SnapshotMap = exports.IGNORE_POSITION_COMMENT = exports.IGNORE_END_COMMENT = exports.IGNORE_START_COMMENT = void 0;
7
+ exports.getComponentAtPosition = getComponentAtPosition;
8
+ exports.isComponentAtPosition = isComponentAtPosition;
9
+ exports.surroundWithIgnoreComments = surroundWithIgnoreComments;
10
+ exports.isInGeneratedCode = isInGeneratedCode;
11
+ exports.startsWithIgnoredPosition = startsWithIgnoredPosition;
12
+ exports.isTextSpanInGeneratedCode = isTextSpanInGeneratedCode;
13
+ exports.isPartOfImportStatement = isPartOfImportStatement;
14
+ exports.isStoreVariableIn$storeDeclaration = isStoreVariableIn$storeDeclaration;
15
+ exports.get$storeOffsetOf$storeDeclaration = get$storeOffsetOf$storeDeclaration;
16
+ exports.is$storeVariableIn$storeDeclaration = is$storeVariableIn$storeDeclaration;
17
+ exports.getStoreOffsetOf$storeDeclaration = getStoreOffsetOf$storeDeclaration;
18
+ exports.isAfterSvelte2TsxPropsReturn = isAfterSvelte2TsxPropsReturn;
19
+ exports.findContainingNode = findContainingNode;
20
+ exports.findClosestContainingNode = findClosestContainingNode;
21
+ exports.findNodeAtSpan = findNodeAtSpan;
22
+ exports.findRenderFunction = findRenderFunction;
23
+ exports.gatherDescendants = gatherDescendants;
24
+ exports.isKitTypePath = isKitTypePath;
25
+ exports.getFormatCodeBasis = getFormatCodeBasis;
26
+ exports.getQuotePreference = getQuotePreference;
27
+ exports.findChildOfKind = findChildOfKind;
28
+ exports.getNewScriptStartTag = getNewScriptStartTag;
29
+ exports.checkRangeMappingWithGeneratedSemi = checkRangeMappingWithGeneratedSemi;
30
+ const typescript_1 = __importDefault(require("typescript"));
31
+ const documents_1 = require("../../../lib/documents");
32
+ const ComponentInfoProvider_1 = require("../ComponentInfoProvider");
33
+ const utils_1 = require("../../../utils");
34
+ const fileCollection_1 = require("../../../lib/documents/fileCollection");
35
+ const svelte2tsx_1 = require("svelte2tsx");
36
+ /**
37
+ * If the given original position is within a Svelte starting tag,
38
+ * return the snapshot of that component.
39
+ */
40
+ function getComponentAtPosition(lang, doc, tsDoc, originalPosition) {
41
+ if (tsDoc.parserError) {
42
+ return null;
43
+ }
44
+ if ((0, documents_1.isInTag)(originalPosition, doc.scriptInfo) ||
45
+ (0, documents_1.isInTag)(originalPosition, doc.moduleScriptInfo)) {
46
+ // Inside script tags -> not a component
47
+ return null;
48
+ }
49
+ const node = (0, documents_1.getNodeIfIsInComponentStartTag)(doc.html, doc, doc.offsetAt(originalPosition));
50
+ if (!node) {
51
+ return null;
52
+ }
53
+ const symbolPosWithinNode = node.tag?.includes('.') ? node.tag.lastIndexOf('.') + 1 : 0;
54
+ const generatedPosition = tsDoc.getGeneratedPosition(doc.positionAt(node.start + symbolPosWithinNode + 1));
55
+ const def = lang.getDefinitionAtPosition(tsDoc.filePath, tsDoc.offsetAt(generatedPosition))?.[0];
56
+ if (!def) {
57
+ return null;
58
+ }
59
+ return ComponentInfoProvider_1.JsOrTsComponentInfoProvider.create(lang, def, tsDoc.isSvelte5Plus);
60
+ }
61
+ function isComponentAtPosition(doc, tsDoc, originalPosition) {
62
+ if (tsDoc.parserError) {
63
+ return false;
64
+ }
65
+ if ((0, documents_1.isInTag)(originalPosition, doc.scriptInfo) ||
66
+ (0, documents_1.isInTag)(originalPosition, doc.moduleScriptInfo)) {
67
+ // Inside script tags -> not a component
68
+ return false;
69
+ }
70
+ return !!(0, documents_1.getNodeIfIsInComponentStartTag)(doc.html, doc, doc.offsetAt(originalPosition));
71
+ }
72
+ exports.IGNORE_START_COMMENT = '/*Ωignore_startΩ*/';
73
+ exports.IGNORE_END_COMMENT = '/*Ωignore_endΩ*/';
74
+ exports.IGNORE_POSITION_COMMENT = '/*Ωignore_positionΩ*/';
75
+ /**
76
+ * Surrounds given string with a start/end comment which marks it
77
+ * to be ignored by tooling.
78
+ */
79
+ function surroundWithIgnoreComments(str) {
80
+ return exports.IGNORE_START_COMMENT + str + exports.IGNORE_END_COMMENT;
81
+ }
82
+ /**
83
+ * Checks if this a section that should be completely ignored
84
+ * because it's purely generated.
85
+ */
86
+ function isInGeneratedCode(text, start, end = start) {
87
+ const lastStart = text.lastIndexOf(exports.IGNORE_START_COMMENT, start);
88
+ const lastEnd = text.lastIndexOf(exports.IGNORE_END_COMMENT, start);
89
+ const nextEnd = text.indexOf(exports.IGNORE_END_COMMENT, end);
90
+ // if lastEnd === nextEnd, this means that the str was found at the index
91
+ // up to which is searched for it
92
+ return (lastStart > lastEnd || lastEnd === nextEnd) && lastStart < nextEnd;
93
+ }
94
+ function startsWithIgnoredPosition(text, offset) {
95
+ return text.slice(offset).startsWith(exports.IGNORE_POSITION_COMMENT);
96
+ }
97
+ /**
98
+ * Checks if this is a text span that is inside svelte2tsx-generated code
99
+ * (has no mapping to the original)
100
+ */
101
+ function isTextSpanInGeneratedCode(text, span) {
102
+ return isInGeneratedCode(text, span.start, span.start + span.length);
103
+ }
104
+ function isPartOfImportStatement(text, position) {
105
+ const line = (0, documents_1.getLineAtPosition)(position, text);
106
+ return /\s*from\s+["'][^"']*/.test(line.slice(0, position.character));
107
+ }
108
+ function isStoreVariableIn$storeDeclaration(text, varStart) {
109
+ return (text.lastIndexOf('__sveltets_2_store_get(', varStart) ===
110
+ varStart - '__sveltets_2_store_get('.length);
111
+ }
112
+ function get$storeOffsetOf$storeDeclaration(text, storePosition) {
113
+ return text.lastIndexOf(' =', storePosition) - 1;
114
+ }
115
+ function is$storeVariableIn$storeDeclaration(text, varStart) {
116
+ return /^\$\w+ = __sveltets_2_store_get/.test(text.substring(varStart));
117
+ }
118
+ function getStoreOffsetOf$storeDeclaration(text, $storeVarStart) {
119
+ return text.indexOf(');', $storeVarStart) - 1;
120
+ }
121
+ class SnapshotMap {
122
+ constructor(resolver, sourceLs) {
123
+ this.resolver = resolver;
124
+ this.sourceLs = sourceLs;
125
+ this.map = new fileCollection_1.FileMap();
126
+ }
127
+ set(fileName, snapshot) {
128
+ this.map.set(fileName, snapshot);
129
+ }
130
+ get(fileName) {
131
+ return this.map.get(fileName);
132
+ }
133
+ async retrieve(fileName) {
134
+ let snapshot = this.get(fileName);
135
+ if (snapshot) {
136
+ return snapshot;
137
+ }
138
+ const snap = this.sourceLs.snapshotManager.get(fileName) ??
139
+ // should not happen in most cases,
140
+ // the file should be in the project otherwise why would we know about it
141
+ (await this.resolver.getOrCreateSnapshot(fileName));
142
+ this.set(fileName, snap);
143
+ return snap;
144
+ }
145
+ }
146
+ exports.SnapshotMap = SnapshotMap;
147
+ function isAfterSvelte2TsxPropsReturn(text, end) {
148
+ const textBeforeProp = text.substring(0, end);
149
+ // This is how svelte2tsx writes out the props
150
+ if (textBeforeProp.includes('\nreturn { props: {')) {
151
+ return true;
152
+ }
153
+ }
154
+ function findContainingNode(node, textSpan, predicate) {
155
+ const children = node.getChildren();
156
+ const end = textSpan.start + textSpan.length;
157
+ for (const child of children) {
158
+ if (!(child.getStart() <= textSpan.start && child.getEnd() >= end)) {
159
+ continue;
160
+ }
161
+ if (predicate(child)) {
162
+ return child;
163
+ }
164
+ const foundInChildren = findContainingNode(child, textSpan, predicate);
165
+ if (foundInChildren) {
166
+ return foundInChildren;
167
+ }
168
+ }
169
+ }
170
+ function findClosestContainingNode(node, textSpan, predicate) {
171
+ let current = findContainingNode(node, textSpan, predicate);
172
+ if (!current) {
173
+ return;
174
+ }
175
+ let closest = current;
176
+ while (current) {
177
+ const foundInChildren = findContainingNode(current, textSpan, predicate);
178
+ closest = current;
179
+ current = foundInChildren;
180
+ }
181
+ return closest;
182
+ }
183
+ /**
184
+ * Finds node exactly matching span {start, length}.
185
+ */
186
+ function findNodeAtSpan(node, span, predicate) {
187
+ const { start, length } = span;
188
+ const end = start + length;
189
+ for (const child of node.getChildren()) {
190
+ const childStart = child.getStart();
191
+ if (end <= childStart) {
192
+ return;
193
+ }
194
+ const childEnd = child.getEnd();
195
+ if (start >= childEnd) {
196
+ continue;
197
+ }
198
+ if (start === childStart && end === childEnd) {
199
+ if (!predicate) {
200
+ return child;
201
+ }
202
+ if (predicate(child)) {
203
+ return child;
204
+ }
205
+ }
206
+ const foundInChildren = findNodeAtSpan(child, span, predicate);
207
+ if (foundInChildren) {
208
+ return foundInChildren;
209
+ }
210
+ }
211
+ }
212
+ function isSomeAncestor(node, predicate) {
213
+ for (let parent = node.parent; parent; parent = parent.parent) {
214
+ if (predicate(parent)) {
215
+ return true;
216
+ }
217
+ }
218
+ return false;
219
+ }
220
+ /**
221
+ * Tests a node then its parent and successive ancestors for some respective predicates.
222
+ */
223
+ function nodeAndParentsSatisfyRespectivePredicates(selfPredicate, ...predicates) {
224
+ return (node) => {
225
+ let next = node;
226
+ return [selfPredicate, ...predicates].every((predicate) => {
227
+ if (!next) {
228
+ return false;
229
+ }
230
+ const current = next;
231
+ next = next.parent;
232
+ return predicate(current);
233
+ });
234
+ };
235
+ }
236
+ const isRenderFunction = nodeAndParentsSatisfyRespectivePredicates((node) => typescript_1.default.isFunctionDeclaration(node) && node?.name?.getText() === svelte2tsx_1.internalHelpers.renderName, typescript_1.default.isSourceFile);
237
+ const isRenderFunctionBody = nodeAndParentsSatisfyRespectivePredicates(typescript_1.default.isBlock, isRenderFunction);
238
+ exports.isReactiveStatement = nodeAndParentsSatisfyRespectivePredicates((node) => typescript_1.default.isLabeledStatement(node) && node.label.getText() === '$', (0, utils_1.or)(
239
+ // function $$render() {
240
+ // $: x2 = __sveltets_2_invalidate(() => x * x)
241
+ // }
242
+ isRenderFunctionBody,
243
+ // function $$render() {
244
+ // ;() => {$: x, update();
245
+ // }
246
+ nodeAndParentsSatisfyRespectivePredicates(typescript_1.default.isBlock, typescript_1.default.isArrowFunction, typescript_1.default.isExpressionStatement, isRenderFunctionBody)));
247
+ function findRenderFunction(sourceFile) {
248
+ // only search top level
249
+ for (const child of sourceFile.statements) {
250
+ if (isRenderFunction(child)) {
251
+ return child;
252
+ }
253
+ }
254
+ }
255
+ const isInReactiveStatement = (node) => isSomeAncestor(node, exports.isReactiveStatement);
256
+ exports.isInReactiveStatement = isInReactiveStatement;
257
+ function gatherDescendants(node, predicate, dest = []) {
258
+ if (predicate(node)) {
259
+ dest.push(node);
260
+ }
261
+ else {
262
+ for (const child of node.getChildren()) {
263
+ gatherDescendants(child, predicate, dest);
264
+ }
265
+ }
266
+ return dest;
267
+ }
268
+ const gatherIdentifiers = (node) => gatherDescendants(node, typescript_1.default.isIdentifier);
269
+ exports.gatherIdentifiers = gatherIdentifiers;
270
+ function isKitTypePath(path) {
271
+ return !!path?.includes('.svelte-kit/types');
272
+ }
273
+ function getFormatCodeBasis(formatCodeSetting) {
274
+ const { baseIndentSize, indentSize, convertTabsToSpaces } = formatCodeSetting;
275
+ const baseIndent = convertTabsToSpaces
276
+ ? ' '.repeat(baseIndentSize ?? 4)
277
+ : baseIndentSize
278
+ ? '\t'
279
+ : '';
280
+ const indent = convertTabsToSpaces ? ' '.repeat(indentSize ?? 4) : baseIndentSize ? '\t' : '';
281
+ const semi = formatCodeSetting.semicolons === 'remove' ? '' : ';';
282
+ const newLine = formatCodeSetting.newLineCharacter ?? typescript_1.default.sys.newLine;
283
+ return {
284
+ baseIndent,
285
+ indent,
286
+ semi,
287
+ newLine
288
+ };
289
+ }
290
+ /**
291
+ * https://github.com/microsoft/TypeScript/blob/00dc0b6674eef3fbb3abb86f9d71705b11134446/src/services/utilities.ts#L2452
292
+ */
293
+ function getQuotePreference(sourceFile, preferences) {
294
+ const single = "'";
295
+ const double = '"';
296
+ if (preferences.quotePreference && preferences.quotePreference !== 'auto') {
297
+ return preferences.quotePreference === 'single' ? single : double;
298
+ }
299
+ const firstModuleSpecifier = Array.from(sourceFile.statements).find((statement) => typescript_1.default.isImportDeclaration(statement) && typescript_1.default.isStringLiteral(statement.moduleSpecifier))?.moduleSpecifier;
300
+ return firstModuleSpecifier
301
+ ? sourceFile.getText()[firstModuleSpecifier.pos] === '"'
302
+ ? double
303
+ : single
304
+ : double;
305
+ }
306
+ function findChildOfKind(node, kind) {
307
+ for (const child of node.getChildren()) {
308
+ if (child.kind === kind) {
309
+ return child;
310
+ }
311
+ const foundInChildren = findChildOfKind(child, kind);
312
+ if (foundInChildren) {
313
+ return foundInChildren;
314
+ }
315
+ }
316
+ }
317
+ function getNewScriptStartTag(lsConfig, newLine) {
318
+ const lang = lsConfig.svelte.defaultScriptLanguage;
319
+ const scriptLang = lang === 'none' ? '' : ` lang="${lang}"`;
320
+ return `<script${scriptLang}>${newLine}`;
321
+ }
322
+ function checkRangeMappingWithGeneratedSemi(originalRange, generatedRange, tsDoc) {
323
+ const originalLength = originalRange.end.character - originalRange.start.character;
324
+ const generatedLength = generatedRange.end.character - generatedRange.start.character;
325
+ // sourcemap off by one character issue + a generated semicolon
326
+ if (originalLength === generatedLength - 2 &&
327
+ tsDoc.getFullText()[tsDoc.offsetAt(generatedRange.end) - 1] === ';') {
328
+ originalRange.end.character += 1;
329
+ }
330
+ }
331
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/plugins/typescript/features/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import ts from 'typescript';
2
+ export interface MacroforgeAugmentationConfig {
3
+ macroNames: Set<string>;
4
+ mixinModule: string;
5
+ mixinTypes: string[];
6
+ }
7
+ export interface MacroforgeAugmentationSettings {
8
+ macroNames?: string[];
9
+ mixinModule?: string;
10
+ mixinTypes?: string[];
11
+ }
12
+ export interface MacroDiagnostic {
13
+ level: string;
14
+ message: string;
15
+ start?: number;
16
+ end?: number;
17
+ }
18
+ export interface MacroExpansionResult {
19
+ types: string | null;
20
+ diagnostics: MacroDiagnostic[];
21
+ }
22
+ export declare function createMacroforgeAugmentationConfig(settings?: MacroforgeAugmentationSettings): MacroforgeAugmentationConfig;
23
+ export declare function augmentWithMacroforge(tsModule: typeof ts, fileName: string, sourceText: string, config?: MacroforgeAugmentationConfig): MacroExpansionResult;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMacroforgeAugmentationConfig = createMacroforgeAugmentationConfig;
4
+ exports.augmentWithMacroforge = augmentWithMacroforge;
5
+ const macroforge_1 = require("macroforge");
6
+ const DEFAULT_MACRO_NAMES = ['Derive'];
7
+ const DEFAULT_MIXIN_TYPES = ['MacroDebug', 'MacroJSON'];
8
+ const FILE_EXTENSIONS = ['.ts', '.tsx', '.svelte', '.svelte.ts', '.svelte.tsx'];
9
+ function createMacroforgeAugmentationConfig(settings) {
10
+ return {
11
+ macroNames: new Set(settings?.macroNames ?? DEFAULT_MACRO_NAMES),
12
+ mixinModule: settings?.mixinModule ?? '$lib/macros',
13
+ mixinTypes: settings?.mixinTypes ?? DEFAULT_MIXIN_TYPES
14
+ };
15
+ }
16
+ function augmentWithMacroforge(tsModule, fileName, sourceText, config) {
17
+ if (!config || !shouldProcess(fileName)) {
18
+ return { types: null, diagnostics: [] };
19
+ }
20
+ // Basic check if macro is used to avoid invoking rust for every file
21
+ // This is a heuristic, but expand_sync parses anyway so it's safe
22
+ if (!sourceText.includes('@')) {
23
+ return { types: null, diagnostics: [] };
24
+ }
25
+ try {
26
+ const result = (0, macroforge_1.expandSync)(sourceText, fileName);
27
+ return {
28
+ types: result.types || null,
29
+ diagnostics: result.diagnostics
30
+ };
31
+ }
32
+ catch (e) {
33
+ // Handle generic failures (e.g. host initialization failed)
34
+ // We could create a diagnostic here if critical
35
+ return { types: null, diagnostics: [] };
36
+ }
37
+ }
38
+ function shouldProcess(fileName) {
39
+ return FILE_EXTENSIONS.some((ext) => fileName.endsWith(ext));
40
+ }
41
+ //# sourceMappingURL=macroforgeAugmenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macroforgeAugmenter.js","sourceRoot":"","sources":["../../../../src/plugins/typescript/macroforgeAugmenter.ts"],"names":[],"mappings":";;AA+BA,gFAQC;AAED,sDA2BC;AAnED,2CAAwC;AAExC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvC,MAAM,mBAAmB,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACxD,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AA0BhF,SAAgB,kCAAkC,CAC9C,QAAyC;IAEzC,OAAO;QACH,UAAU,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU,IAAI,mBAAmB,CAAC;QAChE,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,aAAa;QACnD,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,mBAAmB;KAC1D,CAAC;AACN,CAAC;AAED,SAAgB,qBAAqB,CACjC,QAAmB,EACnB,QAAgB,EAChB,UAAkB,EAClB,MAAqC;IAErC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,qEAAqE;IACrE,kEAAkE;IAClE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,uBAAU,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;SAClC,CAAC;IACN,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,4DAA4D;QAC5D,gDAAgD;QAChD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACnC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import ts from 'typescript';
2
+ import { DocumentSnapshot } from './DocumentSnapshot';
3
+ /**
4
+ * Creates a module loader specifically for `.svelte` files.
5
+ *
6
+ * The typescript language service tries to look up other files that are referenced in the currently open svelte file.
7
+ * For `.ts`/`.js` files this works, for `.svelte` files it does not by default.
8
+ * Reason: The typescript language service does not know about the `.svelte` file ending,
9
+ * so it assumes it's a normal typescript file and searches for files like `../Component.svelte.ts`, which is wrong.
10
+ * In order to fix this, we need to wrap typescript's module resolution and reroute all `.svelte.ts` file lookups to .svelte.
11
+ *
12
+ * @param getSnapshot A function which returns a (in case of svelte file fully preprocessed) typescript/javascript snapshot
13
+ * @param compilerOptions The typescript compiler options
14
+ */
15
+ export declare function createSvelteModuleLoader(getSnapshot: (fileName: string) => DocumentSnapshot, compilerOptions: ts.CompilerOptions, tsSystem: ts.System, tsModule: typeof ts, getModuleResolutionHost: () => ts.ModuleResolutionHost | undefined): {
16
+ svelteFileExists: (path: string) => boolean;
17
+ fileExists: (path: string) => boolean;
18
+ readFile: (path: string, encoding?: string) => string | undefined;
19
+ readDirectory: (path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number) => string[];
20
+ deleteFromModuleCache: (path: string) => void;
21
+ scheduleResolutionFailedLocationCheck: (path: string) => void;
22
+ resolveModuleNames: (moduleNames: string[], containingFile: string, _reusedNames: string[] | undefined, redirectedReference: ts.ResolvedProjectReference | undefined, options: ts.CompilerOptions, containingSourceFile?: ts.SourceFile | undefined) => Array<ts.ResolvedModule | undefined>;
23
+ resolveTypeReferenceDirectiveReferences: <T extends ts.FileReference | string>(typeDirectiveNames: readonly T[], containingFile: string, redirectedReference: ts.ResolvedProjectReference | undefined, options: ts.CompilerOptions, containingSourceFile: ts.SourceFile | undefined) => readonly ts.ResolvedTypeReferenceDirectiveWithFailedLookupLocations[];
24
+ mightHaveInvalidatedResolutions: (path: string) => boolean;
25
+ clearPendingInvalidations: () => void;
26
+ getModuleResolutionCache: () => ts.ModuleResolutionCache;
27
+ invalidateFailedLocationResolution: () => void;
28
+ };