Skip to content

Commit 897a214

Browse files
committed
Update to monaco-vscode-api 16.0.2, improve react component restart behaviour
1 parent 3c0404c commit 897a214

File tree

22 files changed

+1747
-1674
lines changed

22 files changed

+1747
-1674
lines changed

.github/workflows/main.yml

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ jobs:
2222

2323
- name: Volta
2424
uses: volta-cli/action@v4
25+
with:
26+
node-version: 20
2527

2628
- name: Use pnpm
2729
uses: pnpm/action-setup@v3

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -256,12 +256,12 @@ Whenever you used `monaco-editor`/`@codingame/monaco-vscode-editor-api` `vscode`
256256
If you use pnpm or yarn, you have to add `vscode` / `@codingame/monaco-vscode-api` as direct dependency, otherwise the installation will fail:
257257

258258
```json
259-
"vscode": "npm:@codingame/monaco-vscode-extension-api@~15.0.3"
259+
"vscode": "npm:@codingame/monaco-vscode-extension-api@~16.0.2"
260260
```
261261

262262
### @codingame/monaco-vscode-editor-api / monaco-editor usage
263263

264-
When you use the libraries from this project you are no longer are required to proxy `monaco-editor` like `"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~15.0.3"` in you `package.json`. You can directly use it like this:
264+
When you use the libraries from this project you are no longer are required to proxy `monaco-editor` like `"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~16.0.2"` in you `package.json`. You can directly use it like this:
265265

