diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 3c527d041..30970640e 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -28,6 +28,11 @@ jobs: run: | npm run report:versions + - name: Build + shell: bash + run: | + npm run build + - name: Execute verification shell: bash run: | diff --git a/package-lock.json b/package-lock.json index e4e574c1c..a9dc18b22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -633,7 +633,6 @@ "version": "35.0.0", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-css-language-features/-/monaco-vscode-standalone-css-language-features-35.0.0.tgz", "integrity": "sha512-hIGjkPMA436kXXnxAqrYUGE5M6y1w0fx0U7vSENvmCoBE0vSqfcESQ2xOqYI5ODraw01pNCHEnXRP7pzPrlPww==", - "dev": true, "license": "MIT", "dependencies": { "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@35.0.0", @@ -646,14 +645,12 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true, "license": "MIT" }, "node_modules/@codingame/monaco-vscode-standalone-html-language-features": { "version": "35.0.0", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-html-language-features/-/monaco-vscode-standalone-html-language-features-35.0.0.tgz", "integrity": "sha512-ygTqSKqnx2nqNiF9rMF5hdlY0MKgC4HqIZFHkndzV0E90n8fLfpgJCJ9SoXT2KDELNr2PrE1Tm1FrBWDWfUmuw==", - "dev": true, "license": "MIT", "dependencies": { "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@35.0.0", @@ -666,14 +663,12 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true, "license": "MIT" }, "node_modules/@codingame/monaco-vscode-standalone-json-language-features": { "version": "35.0.0", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-json-language-features/-/monaco-vscode-standalone-json-language-features-35.0.0.tgz", "integrity": "sha512-MJ0EyYLhtHiitBGAqOErY2I2qIZ/5olhJdfYLMKI/xqBP6g0yqg6be6J8jWZBUti3HOjh64AWglCiGu9ggZMXA==", - "dev": true, "license": "MIT", "dependencies": { "jsonc-parser": "3.3.1", @@ -688,7 +683,6 @@ "version": "5.3.11", "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.3.11.tgz", "integrity": "sha512-WYS72Ymria3dn8ZbjtBbt5K71m05wY1Q6hpXV5JxUT0q75Ts0ljLmnZJAVpx8DjPgYbFD+Z8KHpWh2laKLUCtQ==", - "dev": true, "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", @@ -702,21 +696,18 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true, "license": "MIT" }, "node_modules/@codingame/monaco-vscode-standalone-json-language-features/node_modules/vscode-uri": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", - "dev": true, "license": "MIT" }, "node_modules/@codingame/monaco-vscode-standalone-languages": { "version": "35.0.0", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-languages/-/monaco-vscode-standalone-languages-35.0.0.tgz", "integrity": "sha512-hgC7W8EwrJv4kcPjc7miSXh6JLwwi+OY4593nu8idwGPzo9tDQcQK5bLMaLwyaeRKKz6z3FFcEt0pNTfjHoLvA==", - "dev": true, "license": "MIT", "dependencies": { "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@35.0.0" @@ -726,7 +717,6 @@ "version": "35.0.0", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-typescript-language-features/-/monaco-vscode-standalone-typescript-language-features-35.0.0.tgz", "integrity": "sha512-ZRuHpRF1psivT+Wd2rMdIlFethQuwPjdib5mNJwE23eSYEd6now7EjmtzUbe59xRPmYtKwfFrNteE/zn0ZF3wg==", - "dev": true, "license": "MIT", "dependencies": { "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@35.0.0" @@ -6528,7 +6518,6 @@ "version": "35.0.0", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-api/-/monaco-vscode-editor-api-35.0.0.tgz", "integrity": "sha512-TGXI2Mgqaw0STd3JsMMDLgPREh8S3PLwM8M846azQ+DXeIC1nf3fZMUIsxKPAsnxnIV4aUfYTMMafgYzKOOimA==", - "dev": true, "license": "MIT", "dependencies": { "@codingame/monaco-vscode-api": "35.0.0" @@ -8274,7 +8263,6 @@ "version": "6.2.14", "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.2.14.tgz", "integrity": "sha512-5UPQ9Y1sUTnuMyaMBpO7LrBkqjhEJb5eAwdUlDp+Uez8lry+Tspnk3+3p2qWS4LlNsr4p3v9WkZxUf1ltgFpgw==", - "dev": true, "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", @@ -8287,14 +8275,12 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true, "license": "MIT" }, "node_modules/vscode-html-languageservice": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.2.0.tgz", "integrity": "sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==", - "dev": true, "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", @@ -8583,6 +8569,11 @@ "@codingame/monaco-vscode-search-result-default-extension": "^35.0.0", "@codingame/monaco-vscode-search-service-override": "^35.0.0", "@codingame/monaco-vscode-secret-storage-service-override": "^35.0.0", + "@codingame/monaco-vscode-standalone-css-language-features": "^35.0.0", + "@codingame/monaco-vscode-standalone-html-language-features": "^35.0.0", + "@codingame/monaco-vscode-standalone-json-language-features": "^35.0.0", + "@codingame/monaco-vscode-standalone-languages": "^35.0.0", + "@codingame/monaco-vscode-standalone-typescript-language-features": "^35.0.0", "@codingame/monaco-vscode-storage-service-override": "^35.0.0", "@codingame/monaco-vscode-testing-service-override": "^35.0.0", "@codingame/monaco-vscode-theme-defaults-default-extension": "^35.0.0", diff --git a/packages/client/src/worker/index.ts b/packages/client/src/worker/index.ts index 80592e480..e68751aef 100644 --- a/packages/client/src/worker/index.ts +++ b/packages/client/src/worker/index.ts @@ -3,6 +3,8 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ +// oxlint-disable typescript/no-redundant-type-constituents + import type { ILogger } from '@codingame/monaco-vscode-log-service-override'; import { getEnhancedMonacoEnvironment } from 'monaco-languageclient/vscodeApiWrapper'; @@ -18,26 +20,37 @@ export class Worker { export type WorkerLoader = (() => Worker) | undefined; +export type PossibleWorkerLabelsExtended = + | 'editorWorkerService' + | 'extensionHostWorkerMain' + | 'TextMateWorker' + | 'OutputLinkDetectionWorker' + | 'LanguageDetectionWorker' + | 'NotebookEditorWorker' + | 'LocalFileSearchWorker'; + +export type PossibleWorkerLabelsClassic = 'editorWorkerService' | 'css' | 'html' | 'json' | 'javascript' | 'typescript'; + export interface WorkerFactoryConfig { - workerLoaders?: Partial>; + workerLoaders?: Partial>; logger?: ILogger; } export const useWorkerFactory = (config: WorkerFactoryConfig) => { const envEnhanced = getEnhancedMonacoEnvironment(); - envEnhanced.getWorkerUrl = (workerId: string, label: string) => { + envEnhanced.getWorkerUrl = (workerId: string, label: PossibleWorkerLabelsExtended | PossibleWorkerLabelsClassic | string) => { config.logger?.info(`getWorkerUrl: workerId: ${workerId} label: ${label}`); return config.workerLoaders?.[label]?.().url.toString(); }; - envEnhanced.getWorkerOptions = (moduleId: string, label: string) => { + envEnhanced.getWorkerOptions = (moduleId: string, label: PossibleWorkerLabelsExtended | PossibleWorkerLabelsClassic | string) => { config.logger?.info(`getWorkerOptions: moduleId: ${moduleId} label: ${label}`); return config.workerLoaders?.[label]?.().options; }; }; -export const defineDefaultWorkerLoaders: () => Partial> = () => { +export const defineDefaultWorkerLoaders: () => Record = () => { const defaultEditorWorkerService = () => new Worker(new URL('@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker.js', import.meta.url), { type: 'module' }); const defaultExtensionHostWorkerMain = () => diff --git a/packages/client/test/support/helper-classic.ts b/packages/client/test/support/helper-classic.ts index 2b9ac9c87..52af79e2b 100644 --- a/packages/client/test/support/helper-classic.ts +++ b/packages/client/test/support/helper-classic.ts @@ -4,11 +4,11 @@ * ------------------------------------------------------------------------------------------ */ import type { ILogger } from '@codingame/monaco-vscode-log-service-override'; -import { useWorkerFactory, Worker, type WorkerLoader } from 'monaco-languageclient/workerFactory'; +import { useWorkerFactory, Worker, type PossibleWorkerLabelsClassic, type WorkerLoader } from 'monaco-languageclient/workerFactory'; -const workerResolver: Map) => void> = new Map(); -const workerPromises: Map> = new Map(); -export const createWorkerPromises = (keys: string[]) => { +const workerResolver: Map) => void> = new Map(); +const workerPromises: Map> = new Map(); +export const createWorkerPromises = (keys: PossibleWorkerLabelsClassic[]) => { workerResolver.clear(); workerPromises.clear(); for (const key of keys) { @@ -23,46 +23,49 @@ export const awaitWorkerPromises = () => { return Promise.all([...workerPromises.values()]); }; -const pushAndPrintLastWorker = (lastWorker: string) => { +const pushAndPrintLastWorker = (lastWorker: PossibleWorkerLabelsClassic) => { console.log(`Called: ${lastWorker}\n`); workerResolver.get(lastWorker)?.(); }; -const defineClassicWorkers: () => Partial> = () => { +const defineClassicWorkers: () => Partial> = (): Record< + PossibleWorkerLabelsClassic, + WorkerLoader +> => { const editorWorkerServiceWorker = () => { const workerUrl = new URL('@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker.js', import.meta.url); const worker = new Worker(workerUrl, { type: 'module' }); - pushAndPrintLastWorker('editorWorker'); + pushAndPrintLastWorker('editorWorkerService'); return worker; }; const cssWorker = () => { const workerUrl = new URL('@codingame/monaco-vscode-standalone-css-language-features', import.meta.url); const worker = new Worker(workerUrl, { type: 'module' }); - pushAndPrintLastWorker('cssWorker'); + pushAndPrintLastWorker('css'); return worker; }; const jsonWorker = () => { const workerUrl = new URL('@codingame/monaco-vscode-standalone-json-language-features', import.meta.url); const worker = new Worker(workerUrl, { type: 'module' }); - pushAndPrintLastWorker('jsonWorker'); + pushAndPrintLastWorker('json'); return worker; }; const htmlWorker = () => { const workerUrl = new URL('@codingame/monaco-vscode-standalone-html-language-features', import.meta.url); const worker = new Worker(workerUrl, { type: 'module' }); - pushAndPrintLastWorker('htmlWorker'); + pushAndPrintLastWorker('html'); return worker; }; const tsWorker = () => { const workerUrl = new URL('@codingame/monaco-vscode-standalone-typescript-language-features', import.meta.url); const worker = new Worker(workerUrl, { type: 'module' }); - pushAndPrintLastWorker('tsWorker'); + pushAndPrintLastWorker('typescript'); return worker; }; diff --git a/packages/client/test/worker/workerFactory.test.ts b/packages/client/test/worker/workerFactory.test.ts index 8c990038e..a7211849f 100644 --- a/packages/client/test/worker/workerFactory.test.ts +++ b/packages/client/test/worker/workerFactory.test.ts @@ -6,7 +6,7 @@ import { LogLevel } from '@codingame/monaco-vscode-api'; import { ConsoleLogger } from '@codingame/monaco-vscode-log-service-override'; import { getEnhancedMonacoEnvironment } from 'monaco-languageclient/vscodeApiWrapper'; -import { useWorkerFactory, Worker } from 'monaco-languageclient/workerFactory'; +import { useWorkerFactory, Worker, type PossibleWorkerLabelsExtended, type WorkerLoader } from 'monaco-languageclient/workerFactory'; import { describe, expect, test } from 'vitest'; describe.concurrent('WorkerFactory Tests', { concurrent: false, tags: ['vscode'] }, () => { @@ -28,7 +28,7 @@ describe.concurrent('WorkerFactory Tests', { concurrent: false, tags: ['vscode'] new Worker(new URL('@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker.js', import.meta.url), { type: 'module' }) - }, + } as Record, logger }); diff --git a/packages/client/test/worker/workerLoaders.test.ts b/packages/client/test/worker/workerLoaders.test.ts index 50173bc1a..e8dd4338d 100644 --- a/packages/client/test/worker/workerLoaders.test.ts +++ b/packages/client/test/worker/workerLoaders.test.ts @@ -38,7 +38,7 @@ describe.concurrent('Test WorkerLoaders', { concurrent: false, tags: ['vscode'] console.log(`editorWorkerUrl: ${editorWorkerUrl} worker: ${editorWorkerCheck !== undefined}\n`); // default, expect editor worker to be loaded - createWorkerPromises(['editorWorker']); + createWorkerPromises(['editorWorkerService']); await editorApp.start(htmlContainer); expect(await awaitWorkerPromises()).toStrictEqual([undefined]); await editorApp.disposeModelRefs(); @@ -54,7 +54,7 @@ describe.concurrent('Test WorkerLoaders', { concurrent: false, tags: ['vscode'] console.log(`jsonWorkerUrl: ${jsonWorkerUrl} worker: ${jsonWorkerCheck !== undefined}\n`); // ts worker, expect ts worker and json worker to be loaded - createWorkerPromises(['tsWorker', 'jsonWorker']); + createWorkerPromises(['typescript', 'json']); await editorApp.updateCodeResources({ modified: { text: '', @@ -69,7 +69,7 @@ describe.concurrent('Test WorkerLoaders', { concurrent: false, tags: ['vscode'] expect(cssWorkerCheck).toBeUndefined(); console.log(`cssWorkerUrl: ${cssWorkerUrl} worker: ${cssWorkerCheck !== undefined}\n`); - createWorkerPromises(['cssWorker']); + createWorkerPromises(['css']); await editorApp.updateCodeResources({ modified: { text: '', @@ -84,7 +84,7 @@ describe.concurrent('Test WorkerLoaders', { concurrent: false, tags: ['vscode'] expect(htmlWorkerCheck).toBeUndefined(); console.log(`htmlWorkerUrl: ${htmlWorkerUrl} worker: ${htmlWorkerCheck !== undefined}\n`); - createWorkerPromises(['htmlWorker']); + createWorkerPromises(['html']); await editorApp.updateCodeResources({ modified: { text: '', diff --git a/packages/examples/package.json b/packages/examples/package.json index feca3de33..55dae20ab 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -105,6 +105,11 @@ "@codingame/monaco-vscode-search-result-default-extension": "^35.0.0", "@codingame/monaco-vscode-search-service-override": "^35.0.0", "@codingame/monaco-vscode-secret-storage-service-override": "^35.0.0", + "@codingame/monaco-vscode-standalone-css-language-features": "^35.0.0", + "@codingame/monaco-vscode-standalone-html-language-features": "^35.0.0", + "@codingame/monaco-vscode-standalone-json-language-features": "^35.0.0", + "@codingame/monaco-vscode-standalone-languages": "^35.0.0", + "@codingame/monaco-vscode-standalone-typescript-language-features": "^35.0.0", "@codingame/monaco-vscode-storage-service-override": "^35.0.0", "@codingame/monaco-vscode-testing-service-override": "^35.0.0", "@codingame/monaco-vscode-theme-defaults-default-extension": "^35.0.0", diff --git a/packages/examples/src/common/client/extendedClient.ts b/packages/examples/src/common/client/extendedClient.ts index d2f107257..cc1fdb73a 100644 --- a/packages/examples/src/common/client/extendedClient.ts +++ b/packages/examples/src/common/client/extendedClient.ts @@ -15,7 +15,12 @@ import { LogLevel } from '@codingame/monaco-vscode-api'; import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp'; import { LanguageClientWrapper, type LanguageClientConfig } from 'monaco-languageclient/lcwrapper'; import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper'; -import { configureDefaultWorkerFactory, useWorkerFactory, type WorkerLoader } from 'monaco-languageclient/workerFactory'; +import { + configureDefaultWorkerFactory, + useWorkerFactory, + type PossibleWorkerLabelsExtended, + type WorkerLoader +} from 'monaco-languageclient/workerFactory'; import { createUrl, type ConnectionConfigOptions, type WebSocketConfigOptionsDirect } from 'monaco-languageclient/common'; import type { ILogger } from '@codingame/monaco-vscode-log-service-override'; @@ -155,5 +160,5 @@ export type ExampleLsConfig = { basePath: string; languageId: string; useExternalWebSocket: boolean; - workerLoaders?: () => Partial>; + workerLoaders?: () => Partial>; }; diff --git a/packages/examples/src/common/worker/classic-workers.ts b/packages/examples/src/common/worker/classic-workers.ts new file mode 100644 index 000000000..e33f73915 --- /dev/null +++ b/packages/examples/src/common/worker/classic-workers.ts @@ -0,0 +1,51 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) 2026 TypeFox and others. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import type { ILogger } from '@codingame/monaco-vscode-log-service-override'; +import { useWorkerFactory, Worker, type PossibleWorkerLabelsClassic, type WorkerLoader } from 'monaco-languageclient/workerFactory'; + +export const defineClassicWorkers: () => Record = () => { + const editorWorkerServiceWorker = () => { + const workerUrl = new URL('@codingame/monaco-vscode-editor-api/esm/vs/editor/editor.worker.js', import.meta.url); + return new Worker(workerUrl, { type: 'module' }); + }; + + const cssWorker = () => { + const workerUrl = new URL('@codingame/monaco-vscode-standalone-css-language-features', import.meta.url); + return new Worker(workerUrl, { type: 'module' }); + }; + + const jsonWorker = () => { + const workerUrl = new URL('@codingame/monaco-vscode-standalone-json-language-features', import.meta.url); + return new Worker(workerUrl, { type: 'module' }); + }; + + const htmlWorker = () => { + const workerUrl = new URL('@codingame/monaco-vscode-standalone-html-language-features', import.meta.url); + return new Worker(workerUrl, { type: 'module' }); + }; + + const tsWorker = () => { + const workerUrl = new URL('@codingame/monaco-vscode-standalone-typescript-language-features', import.meta.url); + return new Worker(workerUrl, { type: 'module' }); + }; + + return { + editorWorkerService: editorWorkerServiceWorker, + css: cssWorker, + html: htmlWorker, + json: jsonWorker, + // both have to be defined otherwise this leads to a test error + javascript: tsWorker, + typescript: tsWorker + }; +}; + +export const configureClassicWorkerFactory = (logger?: ILogger) => { + useWorkerFactory({ + workerLoaders: defineClassicWorkers(), + logger + }); +}; diff --git a/packages/examples/src/json/client/classic.ts b/packages/examples/src/json/client/classic.ts index 2e71e39d7..be34c6a73 100644 --- a/packages/examples/src/json/client/classic.ts +++ b/packages/examples/src/json/client/classic.ts @@ -4,11 +4,10 @@ * ------------------------------------------------------------------------------------------ */ import { LogLevel } from '@codingame/monaco-vscode-api'; -import type { ILogger } from '@codingame/monaco-vscode-log-service-override'; import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp'; import { LanguageClientWrapper, type LanguageClientConfig } from 'monaco-languageclient/lcwrapper'; import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper'; -import { defineDefaultWorkerLoaders, useWorkerFactory } from 'monaco-languageclient/workerFactory'; +import { configureClassicWorkerFactory } from '../../common/worker/classic-workers.js'; export const runClient = async () => { const htmlContainer = document.getElementById('monaco-editor-root')!; @@ -70,14 +69,3 @@ export const runClient = async () => { const languageClientWrapper = new LanguageClientWrapper(languageClientConfig); await languageClientWrapper.start(); }; - -export const configureClassicWorkerFactory = (logger?: ILogger) => { - const defaultworkerLoaders = defineDefaultWorkerLoaders(); - // remove textmate worker as it is not compatible with classic mode - defaultworkerLoaders.TextMateWorker = undefined; - defaultworkerLoaders.extensionHostWorkerMain = undefined; - useWorkerFactory({ - workerLoaders: defaultworkerLoaders, - logger - }); -}; diff --git a/verify/next/app/page.tsx b/verify/next/app/page.tsx index 4fcb59605..6d73bd21d 100644 --- a/verify/next/app/page.tsx +++ b/verify/next/app/page.tsx @@ -6,7 +6,7 @@ 'use client'; import type { ILogger } from '@codingame/monaco-vscode-log-service-override'; -import type { WorkerLoader } from 'monaco-languageclient/workerFactory'; +import type { PossibleWorkerLabelsExtended, WorkerLoader } from 'monaco-languageclient/workerFactory'; import dynamic from 'next/dynamic'; import './views.editorOnly.css'; @@ -25,7 +25,7 @@ export default function Page() { name: 'Langium LS' }); - const defineWorkerLoaders: () => Partial> = () => { + const defineWorkerLoaders: () => Partial> = () => { const defaultEditorWorkerService = () => new mlcWFModule.Worker(new URL('../bundle/editorWorker/editor.worker.js', import.meta.url), { type: 'module' }); // const defaultExtensionHostWorkerMain = () => new mlcWFModule.Worker( diff --git a/verify/next/app/vite.tsx b/verify/next/app/vite.tsx index 3900b03d5..76de0f6a2 100644 --- a/verify/next/app/vite.tsx +++ b/verify/next/app/vite.tsx @@ -4,7 +4,7 @@ * ------------------------------------------------------------------------------------------ */ import type { ILogger } from '@codingame/monaco-vscode-log-service-override'; -import type { WorkerLoader } from 'monaco-languageclient/workerFactory'; +import type { PossibleWorkerLabelsExtended, WorkerLoader } from 'monaco-languageclient/workerFactory'; import ReactDOM from 'react-dom/client'; export const createDynamicEditorComponent = async () => { @@ -13,7 +13,7 @@ export const createDynamicEditorComponent = async () => { const { workerFactory, setupLangiumClientExtended, openDocument, showDocument } = await import('./langium-dsl/config/extendedConfig.js'); - const defineWorkerLoaders: () => Partial> = () => { + const defineWorkerLoaders: () => Partial> = () => { const defaultEditorWorkerService = () => new workerFactory.Worker(new URL('../bundle/editorWorker/editor.worker.js', import.meta.url), { type: 'module' }); const defaultExtensionHostWorkerMain = () => diff --git a/verify/next/next-env.d.ts b/verify/next/next-env.d.ts index 40f541318..38cdaf408 100644 --- a/verify/next/next-env.d.ts +++ b/verify/next/next-env.d.ts @@ -5,7 +5,7 @@ /// /// -import './.next/types/routes.d.ts'; +import './.next/dev/types/routes.d.ts'; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/verify/next/package-lock.json b/verify/next/package-lock.json index d44108c29..d11809826 100644 --- a/verify/next/package-lock.json +++ b/verify/next/package-lock.json @@ -319,9 +319,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.2.tgz", + "integrity": "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==", "license": "MIT", "optional": true, "dependencies": { @@ -1307,6 +1307,17 @@ "node": "^20.19.0 || >=22.12.0" } }, + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", + "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@rolldown/binding-win32-arm64-msvc": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", @@ -1762,9 +1773,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.40", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz", - "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==", + "version": "2.10.42", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.42.tgz", + "integrity": "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -1799,9 +1810,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001800", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz", - "integrity": "sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==", + "version": "1.0.30001803", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001803.tgz", + "integrity": "sha512-g/uHREV2ZpK9qMalCsWaxmA6ol+DX8GYhuf3T40RKoP+oL7vhRJh8LNt73PCjpnR6l14FzfPrB5Yux4PKm2meg==", "funding": [ { "type": "opencollective", @@ -3061,9 +3072,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "engines": { @@ -3230,9 +3241,9 @@ } }, "node_modules/vscode-jsonrpc": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0.tgz", - "integrity": "sha512-+VvMmQPJhtvJ+8O+zu2JKIRiLxXF8NW7krWgyMGeOHrp4Cn23T5hc0v2LknNeopDOB70wghHAds7mKtcZ0I4Sg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.1.tgz", + "integrity": "sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -3285,12 +3296,12 @@ } }, "node_modules/vscode-languageserver-protocol": { - "version": "3.18.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.1.tgz", - "integrity": "sha512-RTiiVHdpxpYcJVI5sq6S5TLjQ4WDR/rBrIWru+kPXe6sGQ9PFQ3GamrTKLvPqbR4ylr1SoodhmcqbFII0WXVuw==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.2.tgz", + "integrity": "sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg==", "license": "MIT", "dependencies": { - "vscode-jsonrpc": "9.0.0", + "vscode-jsonrpc": "9.0.1", "vscode-languageserver-types": "3.18.0" } }, diff --git a/verify/next/package.json b/verify/next/package.json index affd5c49d..93aaea4ca 100644 --- a/verify/next/package.json +++ b/verify/next/package.json @@ -3,7 +3,7 @@ "type": "module", "scripts": { "clean": "shx rm -fr .next dist lib bundle *.tsbuildinfo", - "verify": "npm ci && npm run dev", + "verify": "npm ci && npm run dev:next", "verify:ci": "npm ci && npm run build -d", "dev:next": "npm run bundle && npm run build:tsc && next dev -p 8083", "dev:vite": "npm run bundle && npm run build:tsc && vite --config vite.config.ts", @@ -49,6 +49,8 @@ "dompurify": "~3.4.11", "monaco-languageclient": "../../packages/client", "postcss": "8.5.15", + "vscode-languageclient": "~10.1.0", + "vscode-languageserver": "~10.1.0", "vscode-ws-jsonrpc": "../../packages/vscode-ws-jsonrpc" }, "engines": { diff --git a/verify/webpack/src/client/main.ts b/verify/webpack/src/client/main.ts index d3e5800d2..405189a86 100644 --- a/verify/webpack/src/client/main.ts +++ b/verify/webpack/src/client/main.ts @@ -6,7 +6,7 @@ import '@codingame/monaco-vscode-json-default-extension'; import { runExtendedClient } from 'monaco-languageclient-examples'; import { jsontLsConfig } from 'monaco-languageclient-examples/json-client'; -import { Worker, WorkerLoader } from 'monaco-languageclient/workerFactory'; +import { PossibleWorkerLabelsClassic, PossibleWorkerLabelsExtended, Worker, WorkerLoader } from 'monaco-languageclient/workerFactory'; const runJsonWrapper = async () => { const helloJsonCode = `{ @@ -14,7 +14,7 @@ const runJsonWrapper = async () => { "line_endings": {"value": "unix"} }`; - const defineWorkerLoaders: () => Partial> = () => { + const defineWorkerLoaders: () => Partial> = () => { const defaultEditorWorkerService = () => new Worker(new URL('../../bundle/editor.worker.js', import.meta.url), { type: 'module' }); const defaultTextMateWorker = () => new Worker(new URL('../../bundle/worker.js', import.meta.url), { type: 'module' });