monaco-languageclient-examples 2025.9.1-next.0 → 2025.9.2
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.
- package/CHANGELOG.md +10 -2
- package/README.md +1 -1
- package/dist/appPlayground/common.d.ts.map +1 -1
- package/dist/appPlayground/common.js +0 -2
- package/dist/appPlayground/common.js.map +1 -1
- package/dist/appPlayground/config.d.ts +2 -4
- package/dist/appPlayground/config.d.ts.map +1 -1
- package/dist/appPlayground/config.js +1 -5
- package/dist/appPlayground/config.js.map +1 -1
- package/dist/appPlayground/main.js.map +1 -1
- package/dist/appPlayground/reactMain.d.ts.map +1 -1
- package/dist/appPlayground/reactMain.js +6 -7
- package/dist/appPlayground/reactMain.js.map +1 -1
- package/dist/browser/main.d.ts.map +1 -1
- package/dist/browser/main.js +3 -2
- package/dist/browser/main.js.map +1 -1
- package/dist/clangd/client/config.d.ts.map +1 -1
- package/dist/clangd/client/config.js.map +1 -1
- package/dist/clangd/client/main.js.map +1 -1
- package/dist/clangd/client/mainRemoteMessageChannelFs.d.ts.map +1 -1
- package/dist/clangd/client/mainRemoteMessageChannelFs.js.map +1 -1
- package/dist/clangd/client/workerHandler.d.ts.map +1 -1
- package/dist/clangd/client/workerHandler.js.map +1 -1
- package/dist/clangd/worker/clangd-server.d.ts +0 -18
- package/dist/clangd/worker/clangd-server.d.ts.map +1 -1
- package/dist/clangd/worker/clangd-server.js +1 -1
- package/dist/clangd/worker/clangd-server.js.map +1 -1
- package/dist/clangd/worker/json_stream.d.ts.map +1 -1
- package/dist/clangd/worker/json_stream.js.map +1 -1
- package/dist/clangd/worker/memfs-tools.d.ts.map +1 -1
- package/dist/clangd/worker/memfs-tools.js.map +1 -1
- package/dist/clangd/worker/workerRemoteMessageChannelFs.d.ts +1 -2
- package/dist/clangd/worker/workerRemoteMessageChannelFs.d.ts.map +1 -1
- package/dist/clangd/worker/workerRemoteMessageChannelFs.js +1 -6
- package/dist/clangd/worker/workerRemoteMessageChannelFs.js.map +1 -1
- package/dist/common/client/extendedClient.d.ts.map +1 -1
- package/dist/common/client/extendedClient.js +1 -1
- package/dist/common/client/extendedClient.js.map +1 -1
- package/dist/common/client/utils.d.ts.map +1 -1
- package/dist/common/client/utils.js +0 -4
- package/dist/common/client/utils.js.map +1 -1
- package/dist/common/node/language-server-runner.d.ts.map +1 -1
- package/dist/common/node/language-server-runner.js.map +1 -1
- package/dist/common/node/server-commons.d.ts +3 -9
- package/dist/common/node/server-commons.d.ts.map +1 -1
- package/dist/common/node/server-commons.js +0 -7
- package/dist/common/node/server-commons.js.map +1 -1
- package/dist/debugger/client/debugger.d.ts.map +1 -1
- package/dist/debugger/client/debugger.js.map +1 -1
- package/dist/debugger/common/definitions.d.ts +1 -2
- package/dist/debugger/common/definitions.d.ts.map +1 -1
- package/dist/debugger/common/definitions.js.map +1 -1
- package/dist/debugger/server/DAPSocket.d.ts.map +1 -1
- package/dist/debugger/server/DAPSocket.js.map +1 -1
- package/dist/debugger/server/debugServer.js.map +1 -1
- package/dist/eclipse.jdt.ls/client/main.js.map +1 -1
- package/dist/eclipse.jdt.ls/config.js +0 -4
- package/dist/eclipse.jdt.ls/config.js.map +1 -1
- package/dist/eclipse.jdt.ls/server/main.d.ts.map +1 -1
- package/dist/eclipse.jdt.ls/server/main.js +1 -2
- package/dist/eclipse.jdt.ls/server/main.js.map +1 -1
- package/dist/groovy/client/main.js.map +1 -1
- package/dist/groovy/config.js +0 -4
- package/dist/groovy/config.js.map +1 -1
- package/dist/groovy/server/main.d.ts.map +1 -1
- package/dist/groovy/server/main.js +1 -2
- package/dist/groovy/server/main.js.map +1 -1
- package/dist/json/client/classic.d.ts +1 -1
- package/dist/json/client/classic.d.ts.map +1 -1
- package/dist/json/client/classic.js +1 -1
- package/dist/json/client/classic.js.map +1 -1
- package/dist/json/client/config.js +0 -4
- package/dist/json/client/config.js.map +1 -1
- package/dist/json/client/extended.js.map +1 -1
- package/dist/json/server/direct.js.map +1 -1
- package/dist/json/server/json-server.d.ts.map +1 -1
- package/dist/json/server/json-server.js.map +1 -1
- package/dist/json/server/main.d.ts.map +1 -1
- package/dist/json/server/main.js +3 -4
- package/dist/json/server/main.js.map +1 -1
- package/dist/langium/langium-dsl/config/langium.monarch.d.ts +10 -10
- package/dist/langium/langium-dsl/config/{extendedConfig.d.ts → langiumDslConfig.d.ts} +1 -1
- package/dist/langium/langium-dsl/config/langiumDslConfig.d.ts.map +1 -0
- package/dist/langium/langium-dsl/config/{extendedConfig.js → langiumDslConfig.js} +1 -1
- package/dist/langium/langium-dsl/config/langiumDslConfig.js.map +1 -0
- package/dist/langium/langium-dsl/main.js +1 -1
- package/dist/langium/langium-dsl/main.js.map +1 -1
- package/dist/langium/langium-dsl/worker/langium-server.js.map +1 -1
- package/dist/langium/statemachine/config/{wrapperStatemachineConfig.d.ts → statemachineConfig.d.ts} +4 -5
- package/dist/langium/statemachine/config/statemachineConfig.d.ts.map +1 -0
- package/dist/langium/statemachine/config/{wrapperStatemachineConfig.js → statemachineConfig.js} +1 -1
- package/dist/langium/statemachine/config/statemachineConfig.js.map +1 -0
- package/dist/langium/statemachine/launcher.js +2 -2
- package/dist/langium/statemachine/launcher.js.map +1 -1
- package/dist/langium/statemachine/ls/generated/ast.d.ts +6 -6
- package/dist/langium/statemachine/ls/generated/ast.js +1 -1
- package/dist/langium/statemachine/ls/generated/ast.js.map +1 -1
- package/dist/langium/statemachine/ls/generated/grammar.d.ts +1 -1
- package/dist/langium/statemachine/ls/generated/grammar.d.ts.map +1 -1
- package/dist/langium/statemachine/ls/generated/grammar.js +0 -4
- package/dist/langium/statemachine/ls/generated/grammar.js.map +1 -1
- package/dist/langium/statemachine/ls/generated/module.d.ts +1 -1
- package/dist/langium/statemachine/ls/generated/module.js +0 -4
- package/dist/langium/statemachine/ls/generated/module.js.map +1 -1
- package/dist/langium/statemachine/ls/statemachine-module.js.map +1 -1
- package/dist/langium/statemachine/ls/statemachine-validator.d.ts.map +1 -1
- package/dist/langium/statemachine/ls/statemachine-validator.js +0 -4
- package/dist/langium/statemachine/ls/statemachine-validator.js.map +1 -1
- package/dist/langium/statemachine/main-react.d.ts +1 -1
- package/dist/langium/statemachine/main-react.d.ts.map +1 -1
- package/dist/langium/statemachine/main-react.js +37 -44
- package/dist/langium/statemachine/main-react.js.map +1 -1
- package/dist/langium/statemachine/main.d.ts +1 -1
- package/dist/langium/statemachine/main.d.ts.map +1 -1
- package/dist/langium/statemachine/main.js +5 -4
- package/dist/langium/statemachine/main.js.map +1 -1
- package/dist/langium/statemachine/worker/statemachine-server-port.js.map +1 -1
- package/dist/langium/statemachine/worker/statemachine-server-start.d.ts +1 -1
- package/dist/langium/statemachine/worker/statemachine-server-start.d.ts.map +1 -1
- package/dist/langium/statemachine/worker/statemachine-server-start.js.map +1 -1
- package/dist/multi/config.js.map +1 -1
- package/dist/multi/twoLanguageClients.d.ts.map +1 -1
- package/dist/multi/twoLanguageClients.js +3 -2
- package/dist/multi/twoLanguageClients.js.map +1 -1
- package/dist/python/client/config.d.ts +2 -2
- package/dist/python/client/config.d.ts.map +1 -1
- package/dist/python/client/config.js.map +1 -1
- package/dist/python/client/main.js.map +1 -1
- package/dist/python/client/reactPython.js +3 -4
- package/dist/python/client/reactPython.js.map +1 -1
- package/dist/python/server/direct.js.map +1 -1
- package/dist/python/server/main.d.ts.map +1 -1
- package/dist/python/server/main.js +2 -3
- package/dist/python/server/main.js.map +1 -1
- package/dist/ts/{wrapperTs.d.ts → clientTs.d.ts} +1 -1
- package/dist/ts/clientTs.d.ts.map +1 -0
- package/dist/ts/clientTs.js +178 -0
- package/dist/ts/clientTs.js.map +1 -0
- package/ghp_langium_extended.html +1 -3
- package/ghp_react_statemachine.html +1 -4
- package/ghp_tsExtHost.html +1 -1
- package/index.html +10 -22
- package/package.json +41 -41
- package/src/appPlayground/common.ts +0 -3
- package/src/appPlayground/config.ts +3 -10
- package/src/appPlayground/reactMain.tsx +1 -2
- package/src/browser/main.ts +3 -2
- package/src/clangd/worker/workerRemoteMessageChannelFs.ts +2 -3
- package/src/common/client/extendedClient.ts +1 -1
- package/src/common/client/utils.ts +1 -2
- package/src/common/node/server-commons.ts +1 -8
- package/src/debugger/common/definitions.ts +1 -2
- package/src/eclipse.jdt.ls/server/main.ts +1 -2
- package/src/groovy/server/main.ts +1 -2
- package/src/json/client/classic.ts +1 -1
- package/src/json/server/main.ts +4 -5
- package/src/langium/langium-dsl/main.ts +1 -1
- package/src/langium/statemachine/config/langium-config.json +1 -1
- package/src/langium/statemachine/config/{wrapperStatemachineConfig.ts → statemachineConfig.ts} +2 -2
- package/src/langium/statemachine/launcher.ts +2 -2
- package/src/langium/statemachine/ls/generated/ast.ts +1 -1
- package/src/langium/statemachine/ls/generated/grammar.ts +1 -1
- package/src/langium/statemachine/ls/generated/module.ts +1 -1
- package/src/langium/statemachine/main-react.tsx +49 -53
- package/src/langium/statemachine/main.ts +5 -4
- package/src/multi/twoLanguageClients.ts +3 -2
- package/src/python/client/config.ts +2 -2
- package/src/python/server/main.ts +2 -3
- package/src/ts/clientTs.ts +196 -0
- package/tsExtHost.html +1 -1
- package/dist/langium/langium-dsl/config/extendedConfig.d.ts.map +0 -1
- package/dist/langium/langium-dsl/config/extendedConfig.js.map +0 -1
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.d.ts.map +0 -1
- package/dist/langium/statemachine/config/wrapperStatemachineConfig.js.map +0 -1
- package/dist/ts/wrapperTs.d.ts.map +0 -1
- package/dist/ts/wrapperTs.js +0 -122
- package/dist/ts/wrapperTs.js.map +0 -1
- package/src/ts/wrapperTs.ts +0 -131
- /package/src/langium/langium-dsl/config/{extendedConfig.ts → langiumDslConfig.ts} +0 -0
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import type { IStoredWorkspace } from '@codingame/monaco-vscode-configuration-service-override';
|
|
7
6
|
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
8
7
|
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
9
8
|
import type { MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
@@ -17,7 +16,7 @@ export const disableElement = (id: string, disabled: boolean) => {
|
|
|
17
16
|
|
|
18
17
|
export const createDefaultWorkspaceContent = (workspacePath: string) => {
|
|
19
18
|
return JSON.stringify(
|
|
20
|
-
|
|
19
|
+
{
|
|
21
20
|
folders: [
|
|
22
21
|
{
|
|
23
22
|
path: workspacePath
|
|
@@ -13,18 +13,11 @@ import { type IWebSocket, WebSocketMessageReader, WebSocketMessageWriter } from
|
|
|
13
13
|
import { createConnection, createServerProcess, forward } from 'vscode-ws-jsonrpc/server';
|
|
14
14
|
import { Message, InitializeRequest, type InitializeParams, type RequestMessage, type ResponseMessage } from 'vscode-languageserver-protocol';
|
|
15
15
|
|
|
16
|
-
export enum LanguageName {
|
|
17
|
-
/** https://nodejs.org/api/cli.html */
|
|
18
|
-
node = 'node',
|
|
19
|
-
/** https://docs.oracle.com/en/java/javase/21/docs/specs/man/java.html */
|
|
20
|
-
java = 'java'
|
|
21
|
-
}
|
|
22
|
-
|
|
23
16
|
export interface LanguageServerRunConfig {
|
|
24
17
|
serverName: string;
|
|
25
18
|
pathName: string;
|
|
26
19
|
serverPort: number;
|
|
27
|
-
runCommand:
|
|
20
|
+
runCommand: string;
|
|
28
21
|
runCommandArgs: string[];
|
|
29
22
|
wsServerOptions: ServerOptions,
|
|
30
23
|
spawnOptions?: cp.SpawnOptions;
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import { RegisteredMemoryFile } from '@codingame/monaco-vscode-files-service-override';
|
|
7
|
-
import type { HtmlContainerConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
8
7
|
import { Uri } from 'vscode';
|
|
9
8
|
|
|
10
9
|
export type FileDefinition = {
|
|
@@ -27,7 +26,7 @@ export type ConfigParams = {
|
|
|
27
26
|
homeDir: string;
|
|
28
27
|
workspaceRoot: string;
|
|
29
28
|
workspaceFile: Uri;
|
|
30
|
-
htmlContainer:
|
|
29
|
+
htmlContainer: HTMLElement;
|
|
31
30
|
protocol: 'ws' | 'wss';
|
|
32
31
|
hostname: string;
|
|
33
32
|
port: number;
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import { runLanguageServer } from '../../common/node/language-server-runner.js';
|
|
7
|
-
import { LanguageName } from '../../common/node/server-commons.js';
|
|
8
7
|
import { eclipseJdtLsConfig } from '../config.js';
|
|
9
8
|
|
|
10
9
|
export const runEclipseJdtLs = () => {
|
|
@@ -12,7 +11,7 @@ export const runEclipseJdtLs = () => {
|
|
|
12
11
|
serverName: 'Eclipse JDT LS',
|
|
13
12
|
pathName: eclipseJdtLsConfig.path,
|
|
14
13
|
serverPort: eclipseJdtLsConfig.port,
|
|
15
|
-
runCommand:
|
|
14
|
+
runCommand: 'java',
|
|
16
15
|
runCommandArgs: [
|
|
17
16
|
'-Declipse.application=org.eclipse.jdt.ls.core.id1',
|
|
18
17
|
'-Dosgi.bundles.defaultStartLevel=4',
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
6
|
import { runLanguageServer } from '../../common/node/language-server-runner.js';
|
|
7
|
-
import { LanguageName } from '../../common/node/server-commons.js';
|
|
8
7
|
import { groovyConfig } from '../config.js';
|
|
9
8
|
|
|
10
9
|
export const runGroovyLanguageServer = () => {
|
|
@@ -12,7 +11,7 @@ export const runGroovyLanguageServer = () => {
|
|
|
12
11
|
serverName: 'GROOVY',
|
|
13
12
|
pathName: groovyConfig.path,
|
|
14
13
|
serverPort: groovyConfig.port,
|
|
15
|
-
runCommand:
|
|
14
|
+
runCommand: 'java',
|
|
16
15
|
runCommandArgs: [
|
|
17
16
|
'-jar',
|
|
18
17
|
`${groovyConfig.basePath}/lib/groovy-language-server-all.jar`
|
|
@@ -53,7 +53,7 @@ export const runClient = async () => {
|
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
const editorApp = new EditorApp(editorAppConfig);
|
|
56
|
-
await editorApp.start(
|
|
56
|
+
await editorApp.start(htmlContainer);
|
|
57
57
|
|
|
58
58
|
const languageClientConfig: LanguageClientConfig = {
|
|
59
59
|
languageId,
|
package/src/json/server/main.ts
CHANGED
|
@@ -3,19 +3,18 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import { resolve } from 'node:path';
|
|
7
6
|
import cors from 'cors';
|
|
8
|
-
|
|
9
|
-
import { runLanguageServer } from '../../common/node/language-server-runner.js';
|
|
10
|
-
import { LanguageName } from '../../common/node/server-commons.js';
|
|
11
7
|
import express from 'express';
|
|
8
|
+
import { resolve } from 'node:path';
|
|
9
|
+
import { runLanguageServer } from '../../common/node/language-server-runner.js';
|
|
10
|
+
|
|
12
11
|
export const runJsonServer = (baseDir: string, relativeDir: string) => {
|
|
13
12
|
const processRunPath = resolve(baseDir, relativeDir);
|
|
14
13
|
runLanguageServer({
|
|
15
14
|
serverName: 'JSON',
|
|
16
15
|
pathName: '/sampleServer',
|
|
17
16
|
serverPort: 30000,
|
|
18
|
-
runCommand:
|
|
17
|
+
runCommand: 'node',
|
|
19
18
|
runCommandArgs: [
|
|
20
19
|
processRunPath,
|
|
21
20
|
'--stdio'
|
|
@@ -7,7 +7,7 @@ import { LanguageClientWrapper } from 'monaco-languageclient/lcwrapper';
|
|
|
7
7
|
import { MonacoVscodeApiWrapper } from 'monaco-languageclient/vscodeApiWrapper';
|
|
8
8
|
import * as vscode from 'vscode';
|
|
9
9
|
import type { ExampleAppConfig } from '../../common/client/utils.js';
|
|
10
|
-
import { setupLangiumClientExtended } from './config/
|
|
10
|
+
import { setupLangiumClientExtended } from './config/langiumDslConfig.js';
|
|
11
11
|
|
|
12
12
|
export const runLangiumGrammarDsl = async () => {
|
|
13
13
|
try {
|
package/src/langium/statemachine/config/{wrapperStatemachineConfig.ts → statemachineConfig.ts}
RENAMED
|
@@ -9,7 +9,7 @@ import getLocalizationServiceOverride from '@codingame/monaco-vscode-localizatio
|
|
|
9
9
|
import { LogLevel } from '@codingame/monaco-vscode-api';
|
|
10
10
|
import { MessageTransports } from 'vscode-languageclient';
|
|
11
11
|
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscodeApiLocales';
|
|
12
|
-
import type {
|
|
12
|
+
import type { MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
13
13
|
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
14
14
|
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
15
15
|
import type { CodeContent, EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
@@ -25,7 +25,7 @@ export const createLangiumGlobalConfig = (params: {
|
|
|
25
25
|
worker: Worker,
|
|
26
26
|
messagePort?: MessagePort,
|
|
27
27
|
messageTransports?: MessageTransports,
|
|
28
|
-
htmlContainer
|
|
28
|
+
htmlContainer?: HTMLElement
|
|
29
29
|
}): ExampleAppConfig => {
|
|
30
30
|
const extensionFilesOrContents = new Map<string, string | URL>();
|
|
31
31
|
extensionFilesOrContents.set(`/${params.languageServerId}-statemachine-configuration.json`, statemachineLanguageConfig);
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
import { initLocaleLoader } from 'monaco-languageclient/vscodeApiLocales';
|
|
7
7
|
await initLocaleLoader();
|
|
8
8
|
|
|
9
|
-
const {
|
|
10
|
-
|
|
9
|
+
const { runStatemachine } = await import('./main.js');
|
|
10
|
+
runStatemachine();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/******************************************************************************
|
|
2
|
-
* This file was generated by langium-cli 4.
|
|
2
|
+
* This file was generated by langium-cli 4.1.0.
|
|
3
3
|
* DO NOT EDIT MANUALLY!
|
|
4
4
|
******************************************************************************/
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/******************************************************************************
|
|
2
|
-
* This file was generated by langium-cli 4.
|
|
2
|
+
* This file was generated by langium-cli 4.1.0.
|
|
3
3
|
* DO NOT EDIT MANUALLY!
|
|
4
4
|
******************************************************************************/
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/******************************************************************************
|
|
2
|
-
* This file was generated by langium-cli 4.
|
|
2
|
+
* This file was generated by langium-cli 4.1.0.
|
|
3
3
|
* DO NOT EDIT MANUALLY!
|
|
4
4
|
******************************************************************************/
|
|
5
5
|
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import React, { StrictMode,
|
|
6
|
+
import React, { StrictMode, useState } from 'react';
|
|
7
7
|
import ReactDOM from 'react-dom/client';
|
|
8
8
|
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
|
|
9
9
|
import type { TextContents } from 'monaco-languageclient/editorApp';
|
|
10
10
|
import { MonacoEditorReactComp } from '@typefox/monaco-editor-react';
|
|
11
|
-
import { createLangiumGlobalConfig } from './config/
|
|
11
|
+
import { createLangiumGlobalConfig } from './config/statemachineConfig.js';
|
|
12
12
|
import { loadStatemachineWorkerRegular } from './main.js';
|
|
13
13
|
import text from '../../../resources/langium/statemachine/example.statemachine?raw';
|
|
14
14
|
import { disableElement } from '../../common/client/utils.js';
|
|
15
15
|
|
|
16
|
-
export const runStatemachineReact = async () => {
|
|
16
|
+
export const runStatemachineReact = async (noControls: boolean) => {
|
|
17
17
|
const worker = loadStatemachineWorkerRegular();
|
|
18
18
|
const reader = new BrowserMessageReader(worker);
|
|
19
19
|
const writer = new BrowserMessageWriter(worker);
|
|
@@ -27,64 +27,60 @@ export const runStatemachineReact = async () => {
|
|
|
27
27
|
uri: '/workspace/example.statemachine'
|
|
28
28
|
},
|
|
29
29
|
worker,
|
|
30
|
-
messageTransports: { reader, writer }
|
|
31
|
-
htmlContainer: 'ReactPlaceholder'
|
|
30
|
+
messageTransports: { reader, writer }
|
|
32
31
|
});
|
|
33
32
|
const root = ReactDOM.createRoot(document.getElementById('react-root')!);
|
|
33
|
+
const App = () => {
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
37
|
-
disableElement('button-start', true);
|
|
38
|
-
disableElement('button-dispose', false);
|
|
39
|
-
|
|
40
|
-
const App = () => {
|
|
35
|
+
const [testState, setTestState] = useState<string>('');
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
const onTextChanged = (textChanges: TextContents) => {
|
|
38
|
+
console.log(`text: ${textChanges.modified}\ntextOriginal: ${textChanges.original}`);
|
|
39
|
+
setTestState(textChanges.modified as string);
|
|
40
|
+
};
|
|
44
41
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
return (
|
|
43
|
+
<>
|
|
44
|
+
<div>
|
|
45
|
+
<MonacoEditorReactComp
|
|
46
|
+
style={{ 'height': '50vh' }}
|
|
47
|
+
vscodeApiConfig={appConfig.vscodeApiConfig}
|
|
48
|
+
editorAppConfig={appConfig.editorAppConfig}
|
|
49
|
+
languageClientConfig={appConfig.languageClientConfig}
|
|
50
|
+
onTextChanged={onTextChanged}
|
|
51
|
+
/>
|
|
52
|
+
<b>Debug:</b><br />{testState}
|
|
53
|
+
</div>
|
|
54
|
+
</>
|
|
55
|
+
);
|
|
56
|
+
};
|
|
49
57
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
const renderApp = () => {
|
|
59
|
+
const strictMode = (document.getElementById('checkbox-strictmode')! as HTMLInputElement).checked;
|
|
60
|
+
if (strictMode) {
|
|
61
|
+
root.render(<StrictMode><App /></StrictMode>);
|
|
62
|
+
} else {
|
|
63
|
+
root.render(<App />);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
55
66
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
<b>Debug:</b><br />{testState}
|
|
70
|
-
</div>
|
|
71
|
-
</>
|
|
72
|
-
);
|
|
73
|
-
};
|
|
74
|
-
const strictMode = (document.getElementById('checkbox-strictmode')! as HTMLInputElement).checked;
|
|
75
|
-
if (strictMode) {
|
|
76
|
-
root.render(<StrictMode><App /></StrictMode>);
|
|
77
|
-
} else {
|
|
78
|
-
root.render(<App />);
|
|
79
|
-
}
|
|
80
|
-
disableElement('checkbox-strictmode', true);
|
|
81
|
-
});
|
|
82
|
-
document.querySelector('#button-dispose')?.addEventListener('click', () => {
|
|
83
|
-
disableElement('button-start', false);
|
|
84
|
-
disableElement('button-dispose', true);
|
|
67
|
+
try {
|
|
68
|
+
if (noControls) {
|
|
69
|
+
renderApp();
|
|
70
|
+
} else {
|
|
71
|
+
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
72
|
+
disableElement('button-start', true);
|
|
73
|
+
disableElement('button-dispose', false);
|
|
74
|
+
renderApp();
|
|
75
|
+
disableElement('checkbox-strictmode', true);
|
|
76
|
+
});
|
|
77
|
+
document.querySelector('#button-dispose')?.addEventListener('click', () => {
|
|
78
|
+
disableElement('button-start', false);
|
|
79
|
+
disableElement('button-dispose', true);
|
|
85
80
|
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
root.render([]);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
88
84
|
} catch (e) {
|
|
89
85
|
console.error(e);
|
|
90
86
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as vscode from 'vscode';
|
|
7
7
|
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js';
|
|
8
8
|
import { EditorApp } from 'monaco-languageclient/editorApp';
|
|
9
|
-
import { createLangiumGlobalConfig } from './config/
|
|
9
|
+
import { createLangiumGlobalConfig } from './config/statemachineConfig.js';
|
|
10
10
|
import workerUrl from './worker/statemachine-server?worker&url';
|
|
11
11
|
import workerPortUrl from './worker/statemachine-server-port?worker&url';
|
|
12
12
|
import text from '../../../resources/langium/statemachine/example.statemachine?raw';
|
|
@@ -46,6 +46,7 @@ const startEditor = async () => {
|
|
|
46
46
|
console.log('Received message from worker:', message);
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
+
const htmlContainer = document.getElementById('monaco-editor-root')!;
|
|
49
50
|
// the configuration does not contain any text content
|
|
50
51
|
const appConfig = createLangiumGlobalConfig({
|
|
51
52
|
languageServerId: 'first',
|
|
@@ -56,7 +57,7 @@ const startEditor = async () => {
|
|
|
56
57
|
worker: stateMachineWorkerPort,
|
|
57
58
|
messagePort: channel.port1,
|
|
58
59
|
messageTransports: { reader, writer },
|
|
59
|
-
htmlContainer
|
|
60
|
+
htmlContainer
|
|
60
61
|
});
|
|
61
62
|
editorApp = new EditorApp(appConfig.editorAppConfig);
|
|
62
63
|
|
|
@@ -69,7 +70,7 @@ const startEditor = async () => {
|
|
|
69
70
|
await lcWrapper.start();
|
|
70
71
|
|
|
71
72
|
// run editorApp
|
|
72
|
-
await editorApp.start(
|
|
73
|
+
await editorApp.start(htmlContainer);
|
|
73
74
|
|
|
74
75
|
editorApp.updateCodeResources({
|
|
75
76
|
modified: {
|
|
@@ -119,7 +120,7 @@ const disposeEditor = async () => {
|
|
|
119
120
|
console.log(editorApp2?.reportStatus().join('\n'));
|
|
120
121
|
};
|
|
121
122
|
|
|
122
|
-
export const
|
|
123
|
+
export const runStatemachine = async () => {
|
|
123
124
|
try {
|
|
124
125
|
document.querySelector('#button-start')?.addEventListener('click', startEditor);
|
|
125
126
|
document.querySelector('#button-dispose')?.addEventListener('click', disposeEditor);
|
|
@@ -33,11 +33,12 @@ print("Hello Moon!")
|
|
|
33
33
|
let currentText = textJson;
|
|
34
34
|
let currenFileExt = 'json';
|
|
35
35
|
|
|
36
|
+
const htmlContainer = document.getElementById('monaco-editor-root')!;
|
|
36
37
|
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
37
38
|
$type: 'extended',
|
|
38
39
|
viewsConfig: {
|
|
39
40
|
$type: 'EditorService',
|
|
40
|
-
htmlContainer
|
|
41
|
+
htmlContainer
|
|
41
42
|
},
|
|
42
43
|
logLevel: LogLevel.Debug,
|
|
43
44
|
serviceOverrides: {
|
|
@@ -82,7 +83,7 @@ print("Hello Moon!")
|
|
|
82
83
|
disableElement('button-start', true);
|
|
83
84
|
disableElement('button-flip', false);
|
|
84
85
|
|
|
85
|
-
await editorApp.start(
|
|
86
|
+
await editorApp.start(htmlContainer);
|
|
86
87
|
if (editorAppConfig.codeResources?.modified !== undefined) {
|
|
87
88
|
editorAppConfig.codeResources.modified.text = currentText;
|
|
88
89
|
editorAppConfig.codeResources.modified.uri = `/workspace/example.${currenFileExt}`;
|
|
@@ -25,7 +25,7 @@ import { createUrl } from 'monaco-languageclient/common';
|
|
|
25
25
|
import type { EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
26
26
|
import type { LanguageClientConfig } from 'monaco-languageclient/lcwrapper';
|
|
27
27
|
import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscodeApiLocales';
|
|
28
|
-
import { defaultHtmlAugmentationInstructions, defaultViewsInit, type
|
|
28
|
+
import { defaultHtmlAugmentationInstructions, defaultViewsInit, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
29
29
|
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
30
30
|
import * as vscode from 'vscode';
|
|
31
31
|
import type { BaseLanguageClient } from 'vscode-languageclient/browser.js';
|
|
@@ -37,7 +37,7 @@ import { createDefaultWorkspaceContent } from '../../common/client/utils.js';
|
|
|
37
37
|
import { provideDebuggerExtensionConfig } from '../../debugger/client/debugger.js';
|
|
38
38
|
import { createDebugLaunchConfigFile, type ConfigParams, type FileDefinition } from '../../debugger/common/definitions.js';
|
|
39
39
|
|
|
40
|
-
export const createDefaultConfigParams = (homeDir: string, htmlContainer:
|
|
40
|
+
export const createDefaultConfigParams = (homeDir: string, htmlContainer: HTMLElement): ConfigParams => {
|
|
41
41
|
const files = new Map<string, FileDefinition>();
|
|
42
42
|
const workspaceRoot = `${homeDir}/workspace`;
|
|
43
43
|
const configParams: ConfigParams = {
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License. See LICENSE in the package root for license information.
|
|
4
4
|
* ------------------------------------------------------------------------------------------ */
|
|
5
5
|
|
|
6
|
-
import { resolve } from 'node:path';
|
|
7
6
|
import { IncomingMessage } from 'node:http';
|
|
7
|
+
import { resolve } from 'node:path';
|
|
8
8
|
import { runLanguageServer } from '../../common/node/language-server-runner.js';
|
|
9
|
-
import { LanguageName } from '../../common/node/server-commons.js';
|
|
10
9
|
|
|
11
10
|
export const runPythonServer = (baseDir: string, relativeDir: string) => {
|
|
12
11
|
const processRunPath = resolve(baseDir, relativeDir);
|
|
@@ -14,7 +13,7 @@ export const runPythonServer = (baseDir: string, relativeDir: string) => {
|
|
|
14
13
|
serverName: 'PYRIGHT',
|
|
15
14
|
pathName: '/pyright',
|
|
16
15
|
serverPort: 30001,
|
|
17
|
-
runCommand:
|
|
16
|
+
runCommand: 'node',
|
|
18
17
|
runCommandArgs: [
|
|
19
18
|
processRunPath,
|
|
20
19
|
'--stdio'
|
|
@@ -0,0 +1,196 @@
|
|
|
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 { LogLevel } from '@codingame/monaco-vscode-api';
|
|
7
|
+
import { InMemoryFileSystemProvider, registerFileSystemOverlay, type IFileWriteOptions } from '@codingame/monaco-vscode-files-service-override';
|
|
8
|
+
import '@codingame/monaco-vscode-javascript-default-extension';
|
|
9
|
+
import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override';
|
|
10
|
+
import '@codingame/monaco-vscode-typescript-basics-default-extension';
|
|
11
|
+
import '@codingame/monaco-vscode-typescript-language-features-default-extension';
|
|
12
|
+
import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp';
|
|
13
|
+
import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
|
|
14
|
+
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
|
|
15
|
+
import * as vscode from 'vscode';
|
|
16
|
+
import { createDefaultWorkspaceContent, disableElement } from '../common/client/utils.js';
|
|
17
|
+
|
|
18
|
+
export const runTsWrapper = async () => {
|
|
19
|
+
disableElement('button-diff', true);
|
|
20
|
+
|
|
21
|
+
const code = `const takesString = (x: string) => {};
|
|
22
|
+
|
|
23
|
+
// you should see an error marker in the next line
|
|
24
|
+
takesString(0);`;
|
|
25
|
+
|
|
26
|
+
const codeOriginal = `const takesNumber = (x: number) => {};
|
|
27
|
+
|
|
28
|
+
// you should see an error marker in the next line
|
|
29
|
+
takesNumber(0);`;
|
|
30
|
+
|
|
31
|
+
const textEncoder = new TextEncoder();
|
|
32
|
+
const options: IFileWriteOptions = {
|
|
33
|
+
atomic: false,
|
|
34
|
+
unlock: false,
|
|
35
|
+
create: true,
|
|
36
|
+
overwrite: true
|
|
37
|
+
};
|
|
38
|
+
const workspaceUri = vscode.Uri.file('/workspace');
|
|
39
|
+
const workspaceFileUri = vscode.Uri.file('/workspace.code-workspace');
|
|
40
|
+
const codeUri = vscode.Uri.file('/workspace/hello.ts');
|
|
41
|
+
const codeOriginalUri = vscode.Uri.file('/workspace/goodbye.ts');
|
|
42
|
+
const fileSystemProvider = new InMemoryFileSystemProvider();
|
|
43
|
+
await fileSystemProvider.mkdir(workspaceUri);
|
|
44
|
+
await fileSystemProvider.writeFile(codeUri, textEncoder.encode(code), options);
|
|
45
|
+
await fileSystemProvider.writeFile(codeOriginalUri, textEncoder.encode(codeOriginal), options);
|
|
46
|
+
await fileSystemProvider.writeFile(workspaceFileUri, textEncoder.encode(createDefaultWorkspaceContent('/workspace')), options);
|
|
47
|
+
registerFileSystemOverlay(1, fileSystemProvider);
|
|
48
|
+
|
|
49
|
+
let currentOriginalCode = codeOriginal;
|
|
50
|
+
let currentOriginalCodeUri = codeOriginalUri;
|
|
51
|
+
let currentCode = code;
|
|
52
|
+
let currentCodeUri = codeUri;
|
|
53
|
+
let swapCode = false;
|
|
54
|
+
let diffEditor = false;
|
|
55
|
+
|
|
56
|
+
const htmlContainer = document.getElementById('monaco-editor-root')!;
|
|
57
|
+
const vscodeApiConfig: MonacoVscodeApiConfig = {
|
|
58
|
+
$type: 'extended',
|
|
59
|
+
viewsConfig: {
|
|
60
|
+
$type: 'EditorService',
|
|
61
|
+
htmlContainer
|
|
62
|
+
},
|
|
63
|
+
logLevel: LogLevel.Debug,
|
|
64
|
+
serviceOverrides: {
|
|
65
|
+
...getKeybindingsServiceOverride()
|
|
66
|
+
},
|
|
67
|
+
advanced: {
|
|
68
|
+
enableExtHostWorker: true,
|
|
69
|
+
},
|
|
70
|
+
userConfiguration: {
|
|
71
|
+
json: JSON.stringify({
|
|
72
|
+
'workbench.colorTheme': 'Default Dark Modern',
|
|
73
|
+
'editor.wordBasedSuggestions': 'off',
|
|
74
|
+
'typescript.tsserver.web.projectWideIntellisense.enabled': true,
|
|
75
|
+
'typescript.tsserver.web.projectWideIntellisense.suppressSemanticErrors': false,
|
|
76
|
+
'diffEditor.renderSideBySide': false,
|
|
77
|
+
'editor.guides.bracketPairsHorizontal': true,
|
|
78
|
+
'editor.experimental.asyncTokenization': true
|
|
79
|
+
})
|
|
80
|
+
},
|
|
81
|
+
workspaceConfig: {
|
|
82
|
+
enableWorkspaceTrust: true,
|
|
83
|
+
workspaceProvider: {
|
|
84
|
+
trusted: true,
|
|
85
|
+
async open() {
|
|
86
|
+
window.open(window.location.href);
|
|
87
|
+
return true;
|
|
88
|
+
},
|
|
89
|
+
workspace: {
|
|
90
|
+
workspaceUri: workspaceFileUri
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
monacoWorkerFactory: configureDefaultWorkerFactory
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// perform global monaco-vscode-api init
|
|
98
|
+
const apiWrapper = new MonacoVscodeApiWrapper(vscodeApiConfig);
|
|
99
|
+
await apiWrapper.start();
|
|
100
|
+
|
|
101
|
+
let editorApp: EditorApp | undefined = undefined;
|
|
102
|
+
|
|
103
|
+
const createEditorAppConfig = (useDiffEditor: boolean): EditorAppConfig => {
|
|
104
|
+
return {
|
|
105
|
+
codeResources: {
|
|
106
|
+
modified: {
|
|
107
|
+
text: currentCode,
|
|
108
|
+
uri: currentCodeUri.path
|
|
109
|
+
},
|
|
110
|
+
original: {
|
|
111
|
+
text: currentOriginalCode,
|
|
112
|
+
uri: currentOriginalCodeUri.path,
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
useDiffEditor: useDiffEditor
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const swapCurrentCode = () => {
|
|
120
|
+
swapCode = !swapCode;
|
|
121
|
+
if (swapCode) {
|
|
122
|
+
currentCode = codeOriginal;
|
|
123
|
+
currentCodeUri = codeOriginalUri;
|
|
124
|
+
currentOriginalCode = code;
|
|
125
|
+
currentOriginalCodeUri = codeUri;
|
|
126
|
+
} else {
|
|
127
|
+
currentCode = code;
|
|
128
|
+
currentCodeUri = codeUri;
|
|
129
|
+
currentOriginalCode = codeOriginal;
|
|
130
|
+
currentOriginalCodeUri = codeOriginalUri;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
const updateEditorCodeResources = async (editorApp: EditorApp) => {
|
|
135
|
+
await editorApp.updateCodeResources({
|
|
136
|
+
modified: {
|
|
137
|
+
text: currentCode,
|
|
138
|
+
uri: currentCodeUri.path
|
|
139
|
+
},
|
|
140
|
+
original: {
|
|
141
|
+
text: currentOriginalCode,
|
|
142
|
+
uri: currentOriginalCodeUri.path
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
try {
|
|
148
|
+
document.querySelector('#button-start')?.addEventListener('click', async () => {
|
|
149
|
+
disableElement('button-start', true);
|
|
150
|
+
disableElement('button-diff', false);
|
|
151
|
+
editorApp = new EditorApp(createEditorAppConfig(diffEditor));
|
|
152
|
+
await editorApp.start(htmlContainer);
|
|
153
|
+
|
|
154
|
+
await vscode.workspace.openTextDocument(codeUri);
|
|
155
|
+
await vscode.workspace.openTextDocument(codeOriginalUri);
|
|
156
|
+
|
|
157
|
+
vscode.commands.getCommands().then((x) => {
|
|
158
|
+
console.log(`Found ${x.length} commands`);
|
|
159
|
+
const finding = x.find((elem) => elem === 'actions.find');
|
|
160
|
+
console.log(`Found command: ${finding}`);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
editorApp.getEditor()?.focus();
|
|
164
|
+
await vscode.commands.executeCommand('actions.find');
|
|
165
|
+
|
|
166
|
+
await updateEditorCodeResources(editorApp);
|
|
167
|
+
});
|
|
168
|
+
document.querySelector('#button-swap-code')?.addEventListener('click', async () => {
|
|
169
|
+
swapCurrentCode();
|
|
170
|
+
|
|
171
|
+
if (editorApp !== undefined) {
|
|
172
|
+
await updateEditorCodeResources(editorApp);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
document.querySelector('#button-diff')?.addEventListener('click', async () => {
|
|
176
|
+
diffEditor = !diffEditor;
|
|
177
|
+
const editorAppConfig = createEditorAppConfig(diffEditor);
|
|
178
|
+
|
|
179
|
+
if (editorApp !== undefined) {
|
|
180
|
+
await editorApp.dispose();
|
|
181
|
+
}
|
|
182
|
+
editorApp = new EditorApp(editorAppConfig);
|
|
183
|
+
await editorApp.start(htmlContainer);
|
|
184
|
+
await updateEditorCodeResources(editorApp);
|
|
185
|
+
});
|
|
186
|
+
document.querySelector('#button-dispose')?.addEventListener('click', async () => {
|
|
187
|
+
disableElement('button-start', false);
|
|
188
|
+
disableElement('button-diff', true);
|
|
189
|
+
|
|
190
|
+
await editorApp?.dispose();
|
|
191
|
+
});
|
|
192
|
+
} catch (e) {
|
|
193
|
+
console.error(e);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
|
package/tsExtHost.html
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extendedConfig.d.ts","sourceRoot":"","sources":["../../../../src/langium/langium-dsl/config/extendedConfig.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAKxE,eAAO,MAAM,0BAA0B,QAAa,OAAO,CAAC,gBAAgB,CAqI3E,CAAC"}
|