monaco-languageclient-examples 2025.6.3 → 2025.8.1

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 (176) hide show
  1. package/CHANGELOG.md +3 -2
  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 +3 -2
  5. package/dist/appPlayground/common.js.map +1 -1
  6. package/dist/appPlayground/config.d.ts +2 -4
  7. package/dist/appPlayground/config.d.ts.map +1 -1
  8. package/dist/appPlayground/config.js +63 -65
  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 +4 -5
  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 +3 -2
  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 +15 -12
  22. package/dist/bare/client.js.map +1 -1
  23. package/dist/browser/main.d.ts.map +1 -1
  24. package/dist/browser/main.js +27 -28
  25. package/dist/browser/main.js.map +1 -1
  26. package/dist/clangd/client/config.d.ts +3 -10
  27. package/dist/clangd/client/config.d.ts.map +1 -1
  28. package/dist/clangd/client/config.js +85 -85
  29. package/dist/clangd/client/config.js.map +1 -1
  30. package/dist/clangd/client/main.d.ts.map +1 -1
  31. package/dist/clangd/client/main.js +9 -12
  32. package/dist/clangd/client/main.js.map +1 -1
  33. package/dist/clangd/worker/clangd-server.js.map +1 -1
  34. package/dist/common/client/utils.d.ts +1 -8
  35. package/dist/common/client/utils.d.ts.map +1 -1
  36. package/dist/common/client/utils.js +3 -0
  37. package/dist/common/client/utils.js.map +1 -1
  38. package/dist/debugger/client/debugger.d.ts +1 -1
  39. package/dist/debugger/client/debugger.d.ts.map +1 -1
  40. package/dist/eclipse.jdt.ls/client/main.d.ts +1 -1
  41. package/dist/eclipse.jdt.ls/client/main.d.ts.map +1 -1
  42. package/dist/eclipse.jdt.ls/client/main.js +74 -4
  43. package/dist/eclipse.jdt.ls/client/main.js.map +1 -1
  44. package/dist/eclipse.jdt.ls/config.d.ts +5 -2
  45. package/dist/eclipse.jdt.ls/config.d.ts.map +1 -1
  46. package/dist/eclipse.jdt.ls/config.js +1 -2
  47. package/dist/eclipse.jdt.ls/config.js.map +1 -1
  48. package/dist/groovy/client/main.d.ts +1 -1
  49. package/dist/groovy/client/main.d.ts.map +1 -1
  50. package/dist/groovy/client/main.js +63 -4
  51. package/dist/groovy/client/main.js.map +1 -1
  52. package/dist/groovy/config.d.ts +5 -2
  53. package/dist/groovy/config.d.ts.map +1 -1
  54. package/dist/groovy/config.js +1 -2
  55. package/dist/groovy/config.js.map +1 -1
  56. package/dist/json/client/wrapperWs.d.ts +5 -0
  57. package/dist/json/client/wrapperWs.d.ts.map +1 -0
  58. package/dist/json/client/wrapperWs.js +87 -0
  59. package/dist/json/client/wrapperWs.js.map +1 -0
  60. package/dist/json/server/main.js.map +1 -1
  61. package/dist/langium/langium-dsl/config/classicConfig.d.ts +2 -2
  62. package/dist/langium/langium-dsl/config/classicConfig.d.ts.map +1 -1
  63. package/dist/langium/langium-dsl/config/classicConfig.js +45 -53
  64. package/dist/langium/langium-dsl/config/classicConfig.js.map +1 -1
  65. package/dist/langium/langium-dsl/config/extendedConfig.d.ts +2 -2
  66. package/dist/langium/langium-dsl/config/extendedConfig.d.ts.map +1 -1
  67. package/dist/langium/langium-dsl/config/extendedConfig.js +40 -40
  68. package/dist/langium/langium-dsl/config/extendedConfig.js.map +1 -1
  69. package/dist/langium/langium-dsl/wrapperLangium.d.ts.map +1 -1
  70. package/dist/langium/langium-dsl/wrapperLangium.js +16 -23
  71. package/dist/langium/langium-dsl/wrapperLangium.js.map +1 -1
  72. package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts +4 -4
  73. package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts.map +1 -1
  74. package/dist/langium/statemachine/config/wrapperStatemachineConfig.js +41 -40
  75. package/dist/langium/statemachine/config/wrapperStatemachineConfig.js.map +1 -1
  76. package/dist/langium/statemachine/launcher.js +1 -1
  77. package/dist/langium/statemachine/launcher.js.map +1 -1
  78. package/dist/langium/statemachine/ls/generated/ast.d.ts +127 -22
  79. package/dist/langium/statemachine/ls/generated/ast.d.ts.map +1 -1
  80. package/dist/langium/statemachine/ls/generated/ast.js +112 -97
  81. package/dist/langium/statemachine/ls/generated/ast.js.map +1 -1
  82. package/dist/langium/statemachine/ls/generated/grammar.d.ts +2 -2
  83. package/dist/langium/statemachine/ls/generated/grammar.d.ts.map +1 -1
  84. package/dist/langium/statemachine/ls/generated/grammar.js +43 -41
  85. package/dist/langium/statemachine/ls/generated/grammar.js.map +1 -1
  86. package/dist/langium/statemachine/ls/generated/module.d.ts +3 -3
  87. package/dist/langium/statemachine/ls/generated/module.d.ts.map +1 -1
  88. package/dist/langium/statemachine/ls/generated/module.js +6 -6
  89. package/dist/langium/statemachine/ls/generated/module.js.map +1 -1
  90. package/dist/langium/statemachine/ls/statemachine-module.js +2 -2
  91. package/dist/langium/statemachine/ls/statemachine-module.js.map +1 -1
  92. package/dist/langium/statemachine/main-react.js +3 -2
  93. package/dist/langium/statemachine/main-react.js.map +1 -1
  94. package/dist/langium/statemachine/main.d.ts.map +1 -1
  95. package/dist/langium/statemachine/main.js +27 -38
  96. package/dist/langium/statemachine/main.js.map +1 -1
  97. package/dist/multi/config.d.ts +1 -1
  98. package/dist/multi/config.d.ts.map +1 -1
  99. package/dist/multi/config.js +1 -0
  100. package/dist/multi/config.js.map +1 -1
  101. package/dist/multi/twoLanguageClients.d.ts.map +1 -1
  102. package/dist/multi/twoLanguageClients.js +49 -45
  103. package/dist/multi/twoLanguageClients.js.map +1 -1
  104. package/dist/node.d.ts +3 -0
  105. package/dist/node.d.ts.map +1 -1
  106. package/dist/node.js +3 -3
  107. package/dist/node.js.map +1 -1
  108. package/dist/python/client/config.d.ts +3 -7
  109. package/dist/python/client/config.d.ts.map +1 -1
  110. package/dist/python/client/config.js +97 -93
  111. package/dist/python/client/config.js.map +1 -1
  112. package/dist/python/client/main.d.ts.map +1 -1
  113. package/dist/python/client/main.js +10 -16
  114. package/dist/python/client/main.js.map +1 -1
  115. package/dist/python/client/reactPython.d.ts.map +1 -1
  116. package/dist/python/client/reactPython.js +9 -8
  117. package/dist/python/client/reactPython.js.map +1 -1
  118. package/dist/ts/wrapperTs.d.ts.map +1 -1
  119. package/dist/ts/wrapperTs.js +45 -50
  120. package/dist/ts/wrapperTs.js.map +1 -1
  121. package/json.html +1 -1
  122. package/package.json +45 -44
  123. package/src/appPlayground/common.ts +3 -3
  124. package/src/appPlayground/config.ts +65 -69
  125. package/src/appPlayground/launcher.ts +1 -2
  126. package/src/appPlayground/main.ts +5 -8
  127. package/src/appPlayground/reactLauncher.ts +1 -2
  128. package/src/appPlayground/reactMain.tsx +4 -4
  129. package/src/bare/client.ts +16 -15
  130. package/src/browser/main.ts +27 -29
  131. package/src/clangd/client/config.ts +87 -97
  132. package/src/clangd/client/main.ts +10 -14
  133. package/src/clangd/worker/clangd-server.ts +2 -2
  134. package/src/common/client/utils.ts +2 -7
  135. package/src/debugger/client/debugger.ts +1 -1
  136. package/src/eclipse.jdt.ls/client/main.ts +78 -4
  137. package/src/eclipse.jdt.ls/config.ts +2 -6
  138. package/src/groovy/client/main.ts +65 -4
  139. package/src/groovy/config.ts +2 -6
  140. package/src/json/client/wrapperWs.ts +90 -0
  141. package/src/json/server/main.ts +1 -1
  142. package/src/langium/langium-dsl/config/classicConfig.ts +48 -64
  143. package/src/langium/langium-dsl/config/extendedConfig.ts +42 -49
  144. package/src/langium/langium-dsl/wrapperLangium.ts +15 -25
  145. package/src/langium/statemachine/config/wrapperStatemachineConfig.ts +45 -48
  146. package/src/langium/statemachine/launcher.ts +1 -1
  147. package/src/langium/statemachine/ls/generated/ast.ts +131 -111
  148. package/src/langium/statemachine/ls/generated/grammar.ts +43 -41
  149. package/src/langium/statemachine/ls/generated/module.ts +6 -6
  150. package/src/langium/statemachine/ls/statemachine-module.ts +2 -2
  151. package/src/langium/statemachine/ls/statemachine.langium +20 -5
  152. package/src/langium/statemachine/main-react.tsx +4 -4
  153. package/src/langium/statemachine/main.ts +27 -43
  154. package/src/multi/config.ts +3 -3
  155. package/src/multi/twoLanguageClients.ts +52 -48
  156. package/src/node.ts +3 -3
  157. package/src/python/client/config.ts +99 -101
  158. package/src/python/client/main.ts +11 -20
  159. package/src/python/client/reactPython.tsx +10 -11
  160. package/src/ts/wrapperTs.ts +45 -52
  161. package/two_langauge_clients.html +1 -0
  162. package/dist/common/client/extendedClient.d.ts +0 -9
  163. package/dist/common/client/extendedClient.d.ts.map +0 -1
  164. package/dist/common/client/extendedClient.js +0 -97
  165. package/dist/common/client/extendedClient.js.map +0 -1
  166. package/dist/json/client/client.d.ts +0 -3
  167. package/dist/json/client/client.d.ts.map +0 -1
  168. package/dist/json/client/client.js +0 -13
  169. package/dist/json/client/client.js.map +0 -1
  170. package/dist/json/client/config.d.ts +0 -3
  171. package/dist/json/client/config.d.ts.map +0 -1
  172. package/dist/json/client/config.js +0 -11
  173. package/dist/json/client/config.js.map +0 -1
  174. package/src/common/client/extendedClient.ts +0 -111
  175. package/src/json/client/client.ts +0 -14
  176. package/src/json/client/config.ts +0 -13
