monaco-languageclient-examples 2025.8.4 → 2025.8.6

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 (49) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/browser/main.d.ts +1 -0
  3. package/dist/browser/main.d.ts.map +1 -1
  4. package/dist/browser/main.js +2 -1
  5. package/dist/browser/main.js.map +1 -1
  6. package/dist/json/client/client.d.ts.map +1 -1
  7. package/dist/json/client/client.js +4 -1
  8. package/dist/json/client/client.js.map +1 -1
  9. package/dist/langium/langium-dsl/config/extendedConfig.d.ts +1 -6
  10. package/dist/langium/langium-dsl/config/extendedConfig.d.ts.map +1 -1
  11. package/dist/langium/langium-dsl/config/extendedConfig.js +77 -23
  12. package/dist/langium/langium-dsl/config/extendedConfig.js.map +1 -1
  13. package/dist/langium/langium-dsl/config/langium.configuration.json +10 -40
  14. package/dist/langium/langium-dsl/config/langium.tmLanguage.json +1 -1
  15. package/dist/langium/langium-dsl/main.d.ts +2 -0
  16. package/dist/langium/langium-dsl/main.d.ts.map +1 -0
  17. package/dist/langium/langium-dsl/main.js +26 -0
  18. package/dist/langium/langium-dsl/main.js.map +1 -0
  19. package/dist/langium/statemachine/main-react.d.ts.map +1 -1
  20. package/dist/langium/statemachine/main-react.js +6 -1
  21. package/dist/langium/statemachine/main-react.js.map +1 -1
  22. package/dist/python/client/reactPython.d.ts.map +1 -1
  23. package/dist/python/client/reactPython.js +6 -1
  24. package/dist/python/client/reactPython.js.map +1 -1
  25. package/ghp_langium_extended.html +3 -3
  26. package/index.html +1 -1
  27. package/langium_extended.html +4 -6
  28. package/package.json +6 -6
  29. package/src/browser/main.ts +2 -1
  30. package/src/json/client/client.ts +4 -1
  31. package/src/langium/langium-dsl/config/extendedConfig.ts +87 -31
  32. package/src/langium/langium-dsl/config/langium.configuration.json +128 -158
  33. package/src/langium/langium-dsl/config/langium.tmLanguage.json +271 -271
  34. package/src/langium/langium-dsl/main.ts +31 -0
  35. package/src/langium/statemachine/main-react.tsx +6 -0
  36. package/src/python/client/reactPython.tsx +6 -0
  37. package/vite.production.base.ts +0 -1
  38. package/dist/langium/langium-dsl/config/classicConfig.d.ts +0 -7
  39. package/dist/langium/langium-dsl/config/classicConfig.d.ts.map +0 -1
  40. package/dist/langium/langium-dsl/config/classicConfig.js +0 -74
  41. package/dist/langium/langium-dsl/config/classicConfig.js.map +0 -1
  42. package/dist/langium/langium-dsl/wrapperLangium.d.ts +0 -2
  43. package/dist/langium/langium-dsl/wrapperLangium.d.ts.map +0 -1
  44. package/dist/langium/langium-dsl/wrapperLangium.js +0 -86
  45. package/dist/langium/langium-dsl/wrapperLangium.js.map +0 -1
  46. package/ghp_langium_classic.html +0 -26
  47. package/langium_classic.html +0 -26
  48. package/src/langium/langium-dsl/config/classicConfig.ts +0 -88
  49. package/src/langium/langium-dsl/wrapperLangium.ts +0 -95
