monaco-languageclient-examples 2025.8.3 → 2025.8.5

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 (173) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/appPlayground/common.d.ts +2 -2
  3. package/dist/appPlayground/common.d.ts.map +1 -1
  4. package/dist/appPlayground/common.js +2 -3
  5. package/dist/appPlayground/common.js.map +1 -1
  6. package/dist/appPlayground/config.d.ts +4 -2
  7. package/dist/appPlayground/config.d.ts.map +1 -1
  8. package/dist/appPlayground/config.js +65 -63
  9. package/dist/appPlayground/config.js.map +1 -1
  10. package/dist/appPlayground/launcher.js +1 -1
  11. package/dist/appPlayground/launcher.js.map +1 -1
  12. package/dist/appPlayground/main.d.ts.map +1 -1
  13. package/dist/appPlayground/main.js +5 -4
  14. package/dist/appPlayground/main.js.map +1 -1
  15. package/dist/appPlayground/reactLauncher.js +1 -1
  16. package/dist/appPlayground/reactLauncher.js.map +1 -1
  17. package/dist/appPlayground/reactMain.d.ts.map +1 -1
  18. package/dist/appPlayground/reactMain.js +2 -3
  19. package/dist/appPlayground/reactMain.js.map +1 -1
  20. package/dist/bare/client.d.ts.map +1 -1
  21. package/dist/bare/client.js +12 -15
  22. package/dist/bare/client.js.map +1 -1
  23. package/dist/browser/main.d.ts +1 -0
  24. package/dist/browser/main.d.ts.map +1 -1
  25. package/dist/browser/main.js +29 -27
  26. package/dist/browser/main.js.map +1 -1
  27. package/dist/clangd/client/config.d.ts +10 -3
  28. package/dist/clangd/client/config.d.ts.map +1 -1
  29. package/dist/clangd/client/config.js +85 -85
  30. package/dist/clangd/client/config.js.map +1 -1
  31. package/dist/clangd/client/main.d.ts.map +1 -1
  32. package/dist/clangd/client/main.js +12 -9
  33. package/dist/clangd/client/main.js.map +1 -1
  34. package/dist/common/client/extendedClient.d.ts +9 -0
  35. package/dist/common/client/extendedClient.d.ts.map +1 -0
  36. package/dist/common/client/extendedClient.js +97 -0
  37. package/dist/common/client/extendedClient.js.map +1 -0
  38. package/dist/common/client/utils.d.ts +8 -1
  39. package/dist/common/client/utils.d.ts.map +1 -1
  40. package/dist/common/client/utils.js +0 -3
  41. package/dist/common/client/utils.js.map +1 -1
  42. package/dist/debugger/client/debugger.d.ts +1 -1
  43. package/dist/debugger/client/debugger.d.ts.map +1 -1
  44. package/dist/eclipse.jdt.ls/client/main.d.ts +1 -1
  45. package/dist/eclipse.jdt.ls/client/main.d.ts.map +1 -1
  46. package/dist/eclipse.jdt.ls/client/main.js +4 -74
  47. package/dist/eclipse.jdt.ls/client/main.js.map +1 -1
  48. package/dist/eclipse.jdt.ls/config.d.ts +2 -5
  49. package/dist/eclipse.jdt.ls/config.d.ts.map +1 -1
  50. package/dist/eclipse.jdt.ls/config.js +2 -1
  51. package/dist/eclipse.jdt.ls/config.js.map +1 -1
  52. package/dist/groovy/client/main.d.ts +1 -1
  53. package/dist/groovy/client/main.d.ts.map +1 -1
  54. package/dist/groovy/client/main.js +4 -63
  55. package/dist/groovy/client/main.js.map +1 -1
  56. package/dist/groovy/config.d.ts +2 -5
  57. package/dist/groovy/config.d.ts.map +1 -1
  58. package/dist/groovy/config.js +2 -1
  59. package/dist/groovy/config.js.map +1 -1
  60. package/dist/json/client/client.d.ts +3 -0
  61. package/dist/json/client/client.d.ts.map +1 -0
  62. package/dist/json/client/client.js +13 -0
  63. package/dist/json/client/client.js.map +1 -0
  64. package/dist/json/client/config.d.ts +3 -0
  65. package/dist/json/client/config.d.ts.map +1 -0
  66. package/dist/json/client/config.js +11 -0
  67. package/dist/json/client/config.js.map +1 -0
  68. package/dist/json/server/main.js.map +1 -1
  69. package/dist/langium/langium-dsl/config/extendedConfig.d.ts +2 -7
  70. package/dist/langium/langium-dsl/config/extendedConfig.d.ts.map +1 -1
  71. package/dist/langium/langium-dsl/config/extendedConfig.js +103 -49
  72. package/dist/langium/langium-dsl/config/extendedConfig.js.map +1 -1
  73. package/dist/langium/langium-dsl/config/langium.configuration.json +10 -40
  74. package/dist/langium/langium-dsl/config/langium.tmLanguage.json +1 -1
  75. package/dist/langium/langium-dsl/main.d.ts +2 -0
  76. package/dist/langium/langium-dsl/main.d.ts.map +1 -0
  77. package/dist/langium/langium-dsl/main.js +26 -0
  78. package/dist/langium/langium-dsl/main.js.map +1 -0
  79. package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts +4 -4
  80. package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts.map +1 -1
  81. package/dist/langium/statemachine/config/wrapperStatemachineConfig.js +40 -41
  82. package/dist/langium/statemachine/config/wrapperStatemachineConfig.js.map +1 -1
  83. package/dist/langium/statemachine/launcher.js +1 -1
  84. package/dist/langium/statemachine/launcher.js.map +1 -1
  85. package/dist/langium/statemachine/main-react.d.ts.map +1 -1
  86. package/dist/langium/statemachine/main-react.js +7 -3
  87. package/dist/langium/statemachine/main-react.js.map +1 -1
  88. package/dist/langium/statemachine/main.d.ts.map +1 -1
  89. package/dist/langium/statemachine/main.js +38 -27
  90. package/dist/langium/statemachine/main.js.map +1 -1
  91. package/dist/multi/config.d.ts +1 -1
  92. package/dist/multi/config.d.ts.map +1 -1
  93. package/dist/multi/config.js +0 -1
  94. package/dist/multi/config.js.map +1 -1
  95. package/dist/multi/twoLanguageClients.d.ts.map +1 -1
  96. package/dist/multi/twoLanguageClients.js +45 -49
  97. package/dist/multi/twoLanguageClients.js.map +1 -1
  98. package/dist/node.d.ts +0 -3
  99. package/dist/node.d.ts.map +1 -1
  100. package/dist/node.js +0 -3
  101. package/dist/node.js.map +1 -1
  102. package/dist/python/client/config.d.ts +7 -3
  103. package/dist/python/client/config.d.ts.map +1 -1
  104. package/dist/python/client/config.js +93 -97
  105. package/dist/python/client/config.js.map +1 -1
  106. package/dist/python/client/main.d.ts.map +1 -1
  107. package/dist/python/client/main.js +16 -10
  108. package/dist/python/client/main.js.map +1 -1
  109. package/dist/python/client/reactPython.d.ts.map +1 -1
  110. package/dist/python/client/reactPython.js +13 -9
  111. package/dist/python/client/reactPython.js.map +1 -1
  112. package/dist/ts/wrapperTs.d.ts.map +1 -1
  113. package/dist/ts/wrapperTs.js +50 -45
  114. package/dist/ts/wrapperTs.js.map +1 -1
  115. package/ghp_langium_extended.html +3 -3
  116. package/index.html +1 -1
  117. package/json.html +1 -1
  118. package/langium_extended.html +4 -6
  119. package/package.json +10 -11
  120. package/src/appPlayground/common.ts +3 -3
  121. package/src/appPlayground/config.ts +69 -65
  122. package/src/appPlayground/launcher.ts +2 -1
  123. package/src/appPlayground/main.ts +8 -5
  124. package/src/appPlayground/reactLauncher.ts +2 -1
  125. package/src/appPlayground/reactMain.tsx +4 -4
  126. package/src/bare/client.ts +15 -16
  127. package/src/browser/main.ts +30 -27
  128. package/src/clangd/client/config.ts +97 -87
  129. package/src/clangd/client/main.ts +14 -10
  130. package/src/common/client/extendedClient.ts +111 -0
  131. package/src/common/client/utils.ts +7 -2
  132. package/src/debugger/client/debugger.ts +1 -1
  133. package/src/eclipse.jdt.ls/client/main.ts +4 -78
  134. package/src/eclipse.jdt.ls/config.ts +6 -2
  135. package/src/groovy/client/main.ts +4 -65
  136. package/src/groovy/config.ts +6 -2
  137. package/src/json/client/client.ts +14 -0
  138. package/src/json/client/config.ts +13 -0
  139. package/src/json/server/main.ts +1 -1
  140. package/src/langium/langium-dsl/config/extendedConfig.ts +117 -54
  141. package/src/langium/langium-dsl/config/langium.configuration.json +128 -158
  142. package/src/langium/langium-dsl/config/langium.tmLanguage.json +271 -271
  143. package/src/langium/langium-dsl/main.ts +31 -0
  144. package/src/langium/statemachine/config/wrapperStatemachineConfig.ts +48 -45
  145. package/src/langium/statemachine/launcher.ts +1 -1
  146. package/src/langium/statemachine/main-react.tsx +10 -4
  147. package/src/langium/statemachine/main.ts +43 -27
  148. package/src/multi/config.ts +3 -3
  149. package/src/multi/twoLanguageClients.ts +48 -52
  150. package/src/node.ts +0 -3
  151. package/src/python/client/config.ts +101 -99
  152. package/src/python/client/main.ts +20 -11
  153. package/src/python/client/reactPython.tsx +17 -10
  154. package/src/ts/wrapperTs.ts +52 -45
  155. package/two_langauge_clients.html +0 -1
  156. package/vite.production.base.ts +0 -1
  157. package/dist/json/client/wrapperWs.d.ts +0 -5
  158. package/dist/json/client/wrapperWs.d.ts.map +0 -1
  159. package/dist/json/client/wrapperWs.js +0 -87
  160. package/dist/json/client/wrapperWs.js.map +0 -1
  161. package/dist/langium/langium-dsl/config/classicConfig.d.ts +0 -7
  162. package/dist/langium/langium-dsl/config/classicConfig.d.ts.map +0 -1
  163. package/dist/langium/langium-dsl/config/classicConfig.js +0 -66
  164. package/dist/langium/langium-dsl/config/classicConfig.js.map +0 -1
  165. package/dist/langium/langium-dsl/wrapperLangium.d.ts +0 -2
  166. package/dist/langium/langium-dsl/wrapperLangium.d.ts.map +0 -1
  167. package/dist/langium/langium-dsl/wrapperLangium.js +0 -79
  168. package/dist/langium/langium-dsl/wrapperLangium.js.map +0 -1
  169. package/ghp_langium_classic.html +0 -26
  170. package/langium_classic.html +0 -26
  171. package/src/json/client/wrapperWs.ts +0 -90
  172. package/src/langium/langium-dsl/config/classicConfig.ts +0 -72
  173. package/src/langium/langium-dsl/wrapperLangium.ts +0 -85
