Skip to content

Commit 15929af

Browse files
committed
Lifecycle adjustments
- Remove monacp-editor-wrapper. Create EditorApp in client - Move languageclient management from wrapper to client - move all tests from wrapper to client - client: proper separation of sub-exports, rename tools to common - monaco-vscode-api independent config and init - clean up and restructure src and test - Update vitest and other dependencies - Update examples - Unify json, eclipse.jdt and groovy example - react component: fix re-render and global init - expand react tests - LanguageClient handling with react component
1 parent 84f830c commit 15929af

File tree

115 files changed

+3487
-4037
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+3487
-4037
lines changed

.github/workflows/main.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ jobs:
2424

2525
- name: Volta
2626
uses: volta-cli/action@v4
27-
with:
28-
node-version: 20
2927

3028
- name: Use pnpm
3129
uses: pnpm/action-setup@v3

index.html

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ <h3>Langium</h3>
3636

3737
Langium Grammar DSL: <a href="./packages/examples/langium_extended.html">Extended Mode</a> - <a href="./packages/examples/langium_classic.html">Classic Mode</a>
3838
<br>
39-
<a href="./packages/examples/statemachine.html">Langium Statemachine Client & Language Server (Worker)</a>
39+
<a href="./packages/examples/statemachine.html">Langium Statemachine Client & Language Server (Worker)</a> (<a href="./packages/examples/react_statemachine.html">React Version</a>)<br>
4040
<br>
4141
Localizations:
4242
<a href="./packages/examples/statemachine.html?locale=cs">cs</a> -
@@ -58,7 +58,7 @@ <h3>Langium</h3>
5858
<h3>Python</h3>
5959
Please execute <b><code>npm run start:example:server:python</code></b> beforehand.<br>
6060
Debugger requires docker. Please execute <b><code>docker compose -f ./packages/examples/resources/debugger/docker-compose.yml up -d</code></b> beforehand.<br>
61-
<a href="./packages/examples/python.html">Python Language Client & Pyright Language Server (Web Socket)</a><br>
61+
<a href="./packages/examples/python.html">Python Language Client & Pyright Language Server (Web Socket)</a> (<a href="./packages/examples/react_python.html">React Version</a>)<br>
6262

6363
<h3>Java / Eclipse JDS LS</h3>
6464
Requires docker. Please execute <b><code>docker compose -f ./packages/examples/resources/eclipse.jdt.ls/docker-compose.yml up -d</code></b> beforehand:<br>
@@ -80,23 +80,12 @@ <h3>Multiple Languageclients</h3>
8080
<br>
8181

8282
<h3>Application Playground</h3>
83-
<a href="./packages/examples/appPlayground.html">Application Playground</a>
83+
<a href="./packages/examples/appPlayground.html">Application Playground</a> (<a href="./packages/examples/react_appPlayground.html">React Version</a>)
8484

8585
<h3>TypeScript</h3>
8686
<a href="./packages/examples/tsExtHost.html">TypeScript Extension Host Worker</a>
8787
<br>
8888

89-
<h2>Monaco Editor React</h2>
90-
Please execute <b><code>npm run start:example:server:python</code></b> beforehand.<br>
91-
Debugger requires docker. Please execute <b><code>docker compose -f ./packages/examples/resources/debugger/docker-compose.yml up -d</code></b> beforehand.<br>
92-
<a href="./packages/examples/react_appPlayground.html">React: Application Playground</a>
93-
<br>
94-
<a href="./packages/examples/react_statemachine.html">React: Langium Statemachine Language Client & Language Server (Worker)</a>
95-
<br><br>
96-
Please execute <b><code>npm run start:example:server:python</code></b> beforehand:<br>
97-
<a href="./packages/examples/react_python.html">React: Python Language Client & Language Server (Web Socket)</a>
98-
<br>
99-
10089
<h2>Verification</h2>
10190
<h3>Angular</h2>
10291
Please start <b><code>cd verify/angular && npm run verify</code></b> beforehand:<br>

package-lock.json

