@astrojs/language-server 0.23.1 → 0.24.0

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 (84) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/browser.js +8 -1
  3. package/dist/check.d.ts +2 -1
  4. package/dist/check.js +8 -2
  5. package/dist/core/DiagnosticsManager.d.ts +2 -2
  6. package/dist/core/config/ConfigManager.d.ts +8 -8
  7. package/dist/core/config/ConfigManager.js +6 -12
  8. package/dist/core/documents/AstroDocument.d.ts +1 -1
  9. package/dist/core/documents/AstroDocument.js +1 -1
  10. package/dist/core/documents/DocumentBase.d.ts +2 -2
  11. package/dist/core/documents/DocumentManager.d.ts +1 -1
  12. package/dist/core/documents/DocumentManager.js +1 -1
  13. package/dist/core/documents/DocumentMapper.d.ts +2 -2
  14. package/dist/core/documents/parseHtml.d.ts +3 -2
  15. package/dist/core/documents/parseHtml.js +12 -5
  16. package/dist/core/documents/utils.d.ts +3 -3
  17. package/dist/core/documents/utils.js +1 -2
  18. package/dist/node.js +15 -1
  19. package/dist/plugins/PluginHost.d.ts +2 -2
  20. package/dist/plugins/PluginHost.js +1 -1
  21. package/dist/plugins/astro/AstroPlugin.d.ts +6 -5
  22. package/dist/plugins/astro/AstroPlugin.js +1 -0
  23. package/dist/plugins/astro/features/CompletionsProvider.d.ts +4 -3
  24. package/dist/plugins/astro/features/CompletionsProvider.js +12 -15
  25. package/dist/plugins/css/CSSDocument.d.ts +2 -2
  26. package/dist/plugins/css/CSSDocument.js +1 -1
  27. package/dist/plugins/css/CSSPlugin.d.ts +1 -1
  28. package/dist/plugins/css/CSSPlugin.js +3 -3
  29. package/dist/plugins/css/StyleAttributeDocument.d.ts +2 -2
  30. package/dist/plugins/css/StyleAttributeDocument.js +1 -1
  31. package/dist/plugins/css/features/astro-selectors.d.ts +1 -1
  32. package/dist/plugins/css/features/getIdClassCompletions.d.ts +2 -2
  33. package/dist/plugins/html/HTMLPlugin.d.ts +3 -3
  34. package/dist/plugins/html/HTMLPlugin.js +1 -1
  35. package/dist/plugins/html/utils.d.ts +1 -1
  36. package/dist/plugins/index.d.ts +4 -4
  37. package/dist/plugins/index.js +4 -4
  38. package/dist/plugins/interfaces.d.ts +2 -2
  39. package/dist/plugins/typescript/LanguageServiceManager.d.ts +8 -9
  40. package/dist/plugins/typescript/LanguageServiceManager.js +5 -3
  41. package/dist/plugins/typescript/TypeScriptPlugin.d.ts +7 -6
  42. package/dist/plugins/typescript/TypeScriptPlugin.js +15 -15
  43. package/dist/plugins/typescript/astro-sys.d.ts +2 -3
  44. package/dist/plugins/typescript/astro-sys.js +7 -11
  45. package/dist/plugins/typescript/astro2tsx.js +3 -4
  46. package/dist/plugins/typescript/features/CodeActionsProvider.d.ts +5 -4
  47. package/dist/plugins/typescript/features/CodeActionsProvider.js +6 -9
  48. package/dist/plugins/typescript/features/CompletionsProvider.d.ts +9 -7
  49. package/dist/plugins/typescript/features/CompletionsProvider.js +56 -80
  50. package/dist/plugins/typescript/features/DefinitionsProvider.d.ts +4 -4
  51. package/dist/plugins/typescript/features/DiagnosticsProvider.d.ts +6 -4
  52. package/dist/plugins/typescript/features/DiagnosticsProvider.js +29 -19
  53. package/dist/plugins/typescript/features/DocumentSymbolsProvider.d.ts +3 -2
  54. package/dist/plugins/typescript/features/DocumentSymbolsProvider.js +3 -4
  55. package/dist/plugins/typescript/features/FoldingRangesProvider.d.ts +7 -4
  56. package/dist/plugins/typescript/features/FoldingRangesProvider.js +12 -15
  57. package/dist/plugins/typescript/features/HoverProvider.d.ts +5 -4
  58. package/dist/plugins/typescript/features/HoverProvider.js +3 -6
  59. package/dist/plugins/typescript/features/InlayHintsProvider.d.ts +5 -4
  60. package/dist/plugins/typescript/features/InlayHintsProvider.js +5 -8
  61. package/dist/plugins/typescript/features/SemanticTokenProvider.d.ts +3 -2
  62. package/dist/plugins/typescript/features/SemanticTokenProvider.js +4 -7
  63. package/dist/plugins/typescript/features/SignatureHelpProvider.d.ts +5 -4
  64. package/dist/plugins/typescript/features/SignatureHelpProvider.js +7 -10
  65. package/dist/plugins/typescript/features/TypeDefinitionsProvider.d.ts +3 -3
  66. package/dist/plugins/typescript/features/utils.d.ts +3 -3
  67. package/dist/plugins/typescript/language-service.d.ts +7 -6
  68. package/dist/plugins/typescript/language-service.js +29 -30
  69. package/dist/plugins/typescript/module-loader.d.ts +2 -2
  70. package/dist/plugins/typescript/module-loader.js +12 -16
  71. package/dist/plugins/typescript/previewer.d.ts +3 -7
  72. package/dist/plugins/typescript/previewer.js +13 -17
  73. package/dist/plugins/typescript/snapshots/DocumentSnapshot.d.ts +4 -5
  74. package/dist/plugins/typescript/snapshots/DocumentSnapshot.js +2 -7
  75. package/dist/plugins/typescript/snapshots/SnapshotManager.d.ts +5 -2
  76. package/dist/plugins/typescript/snapshots/SnapshotManager.js +15 -17
  77. package/dist/plugins/typescript/snapshots/utils.d.ts +7 -7
  78. package/dist/plugins/typescript/snapshots/utils.js +28 -29
  79. package/dist/plugins/typescript/utils.d.ts +8 -10
  80. package/dist/plugins/typescript/utils.js +90 -107
  81. package/dist/server.d.ts +5 -1
  82. package/dist/server.js +29 -18
  83. package/dist/utils.d.ts +1 -1
  84. package/package.json +5 -4
