@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,254 @@
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.createSvelteModuleLoader = createSvelteModuleLoader;
7
+ const typescript_1 = __importDefault(require("typescript"));
8
+ const fileCollection_1 = require("../../lib/documents/fileCollection");
9
+ const utils_1 = require("../../utils");
10
+ const svelte_sys_1 = require("./svelte-sys");
11
+ const utils_2 = require("./utils");
12
+ const CACHE_KEY_SEPARATOR = ':::';
13
+ /**
14
+ * Caches resolved modules.
15
+ */
16
+ class ModuleResolutionCache {
17
+ constructor() {
18
+ this.cache = new fileCollection_1.FileMap();
19
+ this.pendingInvalidations = new fileCollection_1.FileSet();
20
+ this.getCanonicalFileName = (0, utils_1.createGetCanonicalFileName)(typescript_1.default.sys.useCaseSensitiveFileNames);
21
+ }
22
+ /**
23
+ * Tries to get a cached module.
24
+ * Careful: `undefined` can mean either there's no match found, or that the result resolved to `undefined`.
25
+ */
26
+ get(moduleName, containingFile) {
27
+ return this.cache.get(this.getKey(moduleName, containingFile));
28
+ }
29
+ /**
30
+ * Checks if has cached module.
31
+ */
32
+ has(moduleName, containingFile) {
33
+ return this.cache.has(this.getKey(moduleName, containingFile));
34
+ }
35
+ /**
36
+ * Caches resolved module (or undefined).
37
+ */
38
+ set(moduleName, containingFile, resolvedModule) {
39
+ this.cache.set(this.getKey(moduleName, containingFile), resolvedModule);
40
+ }
41
+ /**
42
+ * Deletes module from cache. Call this if a file was deleted.
43
+ * @param resolvedModuleName full path of the module
44
+ */
45
+ delete(resolvedModuleName) {
46
+ resolvedModuleName = this.getCanonicalFileName(resolvedModuleName);
47
+ this.cache.forEach((val, key) => {
48
+ if (val.resolvedModule &&
49
+ this.getCanonicalFileName(val.resolvedModule.resolvedFileName) ===
50
+ resolvedModuleName) {
51
+ this.cache.delete(key);
52
+ this.pendingInvalidations.add(key.split(CACHE_KEY_SEPARATOR).shift() || '');
53
+ }
54
+ });
55
+ }
56
+ /**
57
+ * Deletes everything from cache that resolved to `undefined`
58
+ * and which might match the path.
59
+ */
60
+ deleteByValues(list) {
61
+ this.cache.forEach((val, key) => {
62
+ if (list.includes(val)) {
63
+ this.cache.delete(key);
64
+ }
65
+ });
66
+ }
67
+ getKey(moduleName, containingFile) {
68
+ return containingFile + CACHE_KEY_SEPARATOR + (0, utils_2.ensureRealSvelteFilePath)(moduleName);
69
+ }
70
+ clearPendingInvalidations() {
71
+ this.pendingInvalidations.clear();
72
+ }
73
+ oneOfResolvedModuleChanged(path) {
74
+ return this.pendingInvalidations.has(path);
75
+ }
76
+ }
77
+ class ImpliedNodeFormatResolver {
78
+ constructor(tsSystem) {
79
+ this.tsSystem = tsSystem;
80
+ }
81
+ resolve(importPath, importIdxInFile, sourceFile, compilerOptions) {
82
+ if ((0, utils_2.isSvelteFilePath)(importPath)) {
83
+ // Svelte imports should use the old resolution algorithm, else they are not found
84
+ return undefined;
85
+ }
86
+ let mode = undefined;
87
+ if (sourceFile) {
88
+ mode = typescript_1.default.getModeForResolutionAtIndex(sourceFile, importIdxInFile, compilerOptions);
89
+ }
90
+ return mode;
91
+ }
92
+ resolveForTypeReference(entry, sourceFile) {
93
+ let mode = undefined;
94
+ if (sourceFile) {
95
+ mode = typescript_1.default.getModeForFileReference(entry, sourceFile?.impliedNodeFormat);
96
+ }
97
+ return mode;
98
+ }
99
+ }
100
+ // https://github.com/microsoft/TypeScript/blob/dddd0667f012c51582c2ac92c08b8e57f2456587/src/compiler/program.ts#L989
101
+ function getTypeReferenceResolutionName(entry) {
102
+ return typeof entry !== 'string' ? (0, utils_1.toFileNameLowerCase)(entry.fileName) : entry;
103
+ }
104
+ /**
105
+ * Creates a module loader specifically for `.svelte` files.
106
+ *
107
+ * The typescript language service tries to look up other files that are referenced in the currently open svelte file.
108
+ * For `.ts`/`.js` files this works, for `.svelte` files it does not by default.
109
+ * Reason: The typescript language service does not know about the `.svelte` file ending,
110
+ * so it assumes it's a normal typescript file and searches for files like `../Component.svelte.ts`, which is wrong.
111
+ * In order to fix this, we need to wrap typescript's module resolution and reroute all `.svelte.ts` file lookups to .svelte.
112
+ *
113
+ * @param getSnapshot A function which returns a (in case of svelte file fully preprocessed) typescript/javascript snapshot
114
+ * @param compilerOptions The typescript compiler options
115
+ */
116
+ function createSvelteModuleLoader(getSnapshot, compilerOptions, tsSystem, tsModule, getModuleResolutionHost) {
117
+ const getCanonicalFileName = (0, utils_1.createGetCanonicalFileName)(tsSystem.useCaseSensitiveFileNames);
118
+ const svelteSys = (0, svelte_sys_1.createSvelteSys)(tsSystem);
119
+ // tsModuleCache caches package.json parsing and module resolution for directory
120
+ const tsModuleCache = tsModule.createModuleResolutionCache(tsSystem.getCurrentDirectory(), (0, utils_1.createGetCanonicalFileName)(tsSystem.useCaseSensitiveFileNames));
121
+ const tsTypeReferenceDirectiveCache = tsModule.createTypeReferenceDirectiveResolutionCache(tsSystem.getCurrentDirectory(), getCanonicalFileName, undefined, tsModuleCache.getPackageJsonInfoCache());
122
+ const moduleCache = new ModuleResolutionCache();
123
+ const typeReferenceCache = new Map();
124
+ const impliedNodeFormatResolver = new ImpliedNodeFormatResolver(tsSystem);
125
+ const resolutionWithFailedLookup = new Set();
126
+ const failedLocationInvalidated = new fileCollection_1.FileSet(tsSystem.useCaseSensitiveFileNames);
127
+ const pendingFailedLocationCheck = new fileCollection_1.FileSet(tsSystem.useCaseSensitiveFileNames);
128
+ return {
129
+ svelteFileExists: svelteSys.svelteFileExists,
130
+ fileExists: svelteSys.fileExists,
131
+ readFile: svelteSys.readFile,
132
+ readDirectory: svelteSys.readDirectory,
133
+ deleteFromModuleCache: (path) => {
134
+ svelteSys.deleteFromCache(path);
135
+ moduleCache.delete(path);
136
+ },
137
+ scheduleResolutionFailedLocationCheck: (path) => {
138
+ svelteSys.deleteFromCache(path);
139
+ if ((0, utils_2.isSvelteFilePath)(path)) {
140
+ pendingFailedLocationCheck.add((0, utils_2.toVirtualSvelteFilePath)(path));
141
+ }
142
+ else {
143
+ pendingFailedLocationCheck.add(path);
144
+ }
145
+ },
146
+ resolveModuleNames,
147
+ resolveTypeReferenceDirectiveReferences,
148
+ mightHaveInvalidatedResolutions,
149
+ clearPendingInvalidations,
150
+ getModuleResolutionCache: () => tsModuleCache,
151
+ invalidateFailedLocationResolution
152
+ };
153
+ function resolveModuleNames(moduleNames, containingFile, _reusedNames, redirectedReference, options, containingSourceFile) {
154
+ return moduleNames.map((moduleName, index) => {
155
+ const cached = moduleCache.get(moduleName, containingFile);
156
+ if (cached) {
157
+ return cached.resolvedModule;
158
+ }
159
+ const resolvedModule = resolveModuleName(moduleName, containingFile, containingSourceFile, index, redirectedReference, options);
160
+ cacheResolutionWithFailedLookup(resolvedModule, containingFile);
161
+ moduleCache.set(moduleName, containingFile, resolvedModule);
162
+ return resolvedModule?.resolvedModule;
163
+ });
164
+ }
165
+ function resolveModuleName(name, containingFile, containingSourceFile, index, redirectedReference, option) {
166
+ const mode = impliedNodeFormatResolver.resolve(name, index, containingSourceFile,
167
+ // use the same compiler options as resolveModuleName
168
+ // otherwise it might not find the module because of inconsistent module resolution strategy
169
+ redirectedReference?.commandLine.options ?? option);
170
+ const resolvedModuleWithFailedLookup = tsModule.resolveModuleName(name, containingFile, compilerOptions, getModuleResolutionHost() ?? svelteSys, tsModuleCache, redirectedReference, mode);
171
+ const resolvedModule = resolvedModuleWithFailedLookup.resolvedModule;
172
+ if (!resolvedModule || !(0, utils_2.isVirtualSvelteFilePath)(resolvedModule.resolvedFileName)) {
173
+ return resolvedModuleWithFailedLookup;
174
+ }
175
+ const resolvedFileName = svelteSys.getRealSveltePathIfExists(resolvedModule.resolvedFileName);
176
+ if (!(0, utils_2.isSvelteFilePath)(resolvedFileName)) {
177
+ return resolvedModuleWithFailedLookup;
178
+ }
179
+ const snapshot = getSnapshot(resolvedFileName);
180
+ const resolvedSvelteModule = {
181
+ extension: (0, utils_2.getExtensionFromScriptKind)(snapshot && snapshot.scriptKind),
182
+ resolvedFileName,
183
+ isExternalLibraryImport: resolvedModule.isExternalLibraryImport
184
+ };
185
+ return {
186
+ ...resolvedModuleWithFailedLookup,
187
+ resolvedModule: resolvedSvelteModule
188
+ };
189
+ }
190
+ function resolveTypeReferenceDirectiveReferences(typeDirectiveNames, containingFile, redirectedReference, options, containingSourceFile) {
191
+ return typeDirectiveNames.map((typeDirectiveName) => {
192
+ const entry = getTypeReferenceResolutionName(typeDirectiveName);
193
+ const mode = impliedNodeFormatResolver.resolveForTypeReference(entry, containingSourceFile);
194
+ const key = `${entry}|${mode}`;
195
+ let result = typeReferenceCache.get(key);
196
+ if (!result) {
197
+ result = typescript_1.default.resolveTypeReferenceDirective(entry, containingFile, options, {
198
+ ...tsSystem
199
+ }, redirectedReference, tsTypeReferenceDirectiveCache, mode);
200
+ typeReferenceCache.set(key, result);
201
+ }
202
+ return result;
203
+ });
204
+ }
205
+ function mightHaveInvalidatedResolutions(path) {
206
+ return (moduleCache.oneOfResolvedModuleChanged(path) ||
207
+ // tried but failed file might now exist
208
+ failedLocationInvalidated.has(path));
209
+ }
210
+ function clearPendingInvalidations() {
211
+ moduleCache.clearPendingInvalidations();
212
+ failedLocationInvalidated.clear();
213
+ pendingFailedLocationCheck.clear();
214
+ }
215
+ function cacheResolutionWithFailedLookup(resolvedModule, containingFile) {
216
+ if (!resolvedModule.failedLookupLocations?.length) {
217
+ return;
218
+ }
219
+ // The resolvedModule object will be reused in different files. A bit hacky, but TypeScript also does this.
220
+ // https://github.com/microsoft/TypeScript/blob/11e79327598db412a161616849041487673fadab/src/compiler/resolutionCache.ts#L1103
221
+ resolvedModule.files ??= new Set();
222
+ resolvedModule.files.add(containingFile);
223
+ resolutionWithFailedLookup.add(resolvedModule);
224
+ }
225
+ function invalidateFailedLocationResolution() {
226
+ const toRemoves = [];
227
+ resolutionWithFailedLookup.forEach((resolvedModule) => {
228
+ if (!resolvedModule.failedLookupLocations) {
229
+ return;
230
+ }
231
+ for (const location of resolvedModule.failedLookupLocations) {
232
+ if (pendingFailedLocationCheck.has(location)) {
233
+ toRemoves.push(resolvedModule);
234
+ resolvedModule.files?.forEach((file) => {
235
+ failedLocationInvalidated.add(file);
236
+ });
237
+ break;
238
+ }
239
+ }
240
+ });
241
+ if (toRemoves.length) {
242
+ moduleCache.deleteByValues(toRemoves);
243
+ resolutionWithFailedLookup.forEach((r) => {
244
+ if (toRemoves.includes(r)) {
245
+ resolutionWithFailedLookup.delete(r);
246
+ }
247
+ });
248
+ tsModuleCache.clear();
249
+ tsTypeReferenceDirectiveCache.clear();
250
+ }
251
+ pendingFailedLocationCheck.clear();
252
+ }
253
+ }
254
+ //# sourceMappingURL=module-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../../../src/plugins/typescript/module-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * adopted from https://github.com/microsoft/vscode/blob/10722887b8629f90cc38ee7d90d54e8246dc895f/extensions/typescript-language-features/src/utils/previewer.ts
3
+ */
4
+ import ts from 'typescript';
5
+ export declare function getTagDocumentation(tag: ts.JSDocTagInfo): string | undefined;
6
+ export declare function plain(parts: ts.SymbolDisplayPart[] | string): string;
7
+ export declare function getMarkdownDocumentation(documentation: ts.SymbolDisplayPart[] | undefined, tags: ts.JSDocTagInfo[] | undefined): string;
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License. See License.txt in the project root for license information.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getTagDocumentation = getTagDocumentation;
11
+ exports.plain = plain;
12
+ exports.getMarkdownDocumentation = getMarkdownDocumentation;
13
+ /**
14
+ * adopted from https://github.com/microsoft/vscode/blob/10722887b8629f90cc38ee7d90d54e8246dc895f/extensions/typescript-language-features/src/utils/previewer.ts
15
+ */
16
+ const typescript_1 = __importDefault(require("typescript"));
17
+ const utils_1 = require("../../utils");
18
+ function replaceLinks(text) {
19
+ return (text
20
+ // Http(s) links
21
+ .replace(/\{@(link|linkplain|linkcode) (https?:\/\/[^ |}]+?)(?:[| ]([^{}\n]+?))?\}/gi, (_, tag, link, text) => {
22
+ switch (tag) {
23
+ case 'linkcode':
24
+ return `[\`${text ? text.trim() : link}\`](${link})`;
25
+ default:
26
+ return `[${text ? text.trim() : link}](${link})`;
27
+ }
28
+ }));
29
+ }
30
+ function processInlineTags(text) {
31
+ return replaceLinks(text);
32
+ }
33
+ function getTagBodyText(tag) {
34
+ if (!tag.text) {
35
+ return undefined;
36
+ }
37
+ // Convert to markdown code block if it is not already one
38
+ function makeCodeblock(text) {
39
+ if (text.match(/^\s*[~`]{3}/g)) {
40
+ return text;
41
+ }
42
+ return '```\n' + text + '\n```';
43
+ }
44
+ function makeExampleTag(text) {
45
+ // check for caption tags, fix for https://github.com/microsoft/vscode/issues/79704
46
+ const captionTagMatches = text.match(/<caption>(.*?)<\/caption>\s*(\r\n|\n)/);
47
+ if (captionTagMatches && captionTagMatches.index === 0) {
48
+ return (captionTagMatches[1] +
49
+ '\n\n' +
50
+ makeCodeblock(text.substr(captionTagMatches[0].length)));
51
+ }
52
+ else {
53
+ return makeCodeblock(text);
54
+ }
55
+ }
56
+ function makeEmailTag(text) {
57
+ // fix obsucated email address, https://github.com/microsoft/vscode/issues/80898
58
+ const emailMatch = text.match(/(.+)\s<([-.\w]+@[-.\w]+)>/);
59
+ if (emailMatch === null) {
60
+ return text;
61
+ }
62
+ else {
63
+ return `${emailMatch[1]} ${emailMatch[2]}`;
64
+ }
65
+ }
66
+ switch (tag.name) {
67
+ case 'example':
68
+ return makeExampleTag(typescript_1.default.displayPartsToString(tag.text));
69
+ case 'author':
70
+ return makeEmailTag(typescript_1.default.displayPartsToString(tag.text));
71
+ case 'default':
72
+ return makeCodeblock(typescript_1.default.displayPartsToString(tag.text));
73
+ }
74
+ return processInlineTags(typescript_1.default.displayPartsToString(tag.text));
75
+ }
76
+ function getTagDocumentation(tag) {
77
+ function getWithType() {
78
+ const body = (typescript_1.default.displayPartsToString(tag.text) || '').split(/^(\S+)\s*-?\s*/);
79
+ if (body?.length === 3) {
80
+ const param = body[1];
81
+ const doc = body[2];
82
+ const label = `*@${tag.name}* \`${param}\``;
83
+ if (!doc) {
84
+ return label;
85
+ }
86
+ return (label +
87
+ (doc.match(/\r\n|\n/g)
88
+ ? ' \n' + processInlineTags(doc)
89
+ : ` — ${processInlineTags(doc)}`));
90
+ }
91
+ }
92
+ switch (tag.name) {
93
+ case 'augments':
94
+ case 'extends':
95
+ case 'param':
96
+ case 'template':
97
+ return getWithType();
98
+ }
99
+ // Generic tag
100
+ const label = `*@${tag.name}*`;
101
+ const text = getTagBodyText(tag);
102
+ if (!text) {
103
+ return label;
104
+ }
105
+ return label + (text.match(/\r\n|\n/g) ? ' \n' + text : ` — ${text}`);
106
+ }
107
+ function plain(parts) {
108
+ return processInlineTags(typeof parts === 'string' ? parts : typescript_1.default.displayPartsToString(parts));
109
+ }
110
+ function getMarkdownDocumentation(documentation, tags) {
111
+ let result = [];
112
+ if (documentation) {
113
+ result.push(plain(documentation));
114
+ }
115
+ if (tags) {
116
+ result = result.concat(tags.map(getTagDocumentation));
117
+ }
118
+ return result.filter(utils_1.isNotNullOrUndefined).join('\n\n');
119
+ }
120
+ //# sourceMappingURL=previewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewer.js","sourceRoot":"","sources":["../../../../src/plugins/typescript/previewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import ts from 'typescript';
2
+ import { PublishDiagnosticsParams, RelativePattern, TextDocumentContentChangeEvent } from 'vscode-languageserver-protocol';
3
+ import { Document } from '../../lib/documents';
4
+ import { DocumentSnapshot } from './DocumentSnapshot';
5
+ import { GlobalSnapshotsManager, SnapshotManager } from './SnapshotManager';
6
+ import { ProjectService } from './serviceCache';
7
+ export interface LanguageServiceContainer {
8
+ readonly tsconfigPath: string;
9
+ readonly compilerOptions: ts.CompilerOptions;
10
+ readonly configErrors: ts.Diagnostic[];
11
+ readonly snapshotManager: SnapshotManager;
12
+ getService(skipSynchronize?: boolean): ts.LanguageService;
13
+ updateSnapshot(documentOrFilePath: Document | string): DocumentSnapshot;
14
+ deleteSnapshot(filePath: string): void;
15
+ invalidateModuleCache(filePath: string[]): void;
16
+ scheduleProjectFileUpdate(watcherNewFiles: string[]): void;
17
+ ensureProjectFileUpdates(newFile?: string): void;
18
+ updateTsOrJsFile(fileName: string, changes?: TextDocumentContentChangeEvent[]): void;
19
+ /**
20
+ * Checks if a file is present in the project.
21
+ * Unlike `fileBelongsToProject`, this doesn't run a file search on disk.
22
+ */
23
+ hasFile(filePath: string): boolean;
24
+ /**
25
+ * Careful, don't call often, or it will hurt performance.
26
+ * Only works for TS versions that have ScriptKind.Deferred
27
+ */
28
+ fileBelongsToProject(filePath: string, isNew: boolean): boolean;
29
+ onAutoImportProviderSettingsChanged(): void;
30
+ onPackageJsonChange(packageJsonPath: string): void;
31
+ getTsConfigSvelteOptions(): {
32
+ namespace: string;
33
+ };
34
+ getResolvedProjectReferences(): TsConfigInfo[];
35
+ openVirtualDocument(document: Document): void;
36
+ isShimFiles(filePath: string): boolean;
37
+ getProjectConfig(): ts.ParsedCommandLine;
38
+ dispose(): void;
39
+ }
40
+ declare module 'typescript' {
41
+ interface LanguageServiceHost {
42
+ /**
43
+ * @internal
44
+ * This is needed for the languageService program to know that there is a new file
45
+ * that might change the module resolution results
46
+ */
47
+ hasInvalidatedResolutions?: (sourceFile: string) => boolean;
48
+ /**
49
+ * @internal
50
+ */
51
+ getModuleResolutionCache?(): ts.ModuleResolutionCache;
52
+ /** @internal */
53
+ setCompilerHost?(host: ts.CompilerHost): void;
54
+ }
55
+ interface ResolvedModuleWithFailedLookupLocations {
56
+ /** @internal */
57
+ failedLookupLocations?: string[];
58
+ /** @internal */
59
+ affectingLocations?: string[];
60
+ /** @internal */
61
+ resolutionDiagnostics?: ts.Diagnostic[];
62
+ /**
63
+ * @internal
64
+ * Used to issue a better diagnostic when an unresolvable module may
65
+ * have been resolvable under different module resolution settings.
66
+ */
67
+ alternateResult?: string;
68
+ }
69
+ }
70
+ export interface TsConfigInfo {
71
+ parsedCommandLine: ts.ParsedCommandLine;
72
+ snapshotManager: SnapshotManager;
73
+ pendingProjectFileUpdate: boolean;
74
+ configFilePath: string;
75
+ extendedConfigPaths?: Set<string>;
76
+ }
77
+ /**
78
+ * For testing only: Reset the cache for services.
79
+ * Try to refactor this some day so that this file provides
80
+ * a setup function which creates all this nicely instead.
81
+ */
82
+ export declare function __resetCache(): void;
83
+ export interface LanguageServiceDocumentContext {
84
+ isSvelteCheck: boolean;
85
+ ambientTypesSource: string;
86
+ transformOnTemplateError: boolean;
87
+ createDocument: (fileName: string, content: string) => Document;
88
+ globalSnapshotsManager: GlobalSnapshotsManager;
89
+ notifyExceedSizeLimit: (() => void) | undefined;
90
+ extendedConfigCache: Map<string, ts.ExtendedConfigCacheEntry>;
91
+ onProjectReloaded: ((configFileNames: string[]) => void) | undefined;
92
+ reportConfigError: ((diagnostics: PublishDiagnosticsParams) => void) | undefined;
93
+ watchTsConfig: boolean;
94
+ tsSystem: ts.System;
95
+ projectService: ProjectService | undefined;
96
+ watchDirectory: ((patterns: RelativePattern[]) => void) | undefined;
97
+ nonRecursiveWatchPattern: string | undefined;
98
+ }
99
+ export declare function getService(path: string, workspaceUris: string[], docContext: LanguageServiceDocumentContext): Promise<LanguageServiceContainer>;
100
+ export declare function forAllServices(cb: (service: LanguageServiceContainer) => any): Promise<void>;
101
+ /**
102
+ * @param tsconfigPath has to be absolute
103
+ * @param docContext
104
+ */
105
+ export declare function getServiceForTsconfig(tsconfigPath: string, workspacePath: string, docContext: LanguageServiceDocumentContext): Promise<LanguageServiceContainer>;