@@ -1,74 +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
- import { LogLevel } from '@codingame/monaco-vscode-api';
7
- import { MessageTransports } from 'vscode-languageclient';
8
- import { defineDefaultWorkerLoaders, useWorkerFactory } from 'monaco-languageclient/workerFactory';
9
- import { LangiumMonarchContent } from './langium.monarch.js';
10
- import code from '../../../../resources/langium/langium-dsl/example.langium?raw';
11
- export const setupLangiumClientClassic = (params) => {
12
- const workerLoaders = defineDefaultWorkerLoaders();
13
- workerLoaders.TextMateWorker = undefined;
14
- const vscodeApiConfig = {
15
- $type: 'classic',
16
- logLevel: LogLevel.Debug,
17
- htmlContainer: document.getElementById('monaco-editor-root'),
18
- serviceOverrides: {
19
- ...getKeybindingsServiceOverride()
20
- },
21
- userConfiguration: {
22
- json: JSON.stringify({
23
- 'workbench.colorTheme': 'GitHub Dark High Contrast',
24
- 'editor.guides.bracketPairsHorizontal': 'active',
25
- 'editor.wordBasedSuggestions': 'off',
26
- 'editor.experimental.asyncTokenization': true,
27
- 'vitest.disableWorkspaceWarning': true
28
- })
29
- },
30
- monacoWorkerFactory: (logger) => {
31
- useWorkerFactory({
32
- workerLoaders,
33
- logger
34
- });
35
- }
36
- };
37
- const languageClientConfig = {
38
- clientOptions: {
39
- documentSelector: ['langium']
40
- },
41
- connection: {
42
- options: {
43
- $type: 'WorkerDirect',
44
- worker: params.worker
45
- },
46
- messageTransports: params.messageTransports
47
- }
48
- };
49
- const editorAppConfig = {
50
- $type: vscodeApiConfig.$type,
51
- codeResources: {
52
- modified: {
53
- text: code,
54
- uri: '/workspace/grammar.langium',
55
- enforceLanguageId: 'langium'
56
- }
57
- },
58
- editorOptions: {
59
- 'semanticHighlighting.enabled': true,
60
- wordBasedSuggestions: 'off',
61
- theme: 'vs-dark'
62
- },
63
- languageDef: {
64
- monarchLanguage: LangiumMonarchContent,
65
- languageExtensionConfig: { id: 'langium' }
66
- }
67
- };
68
- return {
69
- editorAppConfig,
70
- vscodeApiConfig,
71
- languageClientConfig
72
- };
73
- };
74
- //# sourceMappingURL=classicConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"classicConfig.js","sourceRoot":"","sources":["../../../../src/langium/langium-dsl/config/classicConfig.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,6BAA6B,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,OAAO,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,IAAI,MAAM,+DAA+D,CAAC;AAIjF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAGzC,EAAoB,EAAE;IAEnB,MAAM,aAAa,GAAG,0BAA0B,EAAE,CAAC;IACnD,aAAa,CAAC,cAAc,GAAG,SAAS,CAAC;IAEzC,MAAM,eAAe,GAA0B;QAC3C,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,QAAQ,CAAC,KAAK;QACxB,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAE;QAC7D,gBAAgB,EAAE;YACd,GAAG,6BAA6B,EAAE;SACrC;QACD,iBAAiB,EAAE;YACf,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,sBAAsB,EAAE,2BAA2B;gBACnD,sCAAsC,EAAE,QAAQ;gBAChD,6BAA6B,EAAE,KAAK;gBACpC,uCAAuC,EAAE,IAAI;gBAC7C,gCAAgC,EAAE,IAAI;aACzC,CAAC;SACL;QACD,mBAAmB,EAAE,CAAC,MAAe,EAAE,EAAE;YACrC,gBAAgB,CAAC;gBACb,aAAa;gBACb,MAAM;aACT,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;IAEF,MAAM,oBAAoB,GAAyB;QAC/C,aAAa,EAAE;YACX,gBAAgB,EAAE,CAAC,SAAS,CAAC;SAChC;QACD,UAAU,EAAE;YACR,OAAO,EAAE;gBACL,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACxB;YACD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC9C;KACJ,CAAC;IAEF,MAAM,eAAe,GAAoB;QACrC,KAAK,EAAE,eAAe,CAAC,KAAK;QAC5B,aAAa,EAAE;YACX,QAAQ,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,GAAG,EAAE,4BAA4B;gBACjC,iBAAiB,EAAE,SAAS;aAC/B;SACJ;QACD,aAAa,EAAE;YACX,8BAA8B,EAAE,IAAI;YACpC,oBAAoB,EAAE,KAAK;YAC3B,KAAK,EAAE,SAAS;SACnB;QACD,WAAW,EAAE;YACT,eAAe,EAAE,qBAAqB;YACtC,uBAAuB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;SAC7C;KACJ,CAAC;IAEF,OAAO;QACH,eAAe;QACf,eAAe;QACf,oBAAoB;KACvB,CAAC;AACN,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare const runLangiumDslWrapper: (extendedMode: boolean) => Promise<void>;
2
- //# sourceMappingURL=wrapperLangium.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapperLangium.d.ts","sourceRoot":"","sources":["../../../src/langium/langium-dsl/wrapperLangium.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,oBAAoB,GAAU,cAAc,OAAO,kBA6E/D,CAAC"}
@@ -1,86 +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 { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
6
- import { delayExecution } from 'monaco-languageclient/common';
7
- import { EditorApp } from 'monaco-languageclient/editorApp';
8
- import { setupLangiumClientExtended } from './config/extendedConfig.js';
9
- import { setupLangiumClientClassic } from './config/classicConfig.js';
10
- import { disableElement } from '../../common/client/utils.js';
11
- import text from '../../../resources/langium/langium-dsl/example.langium?raw';
12
- import workerUrl from './worker/langium-server?worker&url';
13
- import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
14
- import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
15
- export const runLangiumDslWrapper = async (extendedMode) => {
16
- try {
17
- let editorApp;
18
- const loadLangiumWorker = () => {
19
- console.log(`Langium worker URL: ${workerUrl}`);
20
- return new Worker(workerUrl, {
21
- type: 'module',
22
- name: 'Langium LS',
23
- });
24
- };
25
- const checkStarted = () => {
26
- if (editorApp?.isStarted() ?? false) {
27
- alert('Editor was already started!\nPlease reload the page to test the alternative editor.');
28
- return true;
29
- }
30
- return false;
31
- };
32
- const startLangiumClient = async () => {
33
- if (checkStarted())
34
- return;
35
- disableElement('button-start', true);
36
- const worker = loadLangiumWorker();
37
- const reader = new BrowserMessageReader(worker);
38
- const writer = new BrowserMessageWriter(worker);
39
- reader.listen((message) => {
40
- console.log('Received message from worker:', message);
41
- });
42
- let appConfig;
43
- if (extendedMode) {
44
- appConfig = setupLangiumClientExtended({
45
- worker,
46
- messageTransports: { reader, writer }
47
- });
48
- }
49
- else {
50
- appConfig = setupLangiumClientClassic({
51
- worker,
52
- messageTransports: { reader, writer }
53
- });
54
- }
55
- // perform global init
56
- const apiWrapper = new MonacoVscodeApiWrapper(appConfig.vscodeApiConfig);
57
- await apiWrapper.init();
58
- // init language client
59
- const lcWrapper = new LanguageClientWrapper(appConfig.languageClientConfig);
60
- await lcWrapper.start();
61
- // run editorApp
62
- editorApp = new EditorApp(appConfig.editorAppConfig);
63
- await editorApp.start(appConfig.vscodeApiConfig.htmlContainer);
64
- await delayExecution(1000);
65
- await editorApp.updateCodeResources({
66
- modified: {
67
- text: `// modified file\n\n${text}`,
68
- uri: '/workspace/mod.langium',
69
- enforceLanguageId: 'langium'
70
- }
71
- });
72
- };
73
- const disposeEditor = async () => {
74
- editorApp?.reportStatus();
75
- await editorApp?.dispose();
76
- editorApp = undefined;
77
- disableElement('button-start', false);
78
- };
79
- document.querySelector('#button-start')?.addEventListener('click', startLangiumClient);
80
- document.querySelector('#button-dispose')?.addEventListener('click', disposeEditor);
81
- }
82
- catch (e) {
83
- console.error(e);
84
- }
85
- };
86
- //# sourceMappingURL=wrapperLangium.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrapperLangium.js","sourceRoot":"","sources":["../../../src/langium/langium-dsl/wrapperLangium.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <title>Langium Grammar DSL (Classic Mode)</title>
6
- <meta charset="UTF-8" />
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <link rel="stylesheet" href="style.css">
9
- </head>
10
-
11
- <body>
12
- <div class="exampleHeadelineDiv">
13
- <b class="exampleHeadeline">Langium Grammar DSL (Classic Mode)</b> - [<a href="./index.html">Back to Index</a>]
14
- <br>
15
- <button type="button" id="button-start">Start</button>
16
- <button type="button" id="button-dispose">Dispose</button>
17
- </div>
18
- <div id="monaco-editor-root" style="height: 80vh; border: 1px solid grey"></div>
19
- <script type="module">
20
- import { runLangiumDslWrapper } from './src/langium/langium-dsl/wrapperLangium.ts';
21
-
22
- runLangiumDslWrapper(false);
23
- </script>;
24
- </body>
25
-
26
- </html>
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <title>Langium Grammar DSL (Classic Mode)</title>
6
- <meta charset="UTF-8" />
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <link rel="stylesheet" href="style.css">
9
- </head>
10
-
11
- <body>
12
- <div class="exampleHeadelineDiv">
13
- <b class="exampleHeadeline">Langium Grammar DSL (Classic Mode)</b> - [<a href="../../index.html">Back to Index</a>]
14
- <br>
15
- <button type="button" id="button-start">Start</button>
16
- <button type="button" id="button-dispose">Dispose</button>
17
- </div>
18
- <div id="monaco-editor-root" style="height: 80vh; border: 1px solid grey"></div>
19
- <script type="module">
20
- import { runLangiumDslWrapper } from './src/langium/langium-dsl/wrapperLangium.ts';
21
-
22
- runLangiumDslWrapper(false);
23
- </script>;
24
- </body>
25
-
26
- </html>
@@ -1,88 +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
-
6
- import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
7
- import { LogLevel } from '@codingame/monaco-vscode-api';
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';
13
- import { LangiumMonarchContent } from './langium.monarch.js';
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
-
18
- export const setupLangiumClientClassic = (params: {
19
- worker: Worker
20
- messageTransports?: MessageTransports,
21
- }): ExampleAppConfig => {
22
-
23
- const workerLoaders = defineDefaultWorkerLoaders();
24
- workerLoaders.TextMateWorker = undefined;
25
-
26
- const vscodeApiConfig: MonacoVscodeApiConfig = {
27
- $type: 'classic',
28
- logLevel: LogLevel.Debug,
29
- 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']
53
- },
54
- connection: {
55
- options: {
56
- $type: 'WorkerDirect',
57
- worker: params.worker
58
- },
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'
70
- }
71
- },
72
- editorOptions: {
73
- 'semanticHighlighting.enabled': true,
74
- wordBasedSuggestions: 'off',
75
- theme: 'vs-dark'
76
- },
77
- languageDef: {
78
- monarchLanguage: LangiumMonarchContent,
79
- languageExtensionConfig: { id: 'langium' }
80
- }
81
- };
82
-
83
- return {
84
- editorAppConfig,
85
- vscodeApiConfig,
86
- languageClientConfig
87
- };
88
- };
@@ -1,95 +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
-
6
- import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
7
- import { delayExecution } from 'monaco-languageclient/common';
8
- import { EditorApp } from 'monaco-languageclient/editorApp';
9
- import { setupLangiumClientExtended } from './config/extendedConfig.js';
10
- import { setupLangiumClientClassic } from './config/classicConfig.js';
11
- import { disableElement, type ExampleAppConfig } from '../../common/client/utils.js';
12
- import text from '../../../resources/langium/langium-dsl/example.langium?raw';
13
- import workerUrl from './worker/langium-server?worker&url';
14
- import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
15
- import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
16
-
17
- export const runLangiumDslWrapper = async (extendedMode: boolean) => {
18
- try {
19
- let editorApp: EditorApp | undefined;
20
-
21
- const loadLangiumWorker = () => {
22
- console.log(`Langium worker URL: ${workerUrl}`);
23
- return new Worker(workerUrl, {
24
- type: 'module',
25
- name: 'Langium LS',
26
- });
27
- };
28
-
29
- const checkStarted = () => {
30
- if (editorApp?.isStarted() ?? false) {
31
- alert('Editor was already started!\nPlease reload the page to test the alternative editor.');
32
- return true;
33
- }
34
- return false;
35
- };
36
-
37
- const startLangiumClient = async () => {
38
- if (checkStarted()) return;
39
- disableElement('button-start', true);
40
-
41
- const worker = loadLangiumWorker();
42
- const reader = new BrowserMessageReader(worker);
43
- const writer = new BrowserMessageWriter(worker);
44
- reader.listen((message) => {
45
- console.log('Received message from worker:', message);
46
- });
47
-
48
- let appConfig: ExampleAppConfig;
49
- if (extendedMode) {
50
- appConfig = setupLangiumClientExtended({
51
- worker,
52
- messageTransports: { reader, writer }
53
- });
54
- } else {
55
- appConfig = setupLangiumClientClassic({
56
- worker,
57
- messageTransports: { reader, writer }
58
- });
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
-
72
- await delayExecution(1000);
73
- await editorApp.updateCodeResources({
74
- modified: {
75
- text: `// modified file\n\n${text}`,
76
- uri: '/workspace/mod.langium',
77
- enforceLanguageId: 'langium'
78
- }
79
- });
80
- };
81
-
82
- const disposeEditor = async () => {
83
- editorApp?.reportStatus();
84
- await editorApp?.dispose();
85
- editorApp = undefined;
86
- disableElement('button-start', false);
87
- };
88
-
89
- document.querySelector('#button-start')?.addEventListener('click', startLangiumClient);
90
- document.querySelector('#button-dispose')?.addEventListener('click', disposeEditor);
91
- } catch (e) {
92
- console.error(e);
93
- }
94
- };
95
-