package/dist/server.js CHANGED
@@ -27,37 +27,37 @@ exports.startLanguageServer = void 0;
27
27
  const vscode = __importStar(require("vscode-languageserver"));
28
28
  const vscode_languageserver_1 = require("vscode-languageserver");
29
29
  const ConfigManager_1 = require("./core/config/ConfigManager");
30
- const DocumentManager_1 = require("./core/documents/DocumentManager");
31
30
  const DiagnosticsManager_1 = require("./core/DiagnosticsManager");
31
+ const DocumentManager_1 = require("./core/documents/DocumentManager");
32
+ const plugins_1 = require("./plugins");
32
33
  const AstroPlugin_1 = require("./plugins/astro/AstroPlugin");
33
34
  const CSSPlugin_1 = require("./plugins/css/CSSPlugin");
34
35
  const HTMLPlugin_1 = require("./plugins/html/HTMLPlugin");
35
36
  const PluginHost_1 = require("./plugins/PluginHost");
36
- const plugins_1 = require("./plugins");
37
- const utils_1 = require("./utils");
38
- const utils_2 = require("./plugins/typescript/utils");
39
37
  const CodeActionsProvider_1 = require("./plugins/typescript/features/CodeActionsProvider");
40
38
  const LanguageServiceManager_1 = require("./plugins/typescript/LanguageServiceManager");
39
+ const utils_1 = require("./plugins/typescript/utils");
40
+ const utils_2 = require("./utils");
41
41
  const TagCloseRequest = new vscode.RequestType('html/tag');
42
42
  // Start the language server