266266
```js
267267
import * as monaco from '@codingame/monaco-vscode-editor-api';
@@ -271,7 +271,7 @@ If your dependency stack already contains a reference `monaco-editor` you must e
271271

272272
```json
273273
"overrides": {
274-
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~15.0.3"
274+
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~16.0.2"
275275
}
276276
```
277277

package-lock.json

+1,420-1,490
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+12-12
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,31 @@
1313
},
1414
"devDependencies": {
1515
"@codingame/esbuild-import-meta-url-plugin": "~1.0.3",
16-
"@codingame/monaco-vscode-rollup-vsix-plugin": "~15.0.3",
17-
"@eslint/eslintrc": "~3.3.0",
18-
"@eslint/js": "~9.23.0",
16+
"@codingame/monaco-vscode-rollup-vsix-plugin": "~16.0.2",
17+
"@eslint/eslintrc": "~3.3.1",
18+
"@eslint/js": "~9.24.0",
1919
"@stylistic/eslint-plugin": "~4.2.0",
20-
"@testing-library/react": "~16.2.0",
21-
"@types/node": "~22.13.17",
22-
"@types/react": "~19.1.0",
23-
"@types/react-dom": "~19.1.0",
24-
"@typescript-eslint/eslint-plugin": "~8.29.0",
25-
"@typescript-eslint/parser": "~8.29.0",
20+
"@testing-library/react": "~16.3.0",
21+
"@types/node": "~22.14.0",
22+
"@types/react": "~19.1.1",
23+
"@types/react-dom": "~19.1.2",
24+
"@typescript-eslint/eslint-plugin": "~8.29.1",
25+
"@typescript-eslint/parser": "~8.29.1",
2626
"@vitejs/plugin-react": "~4.3.4",
2727
"@vitest/browser": "~3.1.1",
2828
"editorconfig": "~2.0.1",
2929
"esbuild": "~0.25.2",
30-
"eslint": "~9.23.0",
30+
"eslint": "~9.24.0",
3131
"eslint-plugin-header": "~3.1.1",
3232
"eslint-plugin-import": "~2.31.0",
3333
"eslint-plugin-unused-imports": "~4.1.4",
3434
"globals": "~16.0.0",
3535
"http-server": "~14.1.1",
3636
"minimatch": "~10.0.1",
3737
"playwright": "~1.51.1",
38-
"typescript": "~5.8.2",
38+
"typescript": "~5.8.3",
3939
"tsx": "~4.19.3",
40-
"vite": "~6.2.4",
40+
"vite": "~6.2.6",
4141
"vitest": "~3.1.1"
4242
},
4343
"scripts": {

packages/client/package.json

+11-11
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,17 @@
7676
"LICENSE"
7777
],
7878
"dependencies": {
79-
"@codingame/monaco-vscode-api": "~15.0.3",
80-
"@codingame/monaco-vscode-configuration-service-override": "~15.0.3",
81-
"@codingame/monaco-vscode-editor-api": "~15.0.3",
82-
"@codingame/monaco-vscode-editor-service-override": "~15.0.3",
83-
"@codingame/monaco-vscode-extensions-service-override": "~15.0.3",
84-
"@codingame/monaco-vscode-extension-api": "~15.0.3",
85-
"@codingame/monaco-vscode-languages-service-override": "~15.0.3",
86-
"@codingame/monaco-vscode-localization-service-override": "~15.0.3",
87-
"@codingame/monaco-vscode-log-service-override": "~15.0.3",
88-
"@codingame/monaco-vscode-model-service-override": "~15.0.3",
89-
"vscode": "npm:@codingame/monaco-vscode-extension-api@~15.0.3",
79+
"@codingame/monaco-vscode-api": "~16.0.2",
80+
"@codingame/monaco-vscode-configuration-service-override": "~16.0.2",
81+
"@codingame/monaco-vscode-editor-api": "~16.0.2",
82+
"@codingame/monaco-vscode-editor-service-override": "~16.0.2",
83+
"@codingame/monaco-vscode-extensions-service-override": "~16.0.2",
84+
"@codingame/monaco-vscode-extension-api": "~16.0.2",
85+
"@codingame/monaco-vscode-languages-service-override": "~16.0.2",
86+
"@codingame/monaco-vscode-localization-service-override": "~16.0.2",
87+
"@codingame/monaco-vscode-log-service-override": "~16.0.2",
88+
"@codingame/monaco-vscode-model-service-override": "~16.0.2",
89+
"vscode": "npm:@codingame/monaco-vscode-extension-api@~16.0.2",
9090
"vscode-languageclient": "~9.0.1"
9191
},
9292
"scripts": {

packages/examples/package.json

+46-35
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@
3535
"./python-client": {
3636
"types": "./dist/python/client/main.d.ts",
3737
"default": "./dist/python/client/main.js"
38+
},
39+
"./worker/langium": {
40+
"types": "./dist/langium/langium-dsl/worker/langium-server.d.ts",
41+
"default": "./dist/langium/langium-dsl/worker/langium-server.js"
42+
},
43+
"./worker/statemachine": {
44+
"types": "./dist/langium/statemachine/worker/statemachine-server.d.ts",
45+
"default": "./dist/langium/statemachine/worker/statemachine-server.js"
3846
}
3947
},
4048
"typesVersions": {
@@ -48,8 +56,11 @@
4856
"json-client": [
4957
"dist/json/client/wrapperWs"
5058
],
51-
"python-client": [
52-
"dist/python/client/main"
59+
"worker/langium": [
60+
"dist/langium/langium-dsl/worker/langium-server"
61+
],
62+
"worker/statemachine": [
63+
"dist/langium/statemachine/worker/statemachine-server"
5364
]
5465
}
5566
},
@@ -71,48 +82,48 @@
7182
"LICENSE"
7283
],
7384
"dependencies": {
74-
"@codingame/monaco-vscode-configuration-service-override": "~15.0.3",
75-
"@codingame/monaco-vscode-cpp-default-extension": "~15.0.3",
76-
"@codingame/monaco-vscode-debug-service-override": "~15.0.3",
77-
"@codingame/monaco-vscode-editor-api": "~15.0.3",
78-
"@codingame/monaco-vscode-environment-service-override": "~15.0.3",
79-
"@codingame/monaco-vscode-explorer-service-override": "~15.0.3",
80-
"@codingame/monaco-vscode-files-service-override": "~15.0.3",
81-
"@codingame/monaco-vscode-groovy-default-extension": "~15.0.3",
82-
"@codingame/monaco-vscode-java-default-extension": "~15.0.3",
83-
"@codingame/monaco-vscode-javascript-default-extension": "~15.0.3",
84-
"@codingame/monaco-vscode-json-default-extension": "~15.0.3",
85-
"@codingame/monaco-vscode-keybindings-service-override": "~15.0.3",
86-
"@codingame/monaco-vscode-lifecycle-service-override": "~15.0.3",
87-
"@codingame/monaco-vscode-localization-service-override": "~15.0.3",
88-
"@codingame/monaco-vscode-preferences-service-override": "~15.0.3",
89-
"@codingame/monaco-vscode-python-default-extension": "~15.0.3",
90-
"@codingame/monaco-vscode-remote-agent-service-override": "~15.0.3",
91-
"@codingame/monaco-vscode-search-result-default-extension": "~15.0.3",
92-
"@codingame/monaco-vscode-search-service-override": "~15.0.3",
93-
"@codingame/monaco-vscode-secret-storage-service-override": "~15.0.3",
94-
"@codingame/monaco-vscode-standalone-json-language-features": "~15.0.3",
95-
"@codingame/monaco-vscode-standalone-typescript-language-features": "~15.0.3",
96-
"@codingame/monaco-vscode-testing-service-override": "~15.0.3",
97-
"@codingame/monaco-vscode-storage-service-override": "~15.0.3",
98-
"@codingame/monaco-vscode-textmate-service-override": "~15.0.3",
99-
"@codingame/monaco-vscode-theme-defaults-default-extension": "~15.0.3",
100-
"@codingame/monaco-vscode-theme-service-override": "~15.0.3",
101-
"@codingame/monaco-vscode-typescript-basics-default-extension": "~15.0.3",
102-
"@codingame/monaco-vscode-typescript-language-features-default-extension": "~15.0.3",
103-
"@codingame/monaco-vscode-views-service-override": "~15.0.3",
85+
"@codingame/monaco-vscode-configuration-service-override": "~16.0.2",
86+
"@codingame/monaco-vscode-cpp-default-extension": "~16.0.2",
87+
"@codingame/monaco-vscode-debug-service-override": "~16.0.2",
88+
"@codingame/monaco-vscode-editor-api": "~16.0.2",
89+
"@codingame/monaco-vscode-environment-service-override": "~16.0.2",
90+
"@codingame/monaco-vscode-explorer-service-override": "~16.0.2",
91+
"@codingame/monaco-vscode-files-service-override": "~16.0.2",
92+
"@codingame/monaco-vscode-groovy-default-extension": "~16.0.2",
93+
"@codingame/monaco-vscode-java-default-extension": "~16.0.2",
94+
"@codingame/monaco-vscode-javascript-default-extension": "~16.0.2",
95+
"@codingame/monaco-vscode-json-default-extension": "~16.0.2",
96+
"@codingame/monaco-vscode-keybindings-service-override": "~16.0.2",
97+
"@codingame/monaco-vscode-lifecycle-service-override": "~16.0.2",
98+
"@codingame/monaco-vscode-localization-service-override": "~16.0.2",
99+
"@codingame/monaco-vscode-preferences-service-override": "~16.0.2",
100+
"@codingame/monaco-vscode-python-default-extension": "~16.0.2",
101+
"@codingame/monaco-vscode-remote-agent-service-override": "~16.0.2",
102+
"@codingame/monaco-vscode-search-result-default-extension": "~16.0.2",
103+
"@codingame/monaco-vscode-search-service-override": "~16.0.2",
104+
"@codingame/monaco-vscode-secret-storage-service-override": "~16.0.2",
105+
"@codingame/monaco-vscode-standalone-json-language-features": "~16.0.2",
106+
"@codingame/monaco-vscode-standalone-typescript-language-features": "~16.0.2",
107+
"@codingame/monaco-vscode-testing-service-override": "~16.0.2",
108+
"@codingame/monaco-vscode-storage-service-override": "~16.0.2",
109+
"@codingame/monaco-vscode-textmate-service-override": "~16.0.2",
110+
"@codingame/monaco-vscode-theme-defaults-default-extension": "~16.0.2",
111+
"@codingame/monaco-vscode-theme-service-override": "~16.0.2",
112+
"@codingame/monaco-vscode-typescript-basics-default-extension": "~16.0.2",
113+
"@codingame/monaco-vscode-typescript-language-features-default-extension": "~16.0.2",
114+
"@codingame/monaco-vscode-views-service-override": "~16.0.2",
104115
"@typefox/monaco-editor-react": "~6.7.0-next.0",
105116
"cors": "^2.8.5",
106117
"express": "~5.1.0",
107118
"jszip": "~3.10.1",
108119
"langium": "~3.4.0",
109120
"monaco-editor-wrapper": "~6.7.0-next.0",
110121
"monaco-languageclient": "~9.6.0-next.0",
111-
"pyright": "~1.1.398",
122+
"pyright": "~1.1.399",
112123
"react": "~19.1.0",
113124
"react-dom": "~19.1.0",
114125
"request-light": "~0.8.0",
115-
"vscode": "npm:@codingame/monaco-vscode-extension-api@~15.0.3",
126+
"vscode": "npm:@codingame/monaco-vscode-extension-api@~16.0.2",
116127
"vscode-json-languageservice": "~5.4.4",
117128
"vscode-languageclient": "~9.0.1",
118129
"vscode-languageserver": "~9.0.1",
@@ -129,7 +140,7 @@
129140
"langium-cli": "~3.4.0",
130141
"mini-coi": "~0.4.2",
131142
"ts-node": "~10.9.1",
132-
"vite-plugin-static-copy": "~2.3.0",
143+
"vite-plugin-static-copy": "~2.3.1",
133144
"vscode-languageserver-types": "~3.17.5"
134145
},
135146
"scripts": {

packages/examples/src/langium/langium-dsl/config/extendedConfig.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ export const setupLangiumClientExtended = async (params: {
3535
'workbench.colorTheme': 'GitHub Dark High Contrast',
3636
'editor.guides.bracketPairsHorizontal': 'active',
3737
'editor.wordBasedSuggestions': 'off',
38-
'editor.experimental.asyncTokenization': true
38+
'editor.experimental.asyncTokenization': true,
39+
'vitest.disableWorkspaceWarning': true
3940
})
4041
}
4142
},

packages/examples/src/langium/langium-dsl/worker/langium-server.ts

+2
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,7 @@ const context = {
2424
} as unknown as DefaultSharedModuleContext;
2525
const { shared } = createLangiumGrammarServices(context);
2626

27+
console.log('Starting langium-dsl server...');
28+
2729
// Start the language server with the shared services
2830
startLanguageServer(shared);

packages/wrapper-react/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"npm": "10.9.2"
4747
},
4848
"dependencies": {
49-
"@codingame/monaco-vscode-editor-api": "~15.0.3",
49+
"@codingame/monaco-vscode-editor-api": "~16.0.2",
5050
"monaco-editor-wrapper": "~6.7.0-next.0",
5151
"react": ">=18.0.0 || <20.0.0"
5252
},

packages/wrapper-react/src/index.tsx

+12-23
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,21 @@ export const MonacoEditorReactComp: React.FC<MonacoEditorProps> = (props) => {
3131
onTextChangedRef.current = onTextChanged;
3232

3333
useEffect(() => {
34-
const disposeMonaco = async () => {
35-
try {
36-
await wrapperRef.current.dispose();
37-
} catch {
38-
// The language client may throw an error during disposal, but we want to continue anyway
39-
}
40-
};
41-
42-
const initMonaco = async () => {
43-
if (containerRef.current) {
44-
wrapperConfig.htmlContainer = containerRef.current;
45-
await wrapperRef.current.init(wrapperConfig);
46-
} else {
47-
throw new Error('No htmlContainer found! Aborting...');
48-
}
49-
};
5034

51-
const startMonaco = async () => {
35+
(async () => {
5236
if (containerRef.current) {
5337
try {
38+
wrapperConfig.htmlContainer = containerRef.current;
39+
if (wrapperRef.current.isInitializing() || wrapperRef.current.isStarting() || wrapperRef.current.isDisposing()) {
40+
await Promise.all([
41+
wrapperRef.current.getInitializingAwait(),
42+
wrapperRef.current.getStartingAwait(),
43+
wrapperRef.current.getDisposingAwait()
44+
]);
45+
}
46+
47+
await wrapperRef.current.init(wrapperConfig);
48+
5449
wrapperRef.current.registerTextChangedCallback((textChanges) => {
5550
if (onTextChangedRef.current !== undefined) {
5651
onTextChangedRef.current(textChanges);
@@ -68,12 +63,6 @@ export const MonacoEditorReactComp: React.FC<MonacoEditorProps> = (props) => {
6863
} else {
6964
throw new Error('No htmlContainer found! Aborting...');
7065
}
71-
};
72-
73-
(async () => {
74-
await disposeMonaco();
75-
await initMonaco();
76-
await startMonaco();
7766
})();
7867
}, [wrapperConfig]);
7968

packages/wrapper-react/test/helper.ts

+22-3
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
* Licensed under the MIT License. See LICENSE in the package root for license information.
44
* ------------------------------------------------------------------------------------------ */
55

6+
import { MessageTransports } from 'vscode-languageclient';
67
import { LogLevel } from '@codingame/monaco-vscode-api';
7-
import type { CodeResources, WrapperConfig } from 'monaco-editor-wrapper';
8+
import type { CodeResources, LanguageClientConfig, WrapperConfig } from 'monaco-editor-wrapper';
89
import { configureDefaultWorkerFactory } from 'monaco-editor-wrapper/workers/workerLoaders';
910

10-
export const createDefaultWrapperConfig = (codeResources: CodeResources): WrapperConfig => {
11+
export const createDefaultWrapperConfig = (codeResources: CodeResources, logLevel?: LogLevel): WrapperConfig => {
1112
return {
1213
$type: 'extended',
13-
logLevel: LogLevel.Debug,
14+
logLevel,
1415
vscodeApiConfig: {
1516
loadThemes: false
1617
},
@@ -20,3 +21,21 @@ export const createDefaultWrapperConfig = (codeResources: CodeResources): Wrappe
2021
}
2122
};
2223
};
24+
25+
export const createDefaultLcWorkerConfig = (worker: Worker, languageId: string,
26+
messageTransports?: MessageTransports): LanguageClientConfig => {
27+
return {
28+
name: 'test-worker-direct',
29+
clientOptions: {
30+
documentSelector: [languageId]
31+
},
32+
connection: {
33+
options: {
34+
$type: 'WorkerDirect',
35+
// create a web worker to pass to the wrapper
36+
worker
37+
},
38+
messageTransports
39+
}
40+
};
41+
};

0 commit comments

Comments
 (0)