@@ -2,12 +2,8 @@
2
2
  * Copyright (c) 2024 TypeFox and others.
3
3
  * Licensed under the MIT License. See LICENSE in the package root for license information.
4
4
  * ------------------------------------------------------------------------------------------ */
5
-
6
- import type { ExampleLsConfig } from '../common/client/extendedClient.js';
7
-
8
- export const groovyConfig: ExampleLsConfig = {
5
+ export const groovyConfig = {
9
6
  port: 30002,
10
7
  path: '/groovy',
11
- basePath: '/home/gradle/mlc/packages/examples/resources/groovy',
12
- documentSelector: 'groovy'
8
+ basePath: '/home/gradle/mlc/packages/examples/resources/groovy'
13
9
  };
@@ -0,0 +1,90 @@
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
+
6
+ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
7
+ // this is required syntax highlighting
8
+ import '@codingame/monaco-vscode-json-default-extension';
9
+ import { LogLevel } from '@codingame/monaco-vscode-api';
10
+ import { MonacoEditorLanguageClientWrapper, type WrapperConfig } from 'monaco-editor-wrapper';
11
+ import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
12
+
13
+ const text = `{
14
+ "$schema": "http://json.schemastore.org/coffeelint",
15
+ "line_endings": {"value": "unix"}
16
+ }`;
17
+
18
+ export const buildJsonClientUserConfig = (htmlContainer?: HTMLElement): WrapperConfig => {
19
+ return {
20
+ $type: 'extended',
21
+ htmlContainer,
22
+ logLevel: LogLevel.Debug,
23
+ vscodeApiConfig: {
24
+ serviceOverrides: {
25
+ ...getKeybindingsServiceOverride(),
26
+ },
27
+ userConfiguration: {
28
+ json: JSON.stringify({
29
+ 'workbench.colorTheme': 'Default Dark Modern',
30
+ 'editor.guides.bracketPairsHorizontal': 'active',
31
+ 'editor.lightbulb.enabled': 'On',
32
+ 'editor.wordBasedSuggestions': 'off',
33
+ 'editor.experimental.asyncTokenization': true
34
+ })
35
+ }
36
+ },
37
+ editorAppConfig: {
38
+ codeResources: {
39
+ modified: {
40
+ text,
41
+ uri: '/workspace/test.json',
42
+ }
43
+ },
44
+ monacoWorkerFactory: configureDefaultWorkerFactory
45
+ },
46
+ languageClientConfigs: {
47
+ configs: {
48
+ json: {
49
+ clientOptions: {
50
+ documentSelector: ['json']
51
+ },
52
+ connection: {
53
+ options: {
54
+ $type: 'WebSocketUrl',
55
+ url: 'ws://localhost:30000/sampleServer',
56
+ startOptions: {
57
+ onCall: () => {
58
+ console.log('Connected to socket.');
59
+ },
60
+ reportStatus: true
61
+ },
62
+ stopOptions: {
63
+ onCall: () => {
64
+ console.log('Disconnected from socket.');
65
+ },
66
+ reportStatus: true
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ };
74
+ };
75
+
76
+ export const runJsonWrapper = () => {
77
+ const wrapper = new MonacoEditorLanguageClientWrapper();
78
+
79
+ try {
80
+ document.querySelector('#button-start')?.addEventListener('click', async () => {
81
+ const config = buildJsonClientUserConfig(document.getElementById('monaco-editor-root')!);
82
+ await wrapper.initAndStart(config);
83
+ });
84
+ document.querySelector('#button-dispose')?.addEventListener('click', async () => {
85
+ await wrapper.dispose();
86
+ });
87
+ } catch (e) {
88
+ console.error(e);
89
+ }
90
+ };
@@ -36,7 +36,7 @@ export const startMockHttpServerForSavingCodeFromEditor = () => {
36
36
  app.post('/save-code', (req, res) => {
37
37
  const { code } = req.body;
38
38
  console.log('Received code:', code);
39
- res.json({ success: true, message: code });
39
+ res.json({ success: true, message: code});
40
40
  });
41
41
 
42
42
  const PORT = 3003;
@@ -6,83 +6,67 @@
6
6
  import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
7
7
  import { LogLevel } from '@codingame/monaco-vscode-api';
8
8
  import { MessageTransports } from 'vscode-languageclient';
9
- import type { Logger } from 'monaco-languageclient/common';
10
- import type { MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
11
- import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
12
- import { defineDefaultWorkerLoaders, useWorkerFactory } from 'monaco-languageclient/workerFactory';
9
+ import type { Logger } from 'monaco-languageclient/tools';
10
+ import { useWorkerFactory } from 'monaco-languageclient/workerFactory';
11
+ import type { WrapperConfig } from 'monaco-editor-wrapper';
12
+ import { defineDefaultWorkerLoaders } from 'monaco-editor-wrapper/workers/workerLoaders';
13
13
  import { LangiumMonarchContent } from './langium.monarch.js';
14
14
  import code from '../../../../resources/langium/langium-dsl/example.langium?raw';
15
- import type { ExampleAppConfig } from '../../../common/client/utils.js';
16
- import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
17
15
 
18
- export const setupLangiumClientClassic = (params: {
16
+ export const setupLangiumClientClassic = async (params: {
19
17
  worker: Worker
20
18
  messageTransports?: MessageTransports,
21
- }): ExampleAppConfig => {
22
-
19
+ }): Promise<WrapperConfig> => {
23
20
  const workerLoaders = defineDefaultWorkerLoaders();
24
21
  workerLoaders.TextMateWorker = undefined;
25
-
26
- const vscodeApiConfig: MonacoVscodeApiConfig = {
22
+ return {
27
23
  $type: 'classic',
28
- logLevel: LogLevel.Debug,
29
24
  htmlContainer: document.getElementById('monaco-editor-root')!,
30
- serviceOverrides: {
31
- ...getKeybindingsServiceOverride()
32
- },
33
- userConfiguration: {
34
- json: JSON.stringify({
35
- 'workbench.colorTheme': 'GitHub Dark High Contrast',
36
- 'editor.guides.bracketPairsHorizontal': 'active',
37
- 'editor.wordBasedSuggestions': 'off',
38
- 'editor.experimental.asyncTokenization': true,
39
- 'vitest.disableWorkspaceWarning': true
40
- })
41
- },
42
- monacoWorkerFactory: (logger?: Logger) => {
43
- useWorkerFactory({
44
- workerLoaders,
45
- logger
46
- });
47
- }
48
- };
49
-
50
- const languageClientConfig: LanguageClientConfig = {
51
- clientOptions: {
52
- documentSelector: ['langium']
25
+ logLevel: LogLevel.Debug,
26
+ vscodeApiConfig: {
27
+ serviceOverrides: {
28
+ ...getKeybindingsServiceOverride()
29
+ }
53
30
  },
54
- connection: {
55
- options: {
56
- $type: 'WorkerDirect',
57
- worker: params.worker
31
+ editorAppConfig: {
32
+ codeResources: {
33
+ modified: {
34
+ text: code,
35
+ uri: '/workspace/grammar.langium',
36
+ enforceLanguageId: 'langium'
37
+ }
58
38
  },
59
- messageTransports: params.messageTransports
60
- }
61
- };
62
-
63
- const editorAppConfig: EditorAppConfig = {
64
- $type: vscodeApiConfig.$type,
65
- codeResources: {
66
- modified: {
67
- text: code,
68
- uri: '/workspace/grammar.langium',
69
- enforceLanguageId: 'langium'
39
+ editorOptions: {
40
+ 'semanticHighlighting.enabled': true,
41
+ wordBasedSuggestions: 'off',
42
+ theme: 'vs-dark'
43
+ },
44
+ languageDef: {
45
+ monarchLanguage: LangiumMonarchContent,
46
+ languageExtensionConfig: { id: 'langium' }
47
+ },
48
+ monacoWorkerFactory: (logger?: Logger) => {
49
+ useWorkerFactory({
50
+ workerLoaders,
51
+ logger
52
+ });
70
53
  }
71
54
  },
72
- editorOptions: {
73
- 'semanticHighlighting.enabled': true,
74
- wordBasedSuggestions: 'off',
75
- theme: 'vs-dark'
76
- },
77
- languageDef: {
78
- monarchLanguage: LangiumMonarchContent,
79
- languageExtensionConfig: { id: 'langium' }
55
+ languageClientConfigs: {
56
+ configs: {
57
+ langium: {
58
+ clientOptions: {
59
+ documentSelector: ['langium']
60
+ },
61
+ connection: {
62
+ options: {
63
+ $type: 'WorkerDirect',
64
+ worker: params.worker
65
+ },
66
+ messageTransports: params.messageTransports
67
+ }
68
+ }
69
+ }
80
70
  }
81
71
  };
82
-
83
- return {
84
- editorAppConfig,
85
- vscodeApiConfig,
86
- languageClientConfig
87
- };
88
72
  };
@@ -7,42 +7,39 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-
7
7
  import { LogLevel } from '@codingame/monaco-vscode-api';
8
8
  import '../../../../resources/vsix/github-vscode-theme.vsix';
9
9
  import { MessageTransports } from 'vscode-languageclient';
10
- import type { MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
11
- import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
12
- import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
10
+ import type { WrapperConfig } from 'monaco-editor-wrapper';
11
+ import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
13
12
  import langiumLanguageConfig from './langium.configuration.json?raw';
14
13
  import langiumTextmateGrammar from './langium.tmLanguage.json?raw';
15
14
  import text from '../../../../resources/langium/langium-dsl//example.langium?raw';
16
- import type { ExampleAppConfig } from '../../../common/client/utils.js';
17
- import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
18
15
 
19
- export const setupLangiumClientExtended = (params: {
16
+ export const setupLangiumClientExtended = async (params: {
20
17
  worker: Worker
21
18
  messageTransports?: MessageTransports,
22
- }): ExampleAppConfig => {
19
+ }): Promise<WrapperConfig> => {
23
20
 
24
21
  const extensionFilesOrContents = new Map<string, string | URL>();
25
22
  // vite build is easier with string content
26
23
  extensionFilesOrContents.set('/langium-configuration.json', langiumLanguageConfig);
27
24
  extensionFilesOrContents.set('/langium-grammar.json', langiumTextmateGrammar);
28
-
29
- const vscodeApiConfig: MonacoVscodeApiConfig = {
25
+ return {
30
26
  $type: 'extended',
31
- logLevel: LogLevel.Debug,
32
27
  htmlContainer: document.getElementById('monaco-editor-root')!,
33
- serviceOverrides: {
34
- ...getKeybindingsServiceOverride()
35
- },
36
- userConfiguration: {
37
- json: JSON.stringify({
38
- 'workbench.colorTheme': 'GitHub Dark High Contrast',
39
- 'editor.guides.bracketPairsHorizontal': 'active',
40
- 'editor.wordBasedSuggestions': 'off',
41
- 'editor.experimental.asyncTokenization': true,
42
- 'vitest.disableWorkspaceWarning': true
43
- })
28
+ logLevel: LogLevel.Debug,
29
+ vscodeApiConfig: {
30
+ serviceOverrides: {
31
+ ...getKeybindingsServiceOverride()
32
+ },
33
+ userConfiguration: {
34
+ json: JSON.stringify({
35
+ 'workbench.colorTheme': 'GitHub Dark High Contrast',
36
+ 'editor.guides.bracketPairsHorizontal': 'active',
37
+ 'editor.wordBasedSuggestions': 'off',
38
+ 'editor.experimental.asyncTokenization': true,
39
+ 'vitest.disableWorkspaceWarning': true
40
+ })
41
+ }
44
42
  },
45
- monacoWorkerFactory: configureDefaultWorkerFactory,
46
43
  extensions: [{
47
44
  config: {
48
45
  name: 'langium-example',
@@ -66,35 +63,31 @@ export const setupLangiumClientExtended = (params: {
66
63
  }
67
64
  },
68
65
  filesOrContents: extensionFilesOrContents
69
- }]
70
- };
71
-
72
- const languageClientConfig: LanguageClientConfig = {
73
- clientOptions: {
74
- documentSelector: ['langium']
75
- },
76
- connection: {
77
- options: {
78
- $type: 'WorkerDirect',
79
- worker: params.worker
66
+ }],
67
+ editorAppConfig: {
68
+ codeResources: {
69
+ modified: {
70
+ text,
71
+ uri: '/workspace/grammar.langium'
72
+ }
80
73
  },
81
- messageTransports: params.messageTransports
82
- }
83
- };
84
-
85
- const editorAppConfig: EditorAppConfig = {
86
- $type: vscodeApiConfig.$type,
87
- codeResources: {
88
- modified: {
89
- text,
90
- uri: '/workspace/grammar.langium'
74
+ monacoWorkerFactory: configureDefaultWorkerFactory
75
+ },
76
+ languageClientConfigs: {
77
+ configs: {
78
+ langium: {
79
+ clientOptions: {
80
+ documentSelector: ['langium']
81
+ },
82
+ connection: {
83
+ options: {
84
+ $type: 'WorkerDirect',
85
+ worker: params.worker
86
+ },
87
+ messageTransports: params.messageTransports
88
+ }
89
+ }
91
90
  }
92
91
  }
93
92
  };
94
-
95
- return {
96
- editorAppConfig,
97
- vscodeApiConfig,
98
- languageClientConfig
99
- };
100
93
  };
@@ -4,19 +4,16 @@
4
4
  * ------------------------------------------------------------------------------------------ */
5
5
 
6
6
  import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
7
- import { delayExecution } from 'monaco-languageclient/common';
8
- import { EditorApp } from 'monaco-languageclient/editorApp';
7
+ import { MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper';
9
8
  import { setupLangiumClientExtended } from './config/extendedConfig.js';
10
9
  import { setupLangiumClientClassic } from './config/classicConfig.js';
11
- import { disableElement, type ExampleAppConfig } from '../../common/client/utils.js';
10
+ import { delayExecution, disableElement } from '../../common/client/utils.js';
12
11
  import text from '../../../resources/langium/langium-dsl/example.langium?raw';
13
12
  import workerUrl from './worker/langium-server?worker&url';
14
- import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
15
- import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
16
13
 
17
14
  export const runLangiumDslWrapper = async (extendedMode: boolean) => {
18
15
  try {
19
- let editorApp: EditorApp | undefined;
16
+ let wrapper: MonacoEditorLanguageClientWrapper | undefined;
20
17
 
21
18
  const loadLangiumWorker = () => {
22
19
  console.log(`Langium worker URL: ${workerUrl}`);
@@ -27,7 +24,7 @@ export const runLangiumDslWrapper = async (extendedMode: boolean) => {
27
24
  };
28
25
 
29
26
  const checkStarted = () => {
30
- if (editorApp?.isStarted() ?? false) {
27
+ if (wrapper?.isStarted() ?? false) {
31
28
  alert('Editor was already started!\nPlease reload the page to test the alternative editor.');
32
29
  return true;
33
30
  }
@@ -45,32 +42,24 @@ export const runLangiumDslWrapper = async (extendedMode: boolean) => {
45
42
  console.log('Received message from worker:', message);
46
43
  });
47
44
 
48
- let appConfig: ExampleAppConfig;
49
45
  if (extendedMode) {
50
- appConfig = setupLangiumClientExtended({
46
+ const config = await setupLangiumClientExtended({
51
47
  worker,
52
48
  messageTransports: { reader, writer }
53
49
  });
50
+ wrapper = new MonacoEditorLanguageClientWrapper();
51
+ await wrapper.initAndStart(config);
54
52
  } else {
55
- appConfig = setupLangiumClientClassic({
53
+ const config = await setupLangiumClientClassic({
56
54
  worker,
57
55
  messageTransports: { reader, writer }
58
56
  });
57
+ wrapper = new MonacoEditorLanguageClientWrapper();
58
+ await wrapper.initAndStart(config);
59
59
  }
60
- // perform global init
61
- const apiWrapper = new MonacoVscodeApiWrapper(appConfig.vscodeApiConfig);
62
- await apiWrapper.init();
63
-
64
- // init language client
65
- const lcWrapper = new LanguageClientWrapper(appConfig.languageClientConfig);
66
- await lcWrapper.start();
67
-
68
- // run editorApp
69
- editorApp = new EditorApp(appConfig.editorAppConfig);
70
- await editorApp.start(appConfig.vscodeApiConfig.htmlContainer!);
71
60
 
72
61
  await delayExecution(1000);
73
- await editorApp.updateCodeResources({
62
+ await wrapper.updateCodeResources({
74
63
  modified: {
75
64
  text: `// modified file\n\n${text}`,
76
65
  uri: '/workspace/mod.langium',
@@ -80,9 +69,10 @@ export const runLangiumDslWrapper = async (extendedMode: boolean) => {
80
69
  };
81
70
 
82
71
  const disposeEditor = async () => {
83
- editorApp?.reportStatus();
84
- await editorApp?.dispose();
85
- editorApp = undefined;
72
+ if (!wrapper) return;
73
+ wrapper.reportStatus();
74
+ await wrapper.dispose();
75
+ wrapper = undefined;
86
76
  disableElement('button-start', false);
87
77
  };
88
78
 
@@ -6,62 +6,65 @@
6
6
  import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
7
7
  import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override';
8
8
  import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override';
9
+ import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services';
9
10
  import { LogLevel } from '@codingame/monaco-vscode-api';
10
11
  import { MessageTransports } from 'vscode-languageclient';
11
- import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscodeApiLocales';
12
- import type { MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
13
- import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
14
- import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
15
- import type { CodeContent, EditorAppConfig } from 'monaco-languageclient/editorApp';
12
+ import type { CodeContent, LanguageClientConfigs, WrapperConfig } from 'monaco-editor-wrapper';
13
+ import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
16
14
 
17
15
  // cannot be imported with assert as json contains comments
18
16
  import statemachineLanguageConfig from './language-configuration.json?raw';
19
17
  import responseStatemachineTm from '../syntaxes/statemachine.tmLanguage.json?raw';
20
- import type { ExampleAppConfig } from '../../../common/client/utils.js';
21
18
 
22
19
  export const createLangiumGlobalConfig = (params: {
23
20
  languageServerId: string,
21
+ useLanguageClient: boolean,
24
22
  codeContent: CodeContent,
25
- worker: Worker,
23
+ worker?: Worker,
26
24
  messagePort?: MessagePort,
27
25
  messageTransports?: MessageTransports,
28
26
  htmlContainer: HTMLElement
29
- }): ExampleAppConfig => {
27
+ }): WrapperConfig => {
30
28
  const extensionFilesOrContents = new Map<string, string | URL>();
31
29
  extensionFilesOrContents.set(`/${params.languageServerId}-statemachine-configuration.json`, statemachineLanguageConfig);
32
30
  extensionFilesOrContents.set(`/${params.languageServerId}-statemachine-grammar.json`, responseStatemachineTm);
33
31
 
34
- const languageClientConfig: LanguageClientConfig = {
35
- clientOptions: {
36
- documentSelector: ['statemachine']
37
- },
38
- connection: {
39
- options: {
40
- $type: 'WorkerDirect',
41
- worker: params.worker,
42
- messagePort: params.messagePort,
43
- },
44
- messageTransports: params.messageTransports
32
+ const languageClientConfigs: LanguageClientConfigs | undefined = params.useLanguageClient && params.worker ? {
33
+ configs: {
34
+ statemachine: {
35
+ clientOptions: {
36
+ documentSelector: ['statemachine']
37
+ },
38
+ connection: {
39
+ options: {
40
+ $type: 'WorkerDirect',
41
+ worker: params.worker,
42
+ messagePort: params.messagePort,
43
+ },
44
+ messageTransports: params.messageTransports
45
+ }
46
+ }
45
47
  }
46
- };
48
+ } : undefined;
47
49
 
48
- const vscodeApiConfig: MonacoVscodeApiConfig = {
50
+ return {
49
51
  $type: 'extended',
50
52
  htmlContainer: params.htmlContainer,
51
53
  logLevel: LogLevel.Debug,
52
- serviceOverrides: {
53
- ...getKeybindingsServiceOverride(),
54
- ...getLifecycleServiceOverride(),
55
- ...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
56
- },
57
- monacoWorkerFactory: configureDefaultWorkerFactory,
58
- userConfiguration: {
59
- json: JSON.stringify({
60
- 'workbench.colorTheme': 'Default Dark Modern',
61
- 'editor.guides.bracketPairsHorizontal': 'active',
62
- 'editor.wordBasedSuggestions': 'off',
63
- 'editor.experimental.asyncTokenization': true
64
- })
54
+ vscodeApiConfig: {
55
+ serviceOverrides: {
56
+ ...getKeybindingsServiceOverride(),
57
+ ...getLifecycleServiceOverride(),
58
+ ...getLocalizationServiceOverride(createDefaultLocaleConfiguration()),
59
+ },
60
+ userConfiguration: {
61
+ json: JSON.stringify({
62
+ 'workbench.colorTheme': 'Default Dark Modern',
63
+ 'editor.guides.bracketPairsHorizontal': 'active',
64
+ 'editor.wordBasedSuggestions': 'off',
65
+ 'editor.experimental.asyncTokenization': true
66
+ })
67
+ },
65
68
  },
66
69
  extensions: [{
67
70
  config: {
@@ -86,19 +89,13 @@ export const createLangiumGlobalConfig = (params: {
86
89
  }
87
90
  },
88
91
  filesOrContents: extensionFilesOrContents
89
- }]
90
- };
91
-
92
- const editorAppConfig: EditorAppConfig = {
93
- $type: vscodeApiConfig.$type,
94
- codeResources: {
95
- modified: params.codeContent
96
- }
97
- };
98
-
99
- return {
100
- editorAppConfig,
101
- vscodeApiConfig,
102
- languageClientConfig
92
+ }],
93
+ editorAppConfig: {
94
+ codeResources: {
95
+ modified: params.codeContent
96
+ },
97
+ monacoWorkerFactory: configureDefaultWorkerFactory
98
+ },
99
+ languageClientConfigs
103
100
  };
104
101
  };
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License. See LICENSE in the package root for license information.
4
4
  * ------------------------------------------------------------------------------------------ */
5
5
 
6
- import { initLocaleLoader } from 'monaco-languageclient/vscodeApiLocales';
6
+ import { initLocaleLoader } from 'monaco-editor-wrapper/vscode/locale';
7
7
  await initLocaleLoader();
8
8
 
9
9
  const { runStatemachineWrapper } = await import('./main.js');