Lines changed: 28 additions & 55 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@
4747
"compile": "npm run compile --workspaces",
4848
"watch:clean": "tsc --build tsconfig.build.json --clean",
4949
"watch": "tsc --build tsconfig.build.json --watch --verbose",
50-
"watch:tsgo": "tsgo -p tsconfig.build.json --watch",
51-
"build:tsc": "tsc -p tsconfig.build.json --verbose",
52-
"build:tsgo": "tsgo -p tsconfig.build.json --verbose",
50+
"watch:tsgo": "tsgo --build tsconfig.build.json --watch --verbose",
51+
"build:tsc": "tsc --build tsconfig.build.json --verbose",
52+
"build:tsgo": "tsgo --build tsconfig.build.json --verbose",
5353
"lint": "eslint",
5454
"production:build": "npm run production:build --workspace packages/examples",
5555
"production:preview:build": "npm run production:preview:build --workspace packages/examples",
@@ -72,9 +72,9 @@
7272
"reset:chrome": "shx rm -fr ./.chrome",
7373
"reset:repo": "git clean -f -d -x --exclude=.chrome",
7474
"test": "npm run test:install && npm run test:direct",
75-
"test:direct": "vitest --config vitest.config.ts",
76-
"test:run": "npm run test:install && npm run test:direct:run",
77-
"test:direct:run": "vitest --config vitest.config.ts --run",
75+
"test:direct:watch": "vitest --config vitest.config.ts",
76+
"test:watch": "npm run test:install && npm run test:direct:watch",
77+
"test:direct": "vitest --config vitest.config.ts --run",
7878
"test:debug": "npm run test:playwright -- --inspect-brk=20222 --browser --no-file-parallelism",
7979
"test:install": "playwright install --with-deps chromium"
8080
},