43
- function startLanguageServer(connection) {
43
+ function startLanguageServer(connection, env) {
44
44
  // Create our managers
45
45
  const documentManager = new DocumentManager_1.DocumentManager();
46
46
  const pluginHost = new PluginHost_1.PluginHost(documentManager);
47
- const configManager = new ConfigManager_1.ConfigManager(connection);
47
+ let configManager;
48
48
  let typescriptPlugin = undefined;
49
49
  let hasConfigurationCapability = false;
50
50
  connection.onInitialize((params) => {
51
51
  const environment = params.initializationOptions?.environment ?? 'node';
52
52
  const workspaceUris = params.workspaceFolders?.map((folder) => folder.uri.toString()) ?? [params.rootUri ?? ''];
53
53
  workspaceUris.forEach((uri) => {
54
- uri = (0, utils_1.urlToPath)(uri);
54
+ uri = (0, utils_2.urlToPath)(uri);
55
55
  // If the workspace is not an Astro project, we shouldn't warn about not finding Astro
56
56
  // Unless the extension enabled itself in an untitled workspace, in which case the warning is valid
57
- if (!(0, utils_1.isAstroWorkspace)(uri) && uri !== '/' && uri !== '') {
57
+ if (!(0, utils_2.isAstroWorkspace)(uri) && uri !== '/' && uri !== '') {
58
58
  return;
59
59
  }
60
- const astroInstall = (0, utils_1.getAstroInstall)([uri]);
60
+ const astroInstall = (0, utils_2.getAstroInstall)([uri]);
61
61
  if (!astroInstall) {
62
62
  connection.sendNotification(vscode_languageserver_1.ShowMessageNotification.type, {
63
63
  message: `Couldn't find Astro in workspace "${uri}". Experience might be degraded. For the best experience, please make sure Astro is installed and then restart the language server`,
@@ -66,6 +66,7 @@ function startLanguageServer(connection) {
66
66
  }
67
67
  });
68
68
  hasConfigurationCapability = !!(params.capabilities.workspace && !!params.capabilities.workspace.configuration);
69
+ configManager = new ConfigManager_1.ConfigManager(connection, hasConfigurationCapability);
69
70
  pluginHost.initialize({
70
71
  filterIncompleteCompletions: !params.initializationOptions?.dontFilterIncompleteCompletions,
71
72
  definitionLinkSupport: !!params.capabilities.textDocument?.definition?.linkSupport,
@@ -75,10 +76,20 @@ function startLanguageServer(connection) {
75
76
  pluginHost.registerPlugin(new CSSPlugin_1.CSSPlugin(configManager));
76
77
  // We don't currently support running the TypeScript and Astro plugin in the browser
77
78
  if (environment === 'node') {
78
- const languageServiceManager = new LanguageServiceManager_1.LanguageServiceManager(documentManager, workspaceUris.map(utils_1.normalizeUri), configManager);
79
- typescriptPlugin = new plugins_1.TypeScriptPlugin(configManager, languageServiceManager);
80
- pluginHost.registerPlugin(new AstroPlugin_1.AstroPlugin(configManager, languageServiceManager));
81
- pluginHost.registerPlugin(typescriptPlugin);
79
+ const ts = env.loadTypescript(params.initializationOptions);
80
+ if (ts) {
81
+ const tsLocalized = env.loadTypescriptLocalized(params.initializationOptions);
82
+ const languageServiceManager = new LanguageServiceManager_1.LanguageServiceManager(documentManager, workspaceUris.map(utils_2.normalizeUri), configManager, ts, tsLocalized);
83
+ typescriptPlugin = new plugins_1.TypeScriptPlugin(configManager, languageServiceManager);
84
+ pluginHost.registerPlugin(new AstroPlugin_1.AstroPlugin(configManager, languageServiceManager));
85
+ pluginHost.registerPlugin(typescriptPlugin);
86
+ }
87
+ else {
88
+ connection.sendNotification(vscode_languageserver_1.ShowMessageNotification.type, {
89
+ message: `Astro: Couldn't load TypeScript from path ${params?.initializationOptions?.typescript?.serverPath}. Only HTML and CSS features will be enabled`,
90
+ type: vscode_languageserver_1.MessageType.Warning,
91
+ });
92
+ }
82
93
  }
83
94
  return {
84
95
  capabilities: {
@@ -136,7 +147,7 @@ function startLanguageServer(connection) {
136
147
  documentSymbolProvider: true,
137
148
  linkedEditingRangeProvider: true,
138
149
  semanticTokensProvider: {
139
- legend: (0, utils_2.getSemanticTokenLegend)(),
150
+ legend: (0, utils_1.getSemanticTokenLegend)(),
140
151
  range: true,
141
152
  full: true,
142
153
  },
@@ -172,11 +183,11 @@ function startLanguageServer(connection) {
172
183
  documentManager.updateDocument(params.textDocument, params.contentChanges);
173
184
  });
174
185
  const diagnosticsManager = new DiagnosticsManager_1.DiagnosticsManager(connection.sendDiagnostics, documentManager, pluginHost.getDiagnostics.bind(pluginHost));
175
- const updateAllDiagnostics = (0, utils_1.debounceThrottle)(() => diagnosticsManager.updateAll(), 1000);
186
+ const updateAllDiagnostics = (0, utils_2.debounceThrottle)(() => diagnosticsManager.updateAll(), 1000);
176
187
  connection.onDidChangeWatchedFiles((evt) => {
177
188
  const params = evt.changes
178
189
  .map((change) => ({
179
- fileName: (0, utils_1.urlToPath)(change.uri),
190
+ fileName: (0, utils_2.urlToPath)(change.uri),
180
191
  changeType: change.type,
181
192
  }))
182
193
  .filter((change) => !!change.fileName);
@@ -213,7 +224,7 @@ function startLanguageServer(connection) {
213
224
  connection.onRenameRequest((evt) => pluginHost.rename(evt.textDocument, evt.position, evt.newName));
214
225
  connection.onDidSaveTextDocument(updateAllDiagnostics);
215
226
  connection.onNotification('$/onDidChangeNonAstroFile', async (e) => {
216
- const path = (0, utils_1.urlToPath)(e.uri);
227
+ const path = (0, utils_2.urlToPath)(e.uri);
217
228
  if (path) {
218
229
  pluginHost.updateNonAstroFile(path, e.changes);
219
230
  }
@@ -229,7 +240,7 @@ function startLanguageServer(connection) {
229
240
  return tsxOutput.code;
230
241
  }
231
242
  });
232
- documentManager.on('documentChange', (0, utils_1.debounceThrottle)(async (document) => diagnosticsManager.update(document), 1000));
243
+ documentManager.on('documentChange', (0, utils_2.debounceThrottle)(async (document) => diagnosticsManager.update(document), 1000));
233
244
  documentManager.on('documentClose', (document) => {
234
245
  diagnosticsManager.removeDiagnostics(document);
235
246
  configManager.removeDocument(document.uri);
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Position, Range } from 'vscode-languageserver';
1
+ import type { Position, Range } from 'vscode-languageserver';
2
2
  /** Normalizes a document URI */
3
3
  export declare function normalizeUri(uri: string): string;
4
4
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrojs/language-server",
3
- "version": "0.23.1",
3
+ "version": "0.24.0",
4
4
  "author": "withastro",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -20,10 +20,10 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@vscode/emmet-helper": "^2.8.4",
23
+ "events": "^3.3.0",
23
24
  "prettier": "^2.7.1",
24
25
  "prettier-plugin-astro": "^0.5.3",
25
26
  "source-map": "^0.7.3",
26
- "typescript": "~4.6.4",
27
27
  "vscode-css-languageservice": "^6.0.1",
28
28
  "vscode-html-languageservice": "^5.0.0",
29
29
  "vscode-languageserver": "^8.0.1",
@@ -39,7 +39,7 @@
39
39
  "@types/mocha": "^9.1.0",
40
40
  "@types/prettier": "^2.7.0",
41
41
  "@types/sinon": "^10.0.11",
42
- "astro": "^1.0.0-beta.72",
42
+ "astro": "^1.1.3",
43
43
  "astro-scripts": "0.0.1",
44
44
  "chai": "^4.3.6",
45
45
  "cross-env": "^7.0.3",
@@ -47,6 +47,7 @@
47
47
  "sinon": "^13.0.1",
48
48
  "svelte": "^3.49.0",
49
49
  "ts-node": "^10.7.0",
50
- "vue": "^3.2.37"
50
+ "vue": "^3.2.37",
51
+ "typescript": "~4.8.2"
51
52
  }
52
53
  }