@@ -21,13 +21,14 @@ import getTestingServiceOverride from '@codingame/monaco-vscode-testing-service-
21
21
  import getBannerServiceOverride from '@codingame/monaco-vscode-view-banner-service-override';
22
22
  import getStatusBarServiceOverride from '@codingame/monaco-vscode-view-status-bar-service-override';
23
23
  import getTitleBarServiceOverride from '@codingame/monaco-vscode-view-title-bar-service-override';
24
- import type { WrapperConfig } from 'monaco-editor-wrapper';
25
- import { defaultHtmlAugmentationInstructions, defaultViewsInit } from 'monaco-editor-wrapper/vscode/services';
26
- import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
27
- import { MonacoLanguageClient } from 'monaco-languageclient';
28
- import { createUrl } from 'monaco-languageclient/tools';
29
- import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services';
24
+ import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
25
+ import { createUrl } from 'monaco-languageclient/common';
26
+ import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
27
+ import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscodeApiLocales';
28
+ import { defaultHtmlAugmentationInstructions, defaultViewsInit, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
29
+ import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
30
30
  import * as vscode from 'vscode';
31
+ import type { BaseLanguageClient } from 'vscode-languageclient/browser.js';
31
32
  import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc';
32
33
  import badPyCode from '../../../resources/python/bad.py?raw';
33
34
  import helloPyCode from '../../../resources/python/hello.py?raw';
@@ -67,7 +68,7 @@ export const createDefaultConfigParams = (homeDir: string, htmlContainer?: HTMLE
67
68
  fileSystemProvider.registerFile(new RegisteredMemoryFile(files.get('hello.py')!.uri, helloPyCode));
68
69
  fileSystemProvider.registerFile(new RegisteredMemoryFile(files.get('hello2.py')!.uri, hello2PyCode));
69
70
  fileSystemProvider.registerFile(new RegisteredMemoryFile(files.get('bad.py')!.uri, badPyCode));
70
- fileSystemProvider.registerFile(new RegisteredMemoryFile(configParams.workspaceFile, createDefaultWorkspaceContent(configParams.workspaceRoot)));
71
+ fileSystemProvider.registerFile(new RegisteredMemoryFile(configParams.workspaceFile, createDefaultWorkspaceContent(workspaceRoot)));
71
72
  fileSystemProvider.registerFile(createDebugLaunchConfigFile(workspaceRoot, configParams.languageId));
72
73
  registerFileSystemOverlay(1, fileSystemProvider);
73
74
 
@@ -75,11 +76,13 @@ export const createDefaultConfigParams = (homeDir: string, htmlContainer?: HTMLE
75
76
  };
76
77
 
77
78
  export type PythonAppConfig = {
78
- wrapperConfig: WrapperConfig;
79
+ languageClientConfig: LanguageClientConfig;
80
+ vscodeApiConfig: MonacoVscodeApiConfig;
81
+ editorAppConfig: EditorAppConfig;
79
82
  configParams: ConfigParams;
80
83
  }
81
84
 
82
- export const createWrapperConfig = (): PythonAppConfig => {
85
+ export const createPythonAppConfig = (): PythonAppConfig => {
83
86
  const configParams = createDefaultConfigParams('/home/mlc', document.body);
84
87
 
85
88
  const url = createUrl({
@@ -96,101 +99,65 @@ export const createWrapperConfig = (): PythonAppConfig => {
96
99
  const reader = new WebSocketMessageReader(iWebSocket);
97
100
  const writer = new WebSocketMessageWriter(iWebSocket);
98
101
 
99
- const wrapperConfig: WrapperConfig = {
102
+ const vscodeApiConfig: MonacoVscodeApiConfig = {
100
103
  $type: 'extended',
101
104
  htmlContainer: configParams.htmlContainer,
102
105
  logLevel: LogLevel.Debug,
103
- languageClientConfigs: {
104
- configs: {
105
- python: {
106
- name: 'Python Language Server Example',
107
- connection: {
108
- options: {
109
- $type: 'WebSocketDirect',
110
- webSocket: webSocket,
111
- startOptions: {
112
- onCall: (languageClient?: MonacoLanguageClient) => {
113
- setTimeout(() => {
114
- ['pyright.restartserver', 'pyright.organizeimports'].forEach((cmdName) => {
115
- vscode.commands.registerCommand(cmdName, (...args: unknown[]) => {
116
- languageClient?.sendRequest('workspace/executeCommand', { command: cmdName, arguments: args });
117
- });
118
- });
119
- }, 250);
120
- },
121
- reportStatus: true,
122
- }
123
- },
124
- messageTransports: { reader, writer }
125
- },
126
- clientOptions: {
127
- documentSelector: [configParams.languageId],
128
- workspaceFolder: {
129
- index: 0,
130
- name: configParams.workspaceRoot,
131
- uri: vscode.Uri.parse(configParams.workspaceRoot)
132
- },
133
- }
134
- }
135
- }
106
+ serviceOverrides: {
107
+ ...getKeybindingsServiceOverride(),
108
+ ...getLifecycleServiceOverride(),
109
+ ...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
110
+ ...getBannerServiceOverride(),
111
+ ...getStatusBarServiceOverride(),
112
+ ...getTitleBarServiceOverride(),
113
+ ...getExplorerServiceOverride(),
114
+ ...getRemoteAgentServiceOverride(),
115
+ ...getEnvironmentServiceOverride(),
116
+ ...getSecretStorageServiceOverride(),
117
+ ...getStorageServiceOverride(),
118
+ ...getSearchServiceOverride(),
119
+ ...getDebugServiceOverride(),
120
+ ...getTestingServiceOverride(),
121
+ ...getPreferencesServiceOverride()
136
122
  },
137
- vscodeApiConfig: {
138
- serviceOverrides: {
139
- ...getKeybindingsServiceOverride(),
140
- ...getLifecycleServiceOverride(),
141
- ...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
142
- ...getBannerServiceOverride(),
143
- ...getStatusBarServiceOverride(),
144
- ...getTitleBarServiceOverride(),
145
- ...getExplorerServiceOverride(),
146
- ...getRemoteAgentServiceOverride(),
147
- ...getEnvironmentServiceOverride(),
148
- ...getSecretStorageServiceOverride(),
149
- ...getStorageServiceOverride(),
150
- ...getSearchServiceOverride(),
151
- ...getDebugServiceOverride(),
152
- ...getTestingServiceOverride(),
153
- ...getPreferencesServiceOverride()
154
- },
155
- viewsConfig: {
156
- viewServiceType: 'ViewsService',
157
- htmlAugmentationInstructions: defaultHtmlAugmentationInstructions,
158
- viewsInitFunc: defaultViewsInit
159
- },
160
- userConfiguration: {
161
- json: JSON.stringify({
162
- 'workbench.colorTheme': 'Default Dark Modern',
163
- 'editor.guides.bracketPairsHorizontal': 'active',
164
- 'editor.wordBasedSuggestions': 'off',
165
- 'editor.experimental.asyncTokenization': true,
166
- 'debug.toolBarLocation': 'docked'
167
- })
123
+ viewsConfig: {
124
+ viewServiceType: 'ViewsService',
125
+ htmlAugmentationInstructions: defaultHtmlAugmentationInstructions,
126
+ viewsInitFunc: defaultViewsInit
127
+ },
128
+ userConfiguration: {
129
+ json: JSON.stringify({
130
+ 'workbench.colorTheme': 'Default Dark Modern',
131
+ 'editor.guides.bracketPairsHorizontal': 'active',
132
+ 'editor.wordBasedSuggestions': 'off',
133
+ 'editor.experimental.asyncTokenization': true,
134
+ 'debug.toolBarLocation': 'docked'
135
+ })
136
+ },
137
+ workspaceConfig: {
138
+ enableWorkspaceTrust: true,
139
+ windowIndicator: {
140
+ label: 'mlc-python-example',
141
+ tooltip: '',
142
+ command: ''
168
143
  },
169
- workspaceConfig: {
170
- enableWorkspaceTrust: true,
171
- windowIndicator: {
172
- label: 'mlc-python-example',
173
- tooltip: '',
174
- command: ''
175
- },
176
- workspaceProvider: {
177
- trusted: true,
178
- async open() {
179
- window.open(window.location.href);
180
- return true;
181
- },
182
- workspace: {
183
- workspaceUri: configParams.workspaceFile
184
- }
185
- },
186
- configurationDefaults: {
187
- 'window.title': 'mlc-python-example${separator}${dirty}${activeEditorShort}'
144
+ workspaceProvider: {
145
+ trusted: true,
146
+ async open() {
147
+ window.open(window.location.href);
148
+ return true;
188
149
  },
189
- productConfiguration: {
190
- nameShort: 'mlc-python-example',
191
- nameLong: 'mlc-python-example'
150
+ workspace: {
151
+ workspaceUri: configParams.workspaceFile
192
152
  }
193
153
  },
154
+ configurationDefaults: {
155
+ 'window.title': 'mlc-python-example${separator}${dirty}${activeEditorShort}'
156
+ },
157
+ productConfiguration: {
158
+ nameShort: 'mlc-python-example',
159
+ nameLong: 'mlc-python-example'
160
+ }
194
161
  },
195
162
  extensions: [
196
163
  {
@@ -205,13 +172,48 @@ export const createWrapperConfig = (): PythonAppConfig => {
205
172
  },
206
173
  provideDebuggerExtensionConfig(configParams)
207
174
  ],
208
- editorAppConfig: {
209
- monacoWorkerFactory: configureDefaultWorkerFactory
175
+ monacoWorkerFactory: configureDefaultWorkerFactory
176
+ };
177
+
178
+ const languageClientConfig: LanguageClientConfig = {
179
+ name: 'Python Language Server Example',
180
+ connection: {
181
+ options: {
182
+ $type: 'WebSocketDirect',
183
+ webSocket: webSocket,
184
+ startOptions: {
185
+ onCall: (languageClient?: BaseLanguageClient) => {
186
+ setTimeout(() => {
187
+ ['pyright.restartserver', 'pyright.organizeimports'].forEach((cmdName) => {
188
+ vscode.commands.registerCommand(cmdName, (...args: unknown[]) => {
189
+ languageClient?.sendRequest('workspace/executeCommand', { command: cmdName, arguments: args });
190
+ });
191
+ });
192
+ }, 250);
193
+ },
194
+ reportStatus: true,
195
+ }
196
+ },
197
+ messageTransports: { reader, writer }
198
+ },
199
+ clientOptions: {
200
+ documentSelector: [configParams.languageId],
201
+ workspaceFolder: {
202
+ index: 0,
203
+ name: configParams.workspaceRoot,
204
+ uri: vscode.Uri.parse(configParams.workspaceRoot)
205
+ },
210
206
  }
211
207
  };
212
208
 
209
+ const editorAppConfig: EditorAppConfig = {
210
+ $type: vscodeApiConfig.$type
211
+ };
212
+
213
213
  return {
214
- wrapperConfig,
214
+ vscodeApiConfig,
215
+ languageClientConfig,
216
+ editorAppConfig,
215
217
  configParams: configParams
216
218
  };
217
219
  };
@@ -3,32 +3,41 @@
3
3
  * Licensed under the MIT License. See LICENSE in the package root for license information.
4
4
  * ------------------------------------------------------------------------------------------ */
5
5
 
6
- import * as vscode from 'vscode';
7
6
  import { type RegisterLocalProcessExtensionResult } from '@codingame/monaco-vscode-api/extensions';
8
- import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
9
- import { createWrapperConfig } from './config.js';
7
+ import { EditorApp } from 'monaco-languageclient/editorApp';
8
+ import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
9
+ import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
10
+ import * as vscode from 'vscode';
10
11
  import { configureDebugging } from '../../debugger/client/debugger.js';
12
+ import { createPythonAppConfig } from './config.js';
11
13
 
12
14
  export const runPythonWrapper = async () => {
13
- const appConfig = createWrapperConfig();
14
- const wrapper = new MonacoEditorLanguageClientWrapper();
15
+ const appConfig = createPythonAppConfig();
16
+
17
+ // perform global init
18
+ const apiWrapper = new MonacoVscodeApiWrapper(appConfig.vscodeApiConfig);
19
+ await apiWrapper.init();
20
+
21
+ const lcWrapper = new LanguageClientWrapper(appConfig.languageClientConfig);
15
22
 
16
- if (wrapper.isStarted()) {
23
+ const editorApp = new EditorApp(appConfig.editorAppConfig);
24
+
25
+ if (editorApp.isStarted()) {
17
26
  console.warn('Editor was already started!');
18
27
  } else {
19
- await wrapper.init(appConfig.wrapperConfig);
20
-
21
- const result = wrapper.getExtensionRegisterResult('mlc-python-example') as RegisterLocalProcessExtensionResult;
28
+ const result = apiWrapper.getExtensionRegisterResult('mlc-python-example') as RegisterLocalProcessExtensionResult;
22
29
  result.setAsDefaultApi();
23
30
 
24
- const initResult = wrapper.getExtensionRegisterResult('debugger-py-client') as RegisterLocalProcessExtensionResult | undefined;
31
+ const initResult = apiWrapper.getExtensionRegisterResult('debugger-py-client') as RegisterLocalProcessExtensionResult | undefined;
25
32
  if (initResult !== undefined) {
26
33
  configureDebugging(await initResult.getApi(), appConfig.configParams);
27
34
  }
28
35
 
36
+ await lcWrapper.start();
37
+
29
38
  await vscode.commands.executeCommand('workbench.view.explorer');
30
39
  await vscode.window.showTextDocument(appConfig.configParams.files.get('hello2.py')!.uri);
31
40
 
32
- await wrapper.start();
41
+ await editorApp.start(appConfig.vscodeApiConfig.htmlContainer!);
33
42
  }
34
43
  };
@@ -3,23 +3,23 @@
3
3
  * Licensed under the MIT License. See LICENSE in the package root for license information.
4
4
  * ------------------------------------------------------------------------------------------ */
5
5
 
6
- import * as vscode from 'vscode';
7
6
  import { type RegisterLocalProcessExtensionResult } from '@codingame/monaco-vscode-api/extensions';
7
+ import { MonacoEditorReactComp } from '@typefox/monaco-editor-react';
8
+ import type { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
8
9
  import React from 'react';
9
10
  import ReactDOM from 'react-dom/client';
10
- import { MonacoEditorReactComp } from '@typefox/monaco-editor-react';
11
- import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
12
- import { createWrapperConfig } from './config.js';
11
+ import * as vscode from 'vscode';
13
12
  import { configureDebugging } from '../../debugger/client/debugger.js';
13
+ import { createPythonAppConfig } from './config.js';
14
14
 
15
15
  export const runPythonReact = async () => {
16
- const appConfig = createWrapperConfig();
16
+ const appConfig = createPythonAppConfig();
17
17
 
18
- const onLoad = async (wrapper: MonacoEditorLanguageClientWrapper) => {
19
- const result = wrapper.getExtensionRegisterResult('mlc-python-example') as RegisterLocalProcessExtensionResult;
18
+ const onVscodeApiInitDone = async (apiWrapper: MonacoVscodeApiWrapper) => {
19
+ const result = apiWrapper.getExtensionRegisterResult('mlc-python-example') as RegisterLocalProcessExtensionResult;
20
20
  result.setAsDefaultApi();
21
21
 
22
- const initResult = wrapper.getExtensionRegisterResult('debugger-py-client') as RegisterLocalProcessExtensionResult | undefined;
22
+ const initResult = apiWrapper.getExtensionRegisterResult('debugger-py-client') as RegisterLocalProcessExtensionResult | undefined;
23
23
  if (initResult !== undefined) {
24
24
  configureDebugging(await initResult.getApi(), appConfig.configParams);
25
25
  }
@@ -30,13 +30,20 @@ export const runPythonReact = async () => {
30
30
 
31
31
  const root = ReactDOM.createRoot(document.getElementById('react-root')!);
32
32
 
33
+ const languageClientConfigs = {
34
+ configs: {
35
+ langium: appConfig.languageClientConfig
36
+ }
37
+ };
33
38
  const App = () => {
34
39
  return (
35
40
  <div style={{ 'backgroundColor': '#1f1f1f' }} >
36
41
  <MonacoEditorReactComp
37
- wrapperConfig={appConfig.wrapperConfig}
42
+ vscodeApiConfig={appConfig.vscodeApiConfig}
43
+ editorAppConfig={appConfig.editorAppConfig}
44
+ languageClientConfigs={languageClientConfigs}
38
45
  style={{ 'height': '100%' }}
39
- onLoad={onLoad}
46
+ onVscodeApiInitDone={onVscodeApiInitDone}
40
47
  onError={(e) => {
41
48
  console.error(e);
42
49
  }} />
@@ -3,14 +3,15 @@
3
3
  * Licensed under the MIT License. See LICENSE in the package root for license information.
4
4
  * ------------------------------------------------------------------------------------------ */
5
5
 
6
- import * as vscode from 'vscode';
7
- import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
6
+ import { LogLevel } from '@codingame/monaco-vscode-api';
8
7
  import '@codingame/monaco-vscode-javascript-default-extension';
8
+ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
9
9
  import '@codingame/monaco-vscode-typescript-basics-default-extension';
10
10
  import '@codingame/monaco-vscode-typescript-language-features-default-extension';
11
- import { LogLevel } from '@codingame/monaco-vscode-api';
12
- import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
13
- import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
11
+ import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp';
12
+ import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
13
+ import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
14
+ import * as vscode from 'vscode';
14
15
  import { disableElement } from '../common/client/utils.js';
15
16
 
16
17
  export const runTsWrapper = async () => {
@@ -24,49 +25,55 @@ export const runTsWrapper = async () => {
24
25
  return "Goodbye";
25
26
  };`;
26
27
 
27
- const wrapperConfig: WrapperConfig = {
28
+ const htmlContainer = document.getElementById('monaco-editor-root')!;
29
+ const vscodeApiConfig: MonacoVscodeApiConfig = {
28
30
  $type: 'extended',
29
- htmlContainer: document.getElementById('monaco-editor-root')!,
31
+ htmlContainer,
30
32
  logLevel: LogLevel.Debug,
31
- vscodeApiConfig: {
32
- serviceOverrides: {
33
- ...getKeybindingsServiceOverride()
34
- },
33
+ serviceOverrides: {
34
+ ...getKeybindingsServiceOverride()
35
+ },
36
+ advanced: {
35
37
  enableExtHostWorker: true,
36
- userConfiguration: {
37
- json: JSON.stringify({
38
- 'workbench.colorTheme': 'Default Dark Modern',
39
- 'typescript.tsserver.web.projectWideIntellisense.enabled': true,
40
- 'typescript.tsserver.web.projectWideIntellisense.suppressSemanticErrors': false,
41
- 'diffEditor.renderSideBySide': false,
42
- 'editor.lightbulb.enabled': 'on',
43
- 'editor.glyphMargin': true,
44
- 'editor.guides.bracketPairsHorizontal': true,
45
- 'editor.experimental.asyncTokenization': true
46
- })
47
- }
48
38
  },
49
- editorAppConfig: {
50
- codeResources: {
51
- modified: {
52
- text: code,
53
- uri: codeUri
54
- },
55
- original: {
56
- text: codeOriginal,
57
- uri: codeOriginalUri,
58
- }
39
+ userConfiguration: {
40
+ json: JSON.stringify({
41
+ 'workbench.colorTheme': 'Default Dark Modern',
42
+ 'typescript.tsserver.web.projectWideIntellisense.enabled': true,
43
+ 'typescript.tsserver.web.projectWideIntellisense.suppressSemanticErrors': false,
44
+ 'diffEditor.renderSideBySide': false,
45
+ 'editor.lightbulb.enabled': 'on',
46
+ 'editor.glyphMargin': true,
47
+ 'editor.guides.bracketPairsHorizontal': true,
48
+ 'editor.experimental.asyncTokenization': true
49
+ })
50
+ },
51
+ monacoWorkerFactory: configureDefaultWorkerFactory
52
+ };
53
+
54
+ const editorAppConfig: EditorAppConfig = {
55
+ $type: vscodeApiConfig.$type,
56
+ codeResources: {
57
+ modified: {
58
+ text: code,
59
+ uri: codeUri
59
60
  },
60
- monacoWorkerFactory: configureDefaultWorkerFactory
61
+ original: {
62
+ text: codeOriginal,
63
+ uri: codeOriginalUri,
64
+ }
61
65
  }
62
66
  };
63
67
 
64
- const wrapper = new MonacoEditorLanguageClientWrapper();
68
+ const apiWrapper = new MonacoVscodeApiWrapper(vscodeApiConfig);
69
+ await apiWrapper.init();
70
+
71
+ const editorApp = new EditorApp(editorAppConfig);
65
72
  disableElement('button-swap-code', true);
66
73
 
67
74
  try {
68
75
  document.querySelector('#button-start')?.addEventListener('click', async () => {
69
- await wrapper.initAndStart(wrapperConfig);
76
+ await editorApp.start(htmlContainer);
70
77
 
71
78
  vscode.commands.getCommands().then((x) => {
72
79
  console.log(`Found ${x.length} commands`);
@@ -74,13 +81,13 @@ export const runTsWrapper = async () => {
74
81
  console.log(`Found command: ${finding}`);
75
82
  });
76
83
 
77
- wrapper.getEditor()?.focus();
84
+ editorApp.getEditor()?.focus();
78
85
  await vscode.commands.executeCommand('actions.find');
79
86
  });
80
87
  document.querySelector('#button-swap-code')?.addEventListener('click', () => {
81
- const codeResources = wrapper.getEditorApp()?.getConfig().codeResources;
88
+ const codeResources = editorApp.getConfig().codeResources;
82
89
  if (codeResources?.modified?.uri === codeUri) {
83
- wrapper.updateCodeResources({
90
+ editorApp.updateCodeResources({
84
91
  modified: {
85
92
  text: codeOriginal,
86
93
  uri: codeOriginalUri
@@ -91,7 +98,7 @@ export const runTsWrapper = async () => {
91
98
  }
92
99
  });
93
100
  } else {
94
- wrapper.updateCodeResources({
101
+ editorApp.updateCodeResources({
95
102
  modified: {
96
103
  text: code,
97
104
  uri: codeUri
@@ -105,14 +112,14 @@ export const runTsWrapper = async () => {
105
112
  });
106
113
  document.querySelector('#button-diff')?.addEventListener('click', async () => {
107
114
  // ensure it is boolean value and not undefined
108
- const useDiffEditor = wrapperConfig.editorAppConfig!.useDiffEditor ?? false;
109
- wrapperConfig.editorAppConfig!.useDiffEditor = !useDiffEditor;
110
- disableElement('button-swap-code', !wrapperConfig.editorAppConfig!.useDiffEditor);
115
+ const useDiffEditor = editorAppConfig.useDiffEditor ?? false;
116
+ editorAppConfig.useDiffEditor = !useDiffEditor;
117
+ disableElement('button-swap-code', !editorAppConfig.useDiffEditor);
111
118
 
112
- await wrapper.initAndStart(wrapperConfig);
119
+ await editorApp.start(htmlContainer);
113
120
  });
114
121
  document.querySelector('#button-dispose')?.addEventListener('click', async () => {
115
- await wrapper.dispose();
122
+ await editorApp.dispose();
116
123
  });
117
124
  } catch (e) {
118
125
  console.error(e);
@@ -15,7 +15,6 @@
15
15
  <button type="button" id="button-start">Start</button>
16
16
  <button type="button" id="button-dispose">Dispose</button>
17
17
  <button type="button" id="button-flip">Flip Content</button>
18
- <label>External Lanuguage Clients:</label><input type="checkbox" id="checkbox-extlc" />
19
18
  </div>
20
19
  <div id="monaco-editor-root" style="width:800px;height:600px;border:1px solid grey"></div>
21
20
  <script type="module">
@@ -10,7 +10,6 @@ export const buildBaseProductionConfig: () => UserConfig = () => {
10
10
  rollupOptions: {
11
11
  input: {
12
12
  index: path.resolve(__dirname, 'index.html'),
13
- langiumClassic: path.resolve(__dirname, 'ghp_langium_classic.html'),
14
13
  langiumExtended: path.resolve(__dirname, 'ghp_langium_extended.html'),
15
14
  statemachine: path.resolve(__dirname, 'ghp_statemachine.html'),
16
15
  clangd: path.resolve(__dirname, 'ghp_clangd.html'),
@@ -1,5 +0,0 @@
1
- import '@codingame/monaco-vscode-json-default-extension';
2
- import { type WrapperConfig } from 'monaco-editor-wrapper';
3
- export declare const buildJsonClientUserConfig: (htmlContainer?: HTMLElement) => WrapperConfig;
4
- export declare const runJsonWrapper: () => void;
5
- //# sourceMappingURL=wrapperWs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapperWs.d.ts","sourceRoot":"","sources":["../../../src/json/client/wrapperWs.ts"],"names":[],"mappings":"AAOA,OAAO,iDAAiD,CAAC;AAEzD,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQ9F,eAAO,MAAM,yBAAyB,GAAI,gBAAgB,WAAW,KAAG,aAwDvE,CAAC;AAEF,eAAO,MAAM,cAAc,YAc1B,CAAC"}
@@ -1,87 +0,0 @@
1
- /* --------------------------------------------------------------------------------------------
2
- * Copyright (c) 2024 TypeFox and others.
3
- * Licensed under the MIT License. See LICENSE in the package root for license information.
4
- * ------------------------------------------------------------------------------------------ */
5
- import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
6
- // this is required syntax highlighting
7
- import '@codingame/monaco-vscode-json-default-extension';
8
- import { LogLevel } from '@codingame/monaco-vscode-api';
9
- import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
10
- import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
11
- const text = `{
12
- "$schema": "http://json.schemastore.org/coffeelint",
13
- "line_endings": {"value": "unix"}
14
- }`;
15
- export const buildJsonClientUserConfig = (htmlContainer) => {
16
- return {
17
- $type: 'extended',
18
- htmlContainer,
19
- logLevel: LogLevel.Debug,
20
- vscodeApiConfig: {
21
- serviceOverrides: {
22
- ...getKeybindingsServiceOverride(),
23
- },
24
- userConfiguration: {
25
- json: JSON.stringify({
26
- 'workbench.colorTheme': 'Default Dark Modern',
27
- 'editor.guides.bracketPairsHorizontal': 'active',
28
- 'editor.lightbulb.enabled': 'On',
29
- 'editor.wordBasedSuggestions': 'off',
30
- 'editor.experimental.asyncTokenization': true
31
- })
32
- }
33
- },
34
- editorAppConfig: {
35
- codeResources: {
36
- modified: {
37
- text,
38
- uri: '/workspace/test.json',
39
- }
40
- },
41
- monacoWorkerFactory: configureDefaultWorkerFactory
42
- },
43
- languageClientConfigs: {
44
- configs: {
45
- json: {
46
- clientOptions: {
47
- documentSelector: ['json']
48
- },
49
- connection: {
50
- options: {
51
- $type: 'WebSocketUrl',
52
- url: 'ws://localhost:30000/sampleServer',
53
- startOptions: {
54
- onCall: () => {
55
- console.log('Connected to socket.');
56
- },
57
- reportStatus: true
58
- },
59
- stopOptions: {
60
- onCall: () => {
61
- console.log('Disconnected from socket.');
62
- },
63
- reportStatus: true
64
- }
65
- }
66
- }
67
- }
68
- }
69
- }
70
- };
71
- };
72
- export const runJsonWrapper = () => {
73
- const wrapper = new MonacoEditorLanguageClientWrapper();
74
- try {
75
- document.querySelector('#button-start')?.addEventListener('click', async () => {
76
- const config = buildJsonClientUserConfig(document.getElementById('monaco-editor-root'));
77
- await wrapper.initAndStart(config);
78
- });
79
- document.querySelector('#button-dispose')?.addEventListener('click', async () => {
80
- await wrapper.dispose();
81
- });
82
- }
83
- catch (e) {
84
- console.error(e);
85
- }
86
- };
87
- //# sourceMappingURL=wrapperWs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapperWs.js","sourceRoot":"","sources":["../../../src/json/client/wrapperWs.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,6BAA6B,MAAM,uDAAuD,CAAC;AAClG,uCAAuC;AACvC,OAAO,iDAAiD,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,iCAAiC,EAAsB,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAE5F,MAAM,IAAI,GAAG;;;EAGX,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,aAA2B,EAAiB,EAAE;IACpF,OAAO;QACH,KAAK,EAAE,UAAU;QACjB,aAAa;QACb,QAAQ,EAAE,QAAQ,CAAC,KAAK;QACxB,eAAe,EAAE;YACb,gBAAgB,EAAE;gBACd,GAAG,6BAA6B,EAAE;aACrC;YACD,iBAAiB,EAAE;gBACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,sBAAsB,EAAE,qBAAqB;oBAC7C,sCAAsC,EAAE,QAAQ;oBAChD,0BAA0B,EAAE,IAAI;oBAChC,6BAA6B,EAAE,KAAK;oBACpC,uCAAuC,EAAE,IAAI;iBAChD,CAAC;aACL;SACJ;QACD,eAAe,EAAE;YACb,aAAa,EAAE;gBACX,QAAQ,EAAE;oBACN,IAAI;oBACJ,GAAG,EAAE,sBAAsB;iBAC9B;aACJ;YACD,mBAAmB,EAAE,6BAA6B;SACrD;QACD,qBAAqB,EAAE;YACnB,OAAO,EAAE;gBACL,IAAI,EAAE;oBACF,aAAa,EAAE;wBACX,gBAAgB,EAAE,CAAC,MAAM,CAAC;qBAC7B;oBACD,UAAU,EAAE;wBACR,OAAO,EAAE;4BACL,KAAK,EAAE,cAAc;4BACrB,GAAG,EAAE,mCAAmC;4BACxC,YAAY,EAAE;gCACV,MAAM,EAAE,GAAG,EAAE;oCACT,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gCACxC,CAAC;gCACD,YAAY,EAAE,IAAI;6BACrB;4BACD,WAAW,EAAE;gCACT,MAAM,EAAE,GAAG,EAAE;oCACT,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gCAC7C,CAAC;gCACD,YAAY,EAAE,IAAI;6BACrB;yBACJ;qBACJ;iBACJ;aACJ;SACJ;KACJ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IAC/B,MAAM,OAAO,GAAG,IAAI,iCAAiC,EAAE,CAAC;IAExD,IAAI,CAAC;QACD,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAE,CAAC,CAAC;YACzF,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;AACL,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- import { MessageTransports } from 'vscode-languageclient';
2
- import type { WrapperConfig } from 'monaco-editor-wrapper';
3
- export declare const setupLangiumClientClassic: (params: {
4
- worker: Worker;
5
- messageTransports?: MessageTransports;
6
- }) => Promise<WrapperConfig>;
7
- //# sourceMappingURL=classicConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classicConfig.d.ts","sourceRoot":"","sources":["../../../../src/langium/langium-dsl/config/classicConfig.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,eAAO,MAAM,yBAAyB,GAAU,QAAQ;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACzC,KAAG,OAAO,CAAC,aAAa,CAqDxB,CAAC"}