packages/client/package.json

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,46 +24,60 @@
2424
"types": "./lib/index.d.ts",
2525
"default": "./lib/index.js"
2626
},
27-
"./tools": {
28-
"types": "./lib/tools/index.d.ts",
29-
"default": "./lib/tools/index.js"
27+
"./common": {
28+
"types": "./lib/common/index.d.ts",
29+
"default": "./lib/common/index.js"
3030
},
31-
"./vscode/services": {
31+
"./vscodeApiWrapper": {
3232
"types": "./lib/vscode/index.d.ts",
3333
"default": "./lib/vscode/index.js"
3434
},
35+
"./vscodeApiLocales": {
36+
"types": "./lib/vscode/locales.d.ts",
37+
"default": "./lib/vscode/locales.js"
38+
},
3539
"./fs": {
3640
"types": "./lib/fs/index.d.ts",
3741
"default": "./lib/fs/index.js"
3842
},
3943
"./workerFactory": {
40-
"types": "./lib/workerFactory.d.ts",
41-
"default": "./lib/workerFactory.js"
44+
"types": "./lib/worker/index.d.ts",
45+
"default": "./lib/worker/index.js"
46+
},
47+
"./lcwrapper": {
48+
"types": "./lib/wrapper/index.d.ts",
49+
"default": "./lib/wrapper/index.js"
4250
},
43-
"./wrapper": {
44-
"types": "./lib/languageClientWrapper.d.ts",
45-
"default": "./lib/languageClientWrapper.js"
51+
"./editorApp": {
52+
"types": "./lib/editorApp/index.d.ts",
53+
"default": "./lib/editorApp/index.js"
4654
}
4755
},
4856
"typesVersions": {
4957
"*": {
5058
".": [
5159
"lib/index.d.ts"
5260
],
53-
"tools": [
54-
"lib/tools/index"
61+
"common": [
62+
"lib/common/index"
5563
],
56-
"vscode/services": [
64+
"vscodeApiWrapper": [
5765
"lib/vscode/index"
5866
],
67+
"vscodeApiLocales": [
68+
"lib/vscode/locales"
69+
],
5970
"fs": [
6071
"lib/fs/index"
6172
],
6273
"workerFactory": [
63-
"lib/workerFactory"
74+
"lib/worker/index"
6475
],
65-
"wrapper": [
66-
"lib/languageClientWrapper"
76+
"lcwrapper": [
77+
"lib/lrapper/index"
78+
],
79+
"editorApp": [
80+
"lib/editorApp/index"
6781
]
6882
}
6983
},
@@ -90,13 +104,40 @@
90104
"@codingame/monaco-vscode-extensions-service-override": "~18.2.0",
91105
"@codingame/monaco-vscode-extension-api": "~18.2.0",
92106
"@codingame/monaco-vscode-languages-service-override": "~18.2.0",
107+
"@codingame/monaco-vscode-language-pack-cs": "~18.2.0",
108+
"@codingame/monaco-vscode-language-pack-de": "~18.2.0",
109+
"@codingame/monaco-vscode-language-pack-es": "~18.2.0",
110+
"@codingame/monaco-vscode-language-pack-fr": "~18.2.0",
111+
"@codingame/monaco-vscode-language-pack-it": "~18.2.0",
112+
"@codingame/monaco-vscode-language-pack-ja": "~18.2.0",
113+
"@codingame/monaco-vscode-language-pack-ko": "~18.2.0",
114+
"@codingame/monaco-vscode-language-pack-pl": "~18.2.0",
115+
"@codingame/monaco-vscode-language-pack-pt-br": "~18.2.0",
116+
"@codingame/monaco-vscode-language-pack-qps-ploc": "~18.2.0",
117+
"@codingame/monaco-vscode-language-pack-ru": "~18.2.0",
118+
"@codingame/monaco-vscode-language-pack-tr": "~18.2.0",
119+
"@codingame/monaco-vscode-language-pack-zh-hans": "~18.2.0",
120+
"@codingame/monaco-vscode-language-pack-zh-hant": "~18.2.0",
93121
"@codingame/monaco-vscode-localization-service-override": "~18.2.0",
94122
"@codingame/monaco-vscode-log-service-override": "~18.2.0",
95123
"@codingame/monaco-vscode-model-service-override": "~18.2.0",
96-
"vscode": "npm:@codingame/monaco-vscode-extension-api@~18.2.0",
124+
"@codingame/monaco-vscode-monarch-service-override": "~18.2.0",
125+
"@codingame/monaco-vscode-textmate-service-override": "~18.2.0",
126+
"@codingame/monaco-vscode-theme-defaults-default-extension": "~18.2.0",
127+
"@codingame/monaco-vscode-theme-service-override": "~18.2.0",
128+
"@codingame/monaco-vscode-views-service-override": "~18.2.0",
129+
"@codingame/monaco-vscode-workbench-service-override": "~18.2.0",
97130
"vscode-languageclient": "~9.0.1",
131+
"vscode-languageserver-protocol": "~3.17.5",
98132
"vscode-ws-jsonrpc": "~3.4.0"
99133
},
134+
"devDependencies": {
135+
"@codingame/monaco-vscode-standalone-languages": "~18.2.0",
136+
"@codingame/monaco-vscode-standalone-css-language-features": "~18.2.0",
137+
"@codingame/monaco-vscode-standalone-html-language-features": "~18.2.0",
138+
"@codingame/monaco-vscode-standalone-json-language-features": "~18.2.0",
139+
"@codingame/monaco-vscode-standalone-typescript-language-features": "~18.2.0"
140+
},
100141
"scripts": {
101142
"clean": "shx rm -fr ./lib *.tsbuildinfo",
102143
"compile": "tsc --build tsconfig.src.json",

packages/client/src/client.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

packages/client/src/commonTypes.ts renamed to packages/client/src/common/commonTypes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6-
import type { MonacoLanguageClient } from './client.js';
6+
import { BaseLanguageClient } from 'vscode-languageclient/browser.js';
77

88
export type ConnectionConfigOptions = WebSocketConfigOptionsDirect | WebSocketConfigOptionsParams | WebSocketConfigOptionsUrl | WorkerConfigOptionsParams | WorkerConfigOptionsDirect;
99

1010
export interface WebSocketCallOptions {
1111
/** Adds handle on languageClient */
12-
onCall: (languageClient?: MonacoLanguageClient) => void;
12+
onCall: (languageClient?: BaseLanguageClient) => void;
1313
/** Reports Status Of Language Client */
1414
reportStatus?: boolean;
1515
}

packages/client/src/tools/index.ts renamed to packages/client/src/common/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6+
export * from './commonTypes.js';
67
export * from './logging.js';
78
export * from './utils.js';
File renamed without changes.

packages/client/src/tools/utils.ts renamed to packages/client/src/common/utils.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6-
import type { WebSocketUrlParams, WebSocketUrlString } from 'monaco-languageclient';
6+
import type { WebSocketUrlParams, WebSocketUrlString } from './commonTypes.js';
77

88
export const createUrl = (config: WebSocketUrlParams | WebSocketUrlString) => {
99
let buildUrl = '';
@@ -37,3 +37,18 @@ export const createUrl = (config: WebSocketUrlParams | WebSocketUrlString) => {
3737
}
3838
return buildUrl;
3939
};
40+
41+
export const verifyUrlOrCreateDataUrl = (input: string | URL) => {
42+
if (input instanceof URL) {
43+
return input.href;
44+
} else {
45+
const bytes = new TextEncoder().encode(input);
46+
const binString = Array.from(bytes, (b) => String.fromCodePoint(b)).join('');
47+
const base64 = btoa(binString);
48+
return new URL(`data:text/plain;base64,${base64}`).href;
49+
}
50+
};
51+
52+
export const delayExecution = (ms: number) => {
53+
return new Promise((resolve) => setTimeout(resolve, ms));
54+
};

0 commit comments

Comments
 (0)