From db040199a2c0c322aba250f14693b8f6c23df0fe Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Mon, 23 Sep 2024 13:56:51 +0200 Subject: [PATCH 1/9] Updated to monaco-vscode-api 9.0.3. Incremented versions to -next.1 - Updated dependencies - Streamlined LanguageClientWrapper#disposeLanguageClient due to a failing test after vitest update --- README.md | 2 +- docs/versions-and-history.md | 2 +- package-lock.json | 1502 ++++++++--------- package.json | 19 +- packages/client/CHANGELOG.md | 3 +- packages/client/package.json | 18 +- packages/examples/CHANGELOG.md | 2 +- packages/examples/package.json | 54 +- .../src/common/node/server-commons.ts | 2 +- packages/wrapper-react/CHANGELOG.md | 4 +- packages/wrapper-react/package.json | 18 +- packages/wrapper/CHANGELOG.md | 4 +- packages/wrapper/package.json | 62 +- packages/wrapper/src/languageClientWrapper.ts | 45 +- .../test/languageClientWrapper.test.ts | 2 +- verify/angular/package.json | 4 +- verify/pnpm/package.json | 4 +- verify/vite/package.json | 4 +- verify/webpack/package.json | 4 +- verify/yarn/package.json | 8 +- 20 files changed, 843 insertions(+), 920 deletions(-) diff --git a/README.md b/README.md index af3c6b0f1..e3f15bdf8 100644 --- a/README.md +++ b/README.md @@ -282,7 +282,7 @@ loader.config({ monaco }); If you use pnpm, you have to add `vscode` / `@codingame/monaco-vscode-api` as direct dependency (you find the [compatibility table here](https://github.com/TypeFox/monaco-languageclient/blob/main/docs/versions-and-history.md#monaco-editor--codingamemonaco-vscode-api-compatibility-table), otherwise the installation will fail. ```json -"vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" +"vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" ``` ## Licenses diff --git a/docs/versions-and-history.md b/docs/versions-and-history.md index 187b3678d..9cc7e1fb4 100644 --- a/docs/versions-and-history.md +++ b/docs/versions-and-history.md @@ -6,7 +6,7 @@ The following table describes which version of **monaco-languageclient** and **@ | monaco-languageclient | monaco-editor-wrapper | monaco-editor-react | monaco-vscode-api / editor-api | vscode | monaco-editor | release date | comment | | :---- | :---- | :--- | :--- | :--- | :--- | :--- | :--- | -| 9.0.0-next.0 | 6.0.0-next.0 | 6.0.0-next.0 | 8.0.4 | 1.92.2 | 0.51.0 | 2024-09-xy | | +| 9.0.0-next.1 | 6.0.0-next.1 | 6.0.0-next.1 | 9.0.3 | 1.93.1 | 0.52.0 | 2024-09-xy | | | 8.8.3 | 5.5.3 | 4.5.3 | 8.0.4 | 1.92.2 | 0.51.0 | 2024-08-26 | | | 8.8.2 | 5.5.2 | 4.5.2 | 8.0.2 | 1.92.2 | 0.50.0 | 2024-08-21 | | | 8.8.1 | 5.5.1 | 4.5.1 | 8.0.1 | 1.92.1 | 0.50.0 | 2024-08-12 | | diff --git a/package-lock.json b/package-lock.json index a85637691..8f38b42df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,19 +13,18 @@ ], "devDependencies": { "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", - "@codingame/monaco-vscode-rollup-vsix-plugin": "~8.0.4", - "@rollup/pluginutils": "~5.1.0", + "@codingame/monaco-vscode-rollup-vsix-plugin": "~9.0.3", "@testing-library/react": "~16.0.1", "@types/node": "~20.16.5", - "@types/react": "~18.3.5", + "@types/react": "~18.3.8", "@types/react-dom": "~18.3.0", - "@types/vscode": "~1.92.0", + "@types/vscode": "~1.93.0", "@typescript-eslint/eslint-plugin": "~7.18.0", "@typescript-eslint/parser": "~7.18.0", "@vitejs/plugin-react": "~4.3.1", - "@vitest/browser": "~2.0.5", + "@vitest/browser": "~2.1.1", "editorconfig": "~2.0.0", - "esbuild": "~0.23.1", + "esbuild": "~0.24.0", "eslint": "~8.57.0", "eslint-plugin-header": "~3.1.1", "eslint-plugin-import": "~2.29.1", @@ -33,10 +32,10 @@ "http-server": "~14.1.1", "minimatch": "~10.0.1", "typescript": "~5.5.4", - "vite": "~5.4.3", - "vite-node": "~2.0.5", - "vitest": "~2.0.5", - "webdriverio": "~9.0.7" + "vite": "~5.4.7", + "vite-node": "~2.1.1", + "vitest": "~2.1.1", + "webdriverio": "~9.0.9" } }, "node_modules/@ampproject/remapping": { @@ -561,319 +560,319 @@ } }, "node_modules/@codingame/monaco-vscode-base-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-base-service-override/-/monaco-vscode-base-service-override-8.0.4.tgz", - "integrity": "sha512-tTIA68KRYgSPHyanjqTUGQro+t67vShxAGNjM2Iz7dhqMOYZhYA4oIwI4Q0A+QWBC2HKOCNkwFoc5pqconw5YA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-base-service-override/-/monaco-vscode-base-service-override-9.0.3.tgz", + "integrity": "sha512-sgRF96q5p5gvniwF9T3s/s6tIzbpWy6DBV4jNRB+TrYcKDPF5by1V7XPA+8nVM7gZCG7UkJ62bE5FZqPpSH9yA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-configuration-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-configuration-service-override/-/monaco-vscode-configuration-service-override-8.0.4.tgz", - "integrity": "sha512-Fx8wRY3G2s3fpcQWGBMEe7fUmDhPFSkn+b/DwPCTiyo9IX+uKk8w097XjJBwCk0wVHgOcYs4GKPsip5IqJkydw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-configuration-service-override/-/monaco-vscode-configuration-service-override-9.0.3.tgz", + "integrity": "sha512-kRkHHfzvJkeROO+QtgcD/vzYvrsNsPjalF1cZaNRvy2iREa9QiUhiKyJuLuZwQSwlFJs3R1+h8iN5n851Auzlg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-files-service-override": "8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "@codingame/monaco-vscode-files-service-override": "9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-editor-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-service-override/-/monaco-vscode-editor-service-override-8.0.4.tgz", - "integrity": "sha512-is77poIqjYAcve9AYlUrkMfgtjWlH1D9ebxGjk4Y2UHvmQvsrRFuaGvzEt4YpgNLd+0hSyuH+R0HWSOq3uN2BA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-service-override/-/monaco-vscode-editor-service-override-9.0.3.tgz", + "integrity": "sha512-ab5DItX3W3r/24PImxmgNUuF8mleTq2UZGzLhIh+HznN1YmyXqORFkRCRWwvFLjXh3NBCcYGanavoAvJA630iQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-environment-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-environment-service-override/-/monaco-vscode-environment-service-override-8.0.4.tgz", - "integrity": "sha512-3PBqEag0RaACIYiPdtDqxn4BS48yMq1uNCrNYm9E2P1On7JaCLNPHrQfE9Et6HbJT9qPzdcfbD5IwevQbCym5Q==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-environment-service-override/-/monaco-vscode-environment-service-override-9.0.3.tgz", + "integrity": "sha512-eZMPPiRqFg5EMfqPCmVooZgxwOYy5mhHi9sMNOeCGd8frwg7TKk1LB4w8SkJS1o78LCYSv3Tu3xO3PS1gXYnmA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-extensions-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extensions-service-override/-/monaco-vscode-extensions-service-override-8.0.4.tgz", - "integrity": "sha512-uEOpSXGxC6W3uaKwj5p+WXsvkVqD1ONDNOCy8ZEHskpkN6KO/0XE927OvpF75JsqXHjNTmstSxTjU9/GykpruA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extensions-service-override/-/monaco-vscode-extensions-service-override-9.0.3.tgz", + "integrity": "sha512-hmmG2TeX/jnshJtSk++/njz/piFQA7DeH/bv7WZAbEpClsN98hL9WLo60j2d8Q6WBTOmmz/uXuZZUWERRnY2Mg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-files-service-override": "8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "@codingame/monaco-vscode-files-service-override": "9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-files-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-files-service-override/-/monaco-vscode-files-service-override-8.0.4.tgz", - "integrity": "sha512-DCvbxgE6wwOoUsKGlinOB7vYx7HoVUviqWY913Fux4K7/wYWpBcNVtK8kmKs7euPJPeAsl06PJFaXaS3Qjfkqg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-files-service-override/-/monaco-vscode-files-service-override-9.0.3.tgz", + "integrity": "sha512-HBRjt42Xnef2556OVRvhV2hjjH+wo8fJz4Mk9IO4lMjRCVMjo1sIu2iAPTlC9vlAsR5Iq1GyWUqj1I3Xn2sj6g==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-groovy-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-groovy-default-extension/-/monaco-vscode-groovy-default-extension-8.0.4.tgz", - "integrity": "sha512-9izIF8Uwn5Xfq6fYhrQkZQfYrHQ3ZBm9saiZ+XdEQlj+iaWMkI98cKWUNRRELIgmPsDGGY/RkY7pY7g/TQVOxA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-groovy-default-extension/-/monaco-vscode-groovy-default-extension-9.0.3.tgz", + "integrity": "sha512-dQHIM3tFaSiDqkU53KPtNdCfxRWIdybIrPJkoDa0mxr9yLWpkL9mBfxN6QcWNffJ0zTR70ymnvJktP07bvx4ew==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-host-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-host-service-override/-/monaco-vscode-host-service-override-8.0.4.tgz", - "integrity": "sha512-VT8jFmnzMpi6DuSgA8c/F0MVh+fApLH75ledgMqfsKC1vSDOkV0IaPPBHRfPYDPvXCrnOtfdpvP0hFrdg1ytig==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-host-service-override/-/monaco-vscode-host-service-override-9.0.3.tgz", + "integrity": "sha512-tpT5uLaUKBtqiElSbjE5W4ErS6LeO4lZi+9kCdJsWZgWp5dnRBk7+hgFTxyaitNhn15EdjOa1CQVZZ/JKmKbdw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-java-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-java-default-extension/-/monaco-vscode-java-default-extension-8.0.4.tgz", - "integrity": "sha512-hm32yEvnRjNA42ZSb1EBQsxty9hjnKcTA8hIHQ0Fl9ZOPs6Aypx9ThtfijAVfUoPRuvCkZ4iQrRKpwXxKTdYlQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-java-default-extension/-/monaco-vscode-java-default-extension-9.0.3.tgz", + "integrity": "sha512-gt0fjSnH64/Woy42romesQ4UiZU2n/HrjNQ0uONjg2V0AcrNIHADVFihHt1rdiKr8qCr0PKa9tvsKQtcV5HEMA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-javascript-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-javascript-default-extension/-/monaco-vscode-javascript-default-extension-8.0.4.tgz", - "integrity": "sha512-Zb6L/QCisv39YGCsn4ghgQoaO2J/Q1mCln4dQN8L7mDqsi4DbRDJh88JWtbGuWryjaQsLgJbV816RYxHXmEGqg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-javascript-default-extension/-/monaco-vscode-javascript-default-extension-9.0.3.tgz", + "integrity": "sha512-sDEdvYPMJPcmK/G05lOyN4o6TTkeJoBdnnQERAEYAsjFpJAluIaNeWZobsqN+McZY9YVl9QPhieRou9qKqImnw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-json-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-json-default-extension/-/monaco-vscode-json-default-extension-8.0.4.tgz", - "integrity": "sha512-WQJaaAJSROCDJdTQpHAnbFH9UziTxb5H9jlcPk8NjCzkcxAMMG0js9z7NrFnYiovSUhNN10/uXtk+JsiDT3q4Q==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-json-default-extension/-/monaco-vscode-json-default-extension-9.0.3.tgz", + "integrity": "sha512-X+9lVulyVYjuw91/1gB2ZsSddw9qyGfixNtP3/rgwbNM/WjrLZMYgzEdbGUD+KU3kIFqwjqWqaXpfC19vdbCyg==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-keybindings-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-keybindings-service-override/-/monaco-vscode-keybindings-service-override-8.0.4.tgz", - "integrity": "sha512-efT9DeUlF0SucqcnQ0oqd5a2/dy/VHwWRjsVyfPQOEgFDUNx1bSmL8xzNIKN+bsC5MelQt2T8TEy2I4nR25yWg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-keybindings-service-override/-/monaco-vscode-keybindings-service-override-9.0.3.tgz", + "integrity": "sha512-f3FdlcYU0v/mlfBZmzhuTOjpsfkGkxm/LKbmjTcypqKfWGoB+eiiKFkqOFBhmsavdpZNyeWUtYNfKUnEqoYYKg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-files-service-override": "8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "@codingame/monaco-vscode-files-service-override": "9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-cs": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-cs/-/monaco-vscode-language-pack-cs-8.0.4.tgz", - "integrity": "sha512-ijeMCVxDhNv2M1h92pMCYx8P4nBUTWlAisnAnrDASNJa3V6bFjCo+r0jXKruOjZhjtO0VOYsX0r1s0VUq1Otuw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-cs/-/monaco-vscode-language-pack-cs-9.0.3.tgz", + "integrity": "sha512-uPlh5mASdles8WwPTKwsHDIup3cclQZCqH5Ez1qOJCZTlsbeuYQfHMwqHJDvPWiwxhGPKlVmWqLdi6nzTn6srw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-de": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-de/-/monaco-vscode-language-pack-de-8.0.4.tgz", - "integrity": "sha512-OehZUq8+z8KDnZPBH0xEU+Ph+D9GTssFPcMzdvxLSfY0xyxNDfC+rCemLGAfJydtONVKde5WsOWvozM5PJ+uEQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-de/-/monaco-vscode-language-pack-de-9.0.3.tgz", + "integrity": "sha512-J8aQSqPTcgGPTWOFViA/6EqqL0WgloL72TtL1xvp2Ur4cTt7+rt77+Qniyyqs6zPLLwH/R4Aj7yqvd1EXKLa7g==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-es": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-es/-/monaco-vscode-language-pack-es-8.0.4.tgz", - "integrity": "sha512-+mB2aeWnn+Nz4s8zopaEQWqhZLvsUM/SGcsqpjy/liU0D6M8qhc8XyAbOS3dORTFtFVIhxj/MVW7I8E2fhJd1Q==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-es/-/monaco-vscode-language-pack-es-9.0.3.tgz", + "integrity": "sha512-R1Ma7cLSffiDtGGXkavH0pGQNfjgI/NumZbH/d6NDCOIIzi3I1HSBEuGFEYzfeAQqAgc0IYK1g2xdmbes73g2Q==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-fr": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-fr/-/monaco-vscode-language-pack-fr-8.0.4.tgz", - "integrity": "sha512-nhWM+uOVSzcnIGYr9GCEX00GJjgUt9xoW+TKLG1axayCpPboDoD8mbafaycNoYkz3aJIwhYytpKIzhl05EmIhg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-fr/-/monaco-vscode-language-pack-fr-9.0.3.tgz", + "integrity": "sha512-BINjf8dMftT5PhEtiKzNyQrNPw78+jLWdJuhEBFEEPqA+hqIBMbWbZt1wtWsmaHogMKyEFeroT4D0Wa0EzKHxg==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-it": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-it/-/monaco-vscode-language-pack-it-8.0.4.tgz", - "integrity": "sha512-BXXLAakXU8zumxQH9uRX4KIIPy/ZJjdI/7DWriASs0BU2rJwta9cRmGZshpl9IJMVB4HHLmUvEoXv3NXfGIu8A==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-it/-/monaco-vscode-language-pack-it-9.0.3.tgz", + "integrity": "sha512-8bf7vcpAqWRnoNXF2/gDlpR+F4toFlQ30/Z/1Vmixulvn9uQykZeEjhmsIliK8GnJ5MC/yZ7X/VBUVG8t/GHZg==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-ja": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ja/-/monaco-vscode-language-pack-ja-8.0.4.tgz", - "integrity": "sha512-G4Dv75fCZuRNL6lo0/T71iGVvRaIP039PV4icOZv2sIxatQEIPcnI89Bc4obHRmX8IzKIPKG4OYNixDzRno8dA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ja/-/monaco-vscode-language-pack-ja-9.0.3.tgz", + "integrity": "sha512-jQ+8DFBQn3iknfOZbcnDRC2Kn++Io4KerS5rEOb0k3KLF/wLOjHvzhRKZ8doa7E4yDv7/Qr4659slJfvFRTQkw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-ko": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ko/-/monaco-vscode-language-pack-ko-8.0.4.tgz", - "integrity": "sha512-+RSYTNci7V8EdaAzHKn5OGo9GH3LE9v1B4/MHo2d1iNvvsB3jJ3p4I69E7w0+g3cr7B+gFGfJYAvDHdQABd5Gg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ko/-/monaco-vscode-language-pack-ko-9.0.3.tgz", + "integrity": "sha512-xoeAp4F9Hifj5PUKoaVwS9H7LpttMnAVvL7MKVB/GRj6Cel6jge4nqFgX1L5QMra9s0YpVGLiUXN8btO/lB1JA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-pl": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pl/-/monaco-vscode-language-pack-pl-8.0.4.tgz", - "integrity": "sha512-YlFJEqUQ2j1bSiVBz1o59RZDsFaPVfhbnosMWV4B1iqW0qEXtQwUfdMeU0N8H3fq2v2ov6W79dOu9PlWyOW4Ww==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pl/-/monaco-vscode-language-pack-pl-9.0.3.tgz", + "integrity": "sha512-UCXRhoD3zSZJ4luyC3qlCG7wiqykJNtUDKLGDxUYFgPmesVbca1YTAxZZHnP5lmxWczDDeQ/YP4TKwHIHCEH1w==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-pt-br": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pt-br/-/monaco-vscode-language-pack-pt-br-8.0.4.tgz", - "integrity": "sha512-kwoVrjIYZhmRwajt3qrYRr6KW0UVxC/YV/c+MOjr2HKMUgy5fqo+BKmj/9lSfduyu5JPddZxKARTBw0oByVghA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pt-br/-/monaco-vscode-language-pack-pt-br-9.0.3.tgz", + "integrity": "sha512-W/5eNk36cBkCzdEywJbG/GSa0VAney3jL4I87YPshJvShAc2MDewCDvShACXIBodPxD9Lgh1HaZWL5umYEFJsg==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-qps-ploc": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-qps-ploc/-/monaco-vscode-language-pack-qps-ploc-8.0.4.tgz", - "integrity": "sha512-TJK9YuCHf2RHK3NcoiIAgjyna1lv6ndN70t13wf9pN+GyOE7XfYUVJj0YrQDbNCXiSeaTxgJtt0VQZmeN6RHjQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-qps-ploc/-/monaco-vscode-language-pack-qps-ploc-9.0.3.tgz", + "integrity": "sha512-IJ3vqYS2riwvFtUPU4NWoKtwRQExgxykHeoNrjjdyieJDNcopS8QWd4Sur2XJZ8Ga/WimGPcCmPbh5AhlczbHw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-ru": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ru/-/monaco-vscode-language-pack-ru-8.0.4.tgz", - "integrity": "sha512-4rZDZU9VNJCIDM8hwLJQYhUnsQu3qcVONpb1muRFGKYhh9NwAELAwl2XW+ybsTC/B/4Qysk7cB1IxrTt4AhNjg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ru/-/monaco-vscode-language-pack-ru-9.0.3.tgz", + "integrity": "sha512-b7QQd4mEiXfLB0216YBYm+UlunC7XzAbEXni+nqlvTgVxzdfCK5ri7/Lj1NuQ/gcpdhGo78PgVP71TlCoZZalA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-tr": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-tr/-/monaco-vscode-language-pack-tr-8.0.4.tgz", - "integrity": "sha512-cqtF5drmuFp/wKmJvm9l6Unc+AF4vn48t0KJBZ1/QRxTZnRlwT5Dm+z0JR880O8WsSUkzJIG93/wBAzpv+6/Bg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-tr/-/monaco-vscode-language-pack-tr-9.0.3.tgz", + "integrity": "sha512-HAzPcG2CoVANjDWWIauYNJtqikekZrKfbEkikr+U9AkwIGl7E8cCdya93LPCEWDfqoBJlGmNh4z/WrtkDxRGaQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-zh-hans": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hans/-/monaco-vscode-language-pack-zh-hans-8.0.4.tgz", - "integrity": "sha512-a8R+IUggCI/UVv4uDy7XzjOwB3WAt+KX8ElsAqzJB9Y5BbFW5/a1Pxca0UXJ2vQabcls4TcrIi2yR30jnlBgww==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hans/-/monaco-vscode-language-pack-zh-hans-9.0.3.tgz", + "integrity": "sha512-FKM0DDS5Ap0PhV2ofbKafovBsIwT70QP5Ns/z7oeyg39Rcbn+DJLGoYkI9eX7dQVI50rqe6EFqFG3xOTqDDYqw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-language-pack-zh-hant": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hant/-/monaco-vscode-language-pack-zh-hant-8.0.4.tgz", - "integrity": "sha512-g3b/apaTc/bg5isOEvxir38bbYzd/CuBY0MWtXw1NKXc0GPsTo4j5eAuT2R4qT1pJ9XgbMBbYQAMLX3DxSJRxA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hant/-/monaco-vscode-language-pack-zh-hant-9.0.3.tgz", + "integrity": "sha512-76sFtLT6+uxx8ex7BLH+cUjMptcrMjxAL1Bpi+WVBdWoTzFFlP+MiXJU8PYiTRj/TcdV6NYIK9iiw/F3znI5Ig==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-languages-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-languages-service-override/-/monaco-vscode-languages-service-override-8.0.4.tgz", - "integrity": "sha512-GXd2fKQa96tNv0gFB3nT/yWUc+4pZM/2L8KcfOOuNRWEOjm9TbOWmNZyWGi2Abf4vAdLNKVtJBX1+SoDkwoQdw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-languages-service-override/-/monaco-vscode-languages-service-override-9.0.3.tgz", + "integrity": "sha512-w40zfCNfBqSpqz/+4AWNeuJ3gkFVIxUItqjEN0BehLyh+hYBLemu91NwtWlA+9vhBeHKcJTVs5KdpOOZbPUwfQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-files-service-override": "8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "@codingame/monaco-vscode-files-service-override": "9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-layout-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-layout-service-override/-/monaco-vscode-layout-service-override-8.0.4.tgz", - "integrity": "sha512-DrF1vRJG8vPOaqC06fu99yjvtIcuTza5vAQdH19FfDi87vyk3BeFsnj7H7Z0fRK/wQigBcNzXYbUkuE93I95IQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-layout-service-override/-/monaco-vscode-layout-service-override-9.0.3.tgz", + "integrity": "sha512-9LK/f1iqFJo1I8eBQaOgH+OFEW+gv+K/9ibTkKMF/kDRCJ6dZdOazETsR4Lmby7a1hfpZmerulBHSPWZHUxxbw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-lifecycle-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-lifecycle-service-override/-/monaco-vscode-lifecycle-service-override-8.0.4.tgz", - "integrity": "sha512-2It+K7GT5ODPfC+6y3DtK98wEkAUxduMHtm7FAcQbrHPPWLtyhrX4O/p7vvch5QL+DTvD42B3q2fpZCAwVooDQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-lifecycle-service-override/-/monaco-vscode-lifecycle-service-override-9.0.3.tgz", + "integrity": "sha512-/YMe+He1+mTxykdVHm6mk7kkbFVdBaQho5MWXYXDn8rp4YmVa9D+yoYEcwk9r7eCWFM81fTkt2VWfejt+EshuQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-localization-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-localization-service-override/-/monaco-vscode-localization-service-override-8.0.4.tgz", - "integrity": "sha512-z/MGZXSW69y3pIxbXobRfoGadN82BSSO7tu3jkhJx3c3CpvULaDl5HLUKoXDwtG14/nEA/VCzI/MOHp/bXBKDQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-localization-service-override/-/monaco-vscode-localization-service-override-9.0.3.tgz", + "integrity": "sha512-IbLH98G2JEa1M5l1iEDBpUSLbvOJgkRmHKia+vg2Ua50K2jCz4nf8z7T71d9GOrC9e++p6N9l3eoskV1V39yDw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-model-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-model-service-override/-/monaco-vscode-model-service-override-8.0.4.tgz", - "integrity": "sha512-oynV9SnSE1MfqtVjqDWy/xcmekmAVNzyoqTh6oH3B+Oy/nhPqI6X9yIA0I47u0ncs/wjj3dDVnXOEv2IqJXxZg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-model-service-override/-/monaco-vscode-model-service-override-9.0.3.tgz", + "integrity": "sha512-U0dHflqeCI5IGD/dJOg1Owfoam55M+ybhSDjNx4j5VO5WvrUhJzrs6ebZBvoR7TPrHPWvrVNQ5K5h7fm0QnPdQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-monarch-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-monarch-service-override/-/monaco-vscode-monarch-service-override-8.0.4.tgz", - "integrity": "sha512-OrlE+ffvGf9C6xfkcO6rEiuy4GJQJQ+dSByxHyfLXA9qCWn/dHpYfjpr83YIlBG0tNoBdAYnx2iLgAo6y5Tzkw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-monarch-service-override/-/monaco-vscode-monarch-service-override-9.0.3.tgz", + "integrity": "sha512-FrQ6yMSRBiP1stGt0g1aVAjG4tpnKgFBdjPKRsj1+ekrcMxCslwgExKU4e+IgjApQZ10nkw1tpFxoRtw1NS89w==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-python-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-python-default-extension/-/monaco-vscode-python-default-extension-8.0.4.tgz", - "integrity": "sha512-ZQNP1hjnZrOG5cnl/3FgXU3nOEv4WjrvI1uaEbumer1OYsk8QPWr983WwoI4TXNHxHeiXu198MFMUdyGfxdezw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-python-default-extension/-/monaco-vscode-python-default-extension-9.0.3.tgz", + "integrity": "sha512-TSrAXxeOZc7qSzEC5EvpA4kAzOkVNFWH1/Iu7clG/wmRBiCZ2/uya/sbcC6+DL2bSd61IoRyg5zGs5LNJCZwcA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-quickaccess-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-quickaccess-service-override/-/monaco-vscode-quickaccess-service-override-8.0.4.tgz", - "integrity": "sha512-VXHVKRqtieKf+BTTUwcT++tJEb/k7PI2vLR3Lgsh2t0We7ydPOPLTDA99/Ls3yuM+i6IvKqBXc+WomN8MRS1rw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-quickaccess-service-override/-/monaco-vscode-quickaccess-service-override-9.0.3.tgz", + "integrity": "sha512-v/l9yiR2H4bXjGP1ln4tGn92Ho9PqkkZ0G/GHbh9JoF4CST79iOjS2CJdzXw3bYH5eXQxhdRfmyFGt1CCakgEA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-rollup-vsix-plugin": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-rollup-vsix-plugin/-/monaco-vscode-rollup-vsix-plugin-8.0.4.tgz", - "integrity": "sha512-wJWlZsWbEGHIWhmM8X4qjUCuha9KXvH8y2vNrwU9ByMH+mVi+YS5liuOsD00kJ/HPIaGmXgK3B9SddUeb61HeQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-rollup-vsix-plugin/-/monaco-vscode-rollup-vsix-plugin-9.0.3.tgz", + "integrity": "sha512-o4XhCpcVNgkZkxVUtVdFoxh6ZAT2d4EC65Ke9c/b+kGDKty67AsVOLnGhnwojRGFtVAARVXg+aPq1o7IlT8iPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -885,99 +884,99 @@ } }, "node_modules/@codingame/monaco-vscode-standalone-css-language-features": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-css-language-features/-/monaco-vscode-standalone-css-language-features-8.0.4.tgz", - "integrity": "sha512-Mu0t60UbuZS2KwCZJ4wc0vmgNGvMFKP2l1VTFQoGJnggzPM7fmeAUZK62oJ+zBZ4GoJ6Gb0ITEwHzjPqrkmqOg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-css-language-features/-/monaco-vscode-standalone-css-language-features-9.0.3.tgz", + "integrity": "sha512-SA237BKxf6kpD0o4KX5MY5RUQOWPqOFwcDK4pqhdzrCFJOtzliteCOVPjXrc70SFf8xmP5rJdSaE9sJjj2kq8w==", "dev": true, "license": "MIT", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-standalone-html-language-features": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-html-language-features/-/monaco-vscode-standalone-html-language-features-8.0.4.tgz", - "integrity": "sha512-4IYFr4VjBU4IxXBel8UJsf8oIwsJqcgxck1+Sx7rFewSMsoboo+1VLRMNH4eJRwdLlQ+ev8nwprIC/AiWIwpKA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-html-language-features/-/monaco-vscode-standalone-html-language-features-9.0.3.tgz", + "integrity": "sha512-2uwvIz4+HMvsk88jtguZp9BuuV2z4AZwgy3EL6teKo+YUKwQePewlOxsdlWxJYUB/7YxIPncl1YunbA4C+Beng==", "dev": true, "license": "MIT", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-standalone-json-language-features": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-json-language-features/-/monaco-vscode-standalone-json-language-features-8.0.4.tgz", - "integrity": "sha512-rJYAeSGsIiLDI5SkzMK1HrwwUb34oZ+v7WJuYFBtXFMjlzwNReF8r2OxxIpl/rmv9gIvWgFLW0BV6O7hEfQzuQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-json-language-features/-/monaco-vscode-standalone-json-language-features-9.0.3.tgz", + "integrity": "sha512-RnxAgSCrCP/4oI85y87skS2tBM5O9Q0qcjf7zMmCld1wXlFJBhXyOyeDQ9cxFuS4VaCH+c2eWwq0x80uMJ/nAg==", "license": "MIT", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-standalone-languages": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-languages/-/monaco-vscode-standalone-languages-8.0.4.tgz", - "integrity": "sha512-y94EIgTPMo0U+PMYnU/79gZNSDuOyVGjX7lUkTZ5lkbcnI0adRgnpmYFJgGpEp+UzjItghhYhTCRtRkbVrjf6w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-languages/-/monaco-vscode-standalone-languages-9.0.3.tgz", + "integrity": "sha512-XgkNHcFXCU/fApQBq827I0pMGR1PSjgaFibJYms1e8byxCUlhF+bUymuCxWjC/MUur0sAoeWGF5f5YFPQ7NoSA==", "license": "MIT", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-standalone-typescript-language-features": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-typescript-language-features/-/monaco-vscode-standalone-typescript-language-features-8.0.4.tgz", - "integrity": "sha512-ZEGonckXZKYyHNRet6iaBBVxcAhztlQaJ48Kasm1u+/R6vWf//K4NT0N+ut6tUdl8GM3cTvDY2PbWg+7tbfbeA==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-standalone-typescript-language-features/-/monaco-vscode-standalone-typescript-language-features-9.0.3.tgz", + "integrity": "sha512-trV5uf+7NJybOmd7DzgQz+Bn52/LOU8CLc9Wn6apPjrvX/v2tJPwxOExCUGbGH2LtCPM1wqzGb6PFjIePkkqIw==", "license": "MIT", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-textmate-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-textmate-service-override/-/monaco-vscode-textmate-service-override-8.0.4.tgz", - "integrity": "sha512-YDJoXCqnEimotWcqUlzU8bBah3+dqLAcIULJEV07K2DMFkKty78sc6w2CAItIlzmTeJApW2HpTdOgZehYqro3w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-textmate-service-override/-/monaco-vscode-textmate-service-override-9.0.3.tgz", + "integrity": "sha512-o4/6QgBT6UDoJoPEx+yjcJgEzSGrcs97HfB9Ink/K3d5+GvgMBbW0/wlB2EpIJdHqrYY1mXwVJVZRGwdEQc1GQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-files-service-override": "8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4", + "@codingame/monaco-vscode-files-service-override": "9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3", "vscode-oniguruma": "1.7.0", - "vscode-textmate": "9.0.0" + "vscode-textmate": "9.1.0" } }, "node_modules/@codingame/monaco-vscode-theme-defaults-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-defaults-default-extension/-/monaco-vscode-theme-defaults-default-extension-8.0.4.tgz", - "integrity": "sha512-y2M0i2ZUGdQbbZ5/rfGQzDe0McUWOVDu0HrIBKhGCyVMfeR7nII06jipQD0e/XPY1cmphyi/x1U70AX2msJEQQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-defaults-default-extension/-/monaco-vscode-theme-defaults-default-extension-9.0.3.tgz", + "integrity": "sha512-YH+wNR66ZRK3vUDDOVHjmS3r6M43uthEI6LP8jQ2/WgjcucqVcckrgroFhvguglgcPMyxkAb/xclcFY47GQrIw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-theme-service-override": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-service-override/-/monaco-vscode-theme-service-override-8.0.4.tgz", - "integrity": "sha512-z2UpL7KQJ/gg1LUP9ya65Qph30bypwiQT+mq9ZM699nQEPpXJ9HGA5AiHE2rf2wlKnbkmis1gdpIXeYQsDLy0g==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-service-override/-/monaco-vscode-theme-service-override-9.0.3.tgz", + "integrity": "sha512-JAxrD45dkumX1ICqkicNoiL2Ut79yApvTRd0iXKZDJ7pNuIIYRy3zmUxm5o0eVw/UIwunzLzjcEPb5Qwh9qrQw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-files-service-override": "8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "@codingame/monaco-vscode-files-service-override": "9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-typescript-basics-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-typescript-basics-default-extension/-/monaco-vscode-typescript-basics-default-extension-8.0.4.tgz", - "integrity": "sha512-IDxx+loL2Kf0PfN6qunWZKp+UxJH4PasdZkjtWLXiHuT619XZbhDRfC342u38u/G3h4hZXzXB6iuRyLyWrtd4A==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-typescript-basics-default-extension/-/monaco-vscode-typescript-basics-default-extension-9.0.3.tgz", + "integrity": "sha512-Opv5L1mHhReNS7bsL5Sp4/xksFgJKsB1vmp2ZsrUD85mLMp4OkIomuCQ1DxfsnI+I+FkJ1lyXW1CBVDWTsqzVg==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@codingame/monaco-vscode-typescript-language-features-default-extension": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-typescript-language-features-default-extension/-/monaco-vscode-typescript-language-features-default-extension-8.0.4.tgz", - "integrity": "sha512-jsZo7M+vS/a+XPrPFSoNVWb568q/hwzSP6cMWCv3SeAmmaxFNko9pnGdRVrikraJ4U6rpB2eqWRXgnURVdOg5A==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-typescript-language-features-default-extension/-/monaco-vscode-typescript-language-features-default-extension-9.0.3.tgz", + "integrity": "sha512-N5Z8t/5oZcpbtLzcmpw/yync0IKPR02otxcp63aHcbzA/KgaC9yeCwKLDsFxOfNhjjZYfP9LpDbuoo4XNjG8SQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/@cspotcode/source-map-support": { @@ -1003,9 +1002,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", "cpu": [ "ppc64" ], @@ -1020,9 +1019,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", "cpu": [ "arm" ], @@ -1037,9 +1036,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", "cpu": [ "arm64" ], @@ -1054,9 +1053,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", "cpu": [ "x64" ], @@ -1071,9 +1070,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", "cpu": [ "arm64" ], @@ -1088,9 +1087,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", "cpu": [ "x64" ], @@ -1105,9 +1104,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", "cpu": [ "arm64" ], @@ -1122,9 +1121,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", "cpu": [ "x64" ], @@ -1139,9 +1138,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", "cpu": [ "arm" ], @@ -1156,9 +1155,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", "cpu": [ "arm64" ], @@ -1173,9 +1172,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", "cpu": [ "ia32" ], @@ -1190,9 +1189,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", "cpu": [ "loong64" ], @@ -1207,9 +1206,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", "cpu": [ "mips64el" ], @@ -1224,9 +1223,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", "cpu": [ "ppc64" ], @@ -1241,9 +1240,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", "cpu": [ "riscv64" ], @@ -1258,9 +1257,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", "cpu": [ "s390x" ], @@ -1275,9 +1274,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "cpu": [ "x64" ], @@ -1292,9 +1291,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", "cpu": [ "x64" ], @@ -1309,9 +1308,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", "cpu": [ "arm64" ], @@ -1326,9 +1325,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", "cpu": [ "x64" ], @@ -1343,9 +1342,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", "cpu": [ "x64" ], @@ -1360,9 +1359,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", "cpu": [ "arm64" ], @@ -1377,9 +1376,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "cpu": [ "ia32" ], @@ -1394,9 +1393,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ "x64" ], @@ -2497,9 +2496,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.3.5", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", - "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "version": "18.3.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.8.tgz", + "integrity": "sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2559,9 +2558,9 @@ "license": "MIT" }, "node_modules/@types/vscode": { - "version": "1.92.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.92.0.tgz", - "integrity": "sha512-DcZoCj17RXlzB4XJ7IfKdPTcTGDLYvTOcTNkvtjXWF+K2TlKzHHkBEXNWQRpBIXixNEUgx39cQeTFunY0E2msw==", + "version": "1.93.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.93.0.tgz", + "integrity": "sha512-kUK6jAHSR5zY8ps42xuW89NLcBpw1kOabah7yv38J8MyiYuOHxLQBi0e7zeXbQgVefDy/mZZetqEFC+Fl5eIEQ==", "dev": true, "license": "MIT" }, @@ -2835,18 +2834,20 @@ } }, "node_modules/@vitest/browser": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-2.0.5.tgz", - "integrity": "sha512-VbOYtu/6R3d7ASZREcrJmRY/sQuRFO9wMVsEDqfYbWiJRh2fDNi8CL1Csn7Ux31pOcPmmM5QvzFCMpiojvVh8g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-2.1.1.tgz", + "integrity": "sha512-wLKqohwlZI24xMIEZAPwv9SVliv1avaIBeE0ou471D++BRPhiw2mubKBczFFIDHXuSL7UXb8/JQK9Ui6ttW9bQ==", "dev": true, "license": "MIT", "dependencies": { "@testing-library/dom": "^10.4.0", "@testing-library/user-event": "^14.5.2", - "@vitest/utils": "2.0.5", - "magic-string": "^0.30.10", - "msw": "^2.3.2", + "@vitest/mocker": "2.1.1", + "@vitest/utils": "2.1.1", + "magic-string": "^0.30.11", + "msw": "^2.3.5", "sirv": "^2.0.4", + "tinyrainbow": "^1.2.0", "ws": "^8.18.0" }, "funding": { @@ -2854,7 +2855,7 @@ }, "peerDependencies": { "playwright": "*", - "vitest": "2.0.5", + "vitest": "2.1.1", "webdriverio": "*" }, "peerDependenciesMeta": { @@ -2870,14 +2871,14 @@ } }, "node_modules/@vitest/expect": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.5.tgz", - "integrity": "sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.1.tgz", + "integrity": "sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", + "@vitest/spy": "2.1.1", + "@vitest/utils": "2.1.1", "chai": "^5.1.1", "tinyrainbow": "^1.2.0" }, @@ -2885,10 +2886,48 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/mocker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.1.tgz", + "integrity": "sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "^2.1.0-beta.1", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.11" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/spy": "2.1.1", + "msw": "^2.3.5", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/@vitest/pretty-format": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.5.tgz", - "integrity": "sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz", + "integrity": "sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2899,13 +2938,13 @@ } }, "node_modules/@vitest/runner": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.5.tgz", - "integrity": "sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.1.tgz", + "integrity": "sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.0.5", + "@vitest/utils": "2.1.1", "pathe": "^1.1.2" }, "funding": { @@ -2913,14 +2952,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.5.tgz", - "integrity": "sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.1.tgz", + "integrity": "sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.0.5", - "magic-string": "^0.30.10", + "@vitest/pretty-format": "2.1.1", + "magic-string": "^0.30.11", "pathe": "^1.1.2" }, "funding": { @@ -2928,9 +2967,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", - "integrity": "sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.1.tgz", + "integrity": "sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==", "dev": true, "license": "MIT", "dependencies": { @@ -2941,14 +2980,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.5.tgz", - "integrity": "sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz", + "integrity": "sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.0.5", - "estree-walker": "^3.0.3", + "@vitest/pretty-format": "2.1.1", "loupe": "^3.1.1", "tinyrainbow": "^1.2.0" }, @@ -2956,16 +2994,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/utils/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/@vscode/iconv-lite-umd": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@vscode/iconv-lite-umd/-/iconv-lite-umd-0.7.0.tgz", @@ -2977,22 +3005,22 @@ "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==" }, "node_modules/@wdio/config": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.6.tgz", - "integrity": "sha512-WsACM5QjT3ZsoPVqHroYt8pOkZx4/6PTdNKm45VL8NHhQe5w9IFbl1fKxFHQ7ZkPI3F+EFvFvubO8puJ0OcSmQ==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.8.tgz", + "integrity": "sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==", "dev": true, "license": "MIT", "dependencies": { - "@wdio/logger": "9.0.4", - "@wdio/types": "9.0.4", - "@wdio/utils": "9.0.6", + "@wdio/logger": "9.0.8", + "@wdio/types": "9.0.8", + "@wdio/utils": "9.0.8", "decamelize": "^6.0.0", "deepmerge-ts": "^7.0.3", "glob": "^10.2.2", "import-meta-resolve": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" } }, "node_modules/@wdio/config/node_modules/glob": { @@ -3033,9 +3061,9 @@ } }, "node_modules/@wdio/logger": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.4.tgz", - "integrity": "sha512-b6gcu0PTVb3fgK4kyAH/k5UUWN5FOUdAfhA4PAY/IZvxZTMFYMqnrZb0WRWWWqL6nu9pcrOVtCOdPBvj0cb+Nw==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", + "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", "dev": true, "license": "MIT", "dependencies": { @@ -3045,13 +3073,13 @@ "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" } }, "node_modules/@wdio/logger/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { @@ -3091,48 +3119,48 @@ } }, "node_modules/@wdio/protocols": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.0.4.tgz", - "integrity": "sha512-T9v8Jkp94NxLLil5J7uJ/+YHk5/7fhOggzGcN+LvuCHS6jbJFZ/11c4SUEuXw27Yqk01fFXPBbF6TwcTTOuW/Q==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.0.8.tgz", + "integrity": "sha512-xRH54byFf623/w/KW62xkf/C2mGyigSfMm+UT3tNEAd5ZA9X2VAWQWQBPzdcrsck7Fxk4zlQX8Kb34RSs7Cy4Q==", "dev": true, "license": "MIT" }, "node_modules/@wdio/repl": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.4.tgz", - "integrity": "sha512-5Bc5ARjWA7t6MZNnVJ9WvO1iDsy6iOsrSDWiP7APWAdaF/SJCP3SFE2c+PdQJpJWhr2Kk0fRGuyDM+GdsmZhwg==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.0.8.tgz", + "integrity": "sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.1.0" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" } }, "node_modules/@wdio/types": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.4.tgz", - "integrity": "sha512-MN7O4Uk3zPWvkN8d6SNdIjd7qHUlTxS7j0QfRPu6TdlYbHu6BJJ8Rr84y7GcUzCnTAJ1nOIpvUyR8MY3hOaVKg==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", + "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.1.0" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" } }, "node_modules/@wdio/utils": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.6.tgz", - "integrity": "sha512-cnPXeW/sfqyKFuRRmADRZDNvFwEBMr7j7wwWLO6q5opoW++dwOdJW4WV0wDZbPcXTtGFCSrGCDLLdGcTAWMb3A==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.8.tgz", + "integrity": "sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==", "dev": true, "license": "MIT", "dependencies": { "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.0.4", - "@wdio/types": "9.0.4", + "@wdio/logger": "9.0.8", + "@wdio/types": "9.0.8", "decamelize": "^6.0.0", "deepmerge-ts": "^7.0.3", "edgedriver": "^5.6.1", @@ -3145,7 +3173,7 @@ "wait-port": "^1.1.0" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" } }, "node_modules/@zip.js/zip.js": { @@ -3604,9 +3632,9 @@ "optional": true }, "node_modules/bare-fs": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.3.tgz", - "integrity": "sha512-7RYKL+vZVCyAsMLi5SPu7QGauGGT8avnP/HO571ndEuV4MYdGXvLhtW67FuLPeEI8EiIY7zbbRR9x7x7HU0kgw==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -3617,9 +3645,9 @@ } }, "node_modules/bare-os": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.2.tgz", - "integrity": "sha512-HZoJwzC+rZ9lqEemTMiO0luOePoGYNBgsLLgegKR/cljiJvcDNhDZQkzC+NC5Oh0aHbdBNSOHpghwMuB5tqhjg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", "dev": true, "license": "Apache-2.0", "optional": true @@ -3636,15 +3664,15 @@ } }, "node_modules/bare-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.2.1.tgz", - "integrity": "sha512-YTB47kHwBW9zSG8LD77MIBAAQXjU2WjAkMHeeb7hUplVs6+IoM5I7uEVQNPMB7lj9r8I76UMdoMkGnCodHOLqg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { "b4a": "^1.6.6", - "streamx": "^2.18.0" + "streamx": "^2.20.0" } }, "node_modules/base64-js": { @@ -3690,9 +3718,10 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -3702,7 +3731,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -3716,6 +3745,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -3724,6 +3754,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -3734,21 +3765,8 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/boolbase": { "version": "1.0.0", @@ -3847,6 +3865,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4170,6 +4189,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4480,6 +4500,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4497,6 +4518,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -4661,9 +4683,9 @@ } }, "node_modules/edgedriver/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { @@ -4764,7 +4786,8 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.4.828", @@ -4779,9 +4802,10 @@ "dev": true }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -4968,9 +4992,9 @@ } }, "node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4981,30 +5005,30 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/escalade": { @@ -5019,7 +5043,8 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -5438,6 +5463,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5466,61 +5492,38 @@ "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -5553,23 +5556,10 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "license": "MIT" }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", @@ -5621,22 +5611,6 @@ "node": "*" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/extract-zip/node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -5794,12 +5768,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -5814,6 +5789,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -5821,7 +5797,8 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/find-up": { "version": "5.0.0", @@ -5929,6 +5906,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6113,13 +6091,16 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=16" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6444,6 +6425,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6524,16 +6506,6 @@ "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/hyperdyperid": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", @@ -6905,19 +6877,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -7154,9 +7113,9 @@ } }, "node_modules/langium": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.1.3.tgz", - "integrity": "sha512-VDmrpRooT2QkKHbEtE5Ld6pbD1HuCKfM1CrAEwEpHBkw3S7xzuIgSJ+BdvFfpEMedymV2ceS+mpUV7qoXDK4mQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.2.0.tgz", + "integrity": "sha512-HxAPgCVC7X+dCN99QKlZMEoaLW4s/mt0IImYrP6ooEBOMh8lJYdFNNSpJ5NIOE+WFwQd3xa2phTJDmJhOWVR7A==", "license": "MIT", "dependencies": { "chevrotain": "~11.0.3", @@ -7170,9 +7129,9 @@ } }, "node_modules/langium-cli": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.1.1.tgz", - "integrity": "sha512-4EYqSoBnJVWqbPAoVYoFUb/n/F1hKatr2sgekd3IrI05WO9bJaYwiGNxPFkaImZCTP/RwE360VkTg7tvYoh1lA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.2.0.tgz", + "integrity": "sha512-4JWeCMuTHyFO+GCnOVT8+jygdob4KnU0uh/26cMxgZ1FlenAk8zrOnrXbuUzIm0FAIetCqrR6GUXqeko+Vg5og==", "dev": true, "license": "MIT", "dependencies": { @@ -7180,8 +7139,8 @@ "commander": "~11.0.0", "fs-extra": "~11.1.1", "jsonschema": "~1.4.1", - "langium": "~3.1.0", - "langium-railroad": "~3.1.0", + "langium": "~3.2.0", + "langium-railroad": "~3.2.0", "lodash": "~4.17.21" }, "bin": { @@ -7227,12 +7186,13 @@ } }, "node_modules/langium-railroad": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.1.0.tgz", - "integrity": "sha512-+/SJwIPAOBQCm0hoepUcckhrb6S/TnuAPy7c03pznVgUXH6OlbXy9FC62L2C2GclWRQlnXJVb7tCi0tmuagK+w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.2.0.tgz", + "integrity": "sha512-8wJqRid1udSH9PKo8AkRrJCUNHQ6Xu9tGi+//bLdHGDdlK9gpps1AwO71ufE864/so77K4ZmqBuLnBnxPcGs/Q==", "dev": true, + "license": "MIT", "dependencies": { - "langium": "~3.1.0", + "langium": "~3.2.0", "railroad-diagrams": "~1.0.0" } }, @@ -7301,9 +7261,9 @@ } }, "node_modules/locate-app": { - "version": "2.4.38", - "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.38.tgz", - "integrity": "sha512-fJNTsDQZSiy+bn98RicvVX8e7HwH3YqZnRRisircGDGPpf0eZ2x57Ev7LGs0pCBO7hzjINVtVr5QFfK8KH7hjg==", + "version": "2.4.43", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.43.tgz", + "integrity": "sha512-BX6NEdECUGcDQw8aqqg02qLyF9rF8V+dAfyAnBzL2AofIlIvf4Q6EGXnzVWpWot9uBE+x/o8CjXHo7Zlegu91Q==", "dev": true, "funding": [ { @@ -7315,7 +7275,7 @@ "url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing" } ], - "license": "SEE LICENSE IN LICENSE", + "license": "Apache-2.0", "dependencies": { "@promptbook/utils": "0.70.0-1", "type-fest": "2.13.0", @@ -7380,9 +7340,9 @@ "dev": true }, "node_modules/loglevel": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, "license": "MIT", "engines": { @@ -7455,10 +7415,23 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/marked": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -7484,16 +7457,13 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge2": { "version": "1.4.1", @@ -7557,19 +7527,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", @@ -7617,12 +7574,12 @@ }, "node_modules/monaco-editor": { "name": "@codingame/monaco-vscode-editor-api", - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-api/-/monaco-vscode-editor-api-8.0.4.tgz", - "integrity": "sha512-rKUdFRsnzTV1dj6FL/MD+cBIUAGv9aJNz8bTx4BA5sDK3lDWuifhdCBvk4WZEj6glfXe3sEfGXKy1Vp5btDOJQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-api/-/monaco-vscode-editor-api-9.0.3.tgz", + "integrity": "sha512-zDkfebBW93La2+0nUibsdqVMYFT6IsirknbYD0c82AyydGk44XBufsXTsOpRqBogJ3vgZCLM44FhFk35iFBB0w==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, "node_modules/monaco-editor-wrapper": { @@ -7803,35 +7760,6 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -7936,6 +7864,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -7952,22 +7881,6 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", @@ -8133,6 +8046,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8428,9 +8342,9 @@ "license": "MIT" }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "license": "MIT", "dependencies": { @@ -8448,9 +8362,9 @@ } }, "node_modules/pyright": { - "version": "1.1.379", - "resolved": "https://registry.npmjs.org/pyright/-/pyright-1.1.379.tgz", - "integrity": "sha512-n0X+IMqot6zL5b54vfU9GattS8jM9IOh8TRFho1k/6VoyjrpzQ7TnU6PtZzwEZNJaZi5izoLIDeMnGmbin8n8Q==", + "version": "1.1.381", + "resolved": "https://registry.npmjs.org/pyright/-/pyright-1.1.381.tgz", + "integrity": "sha512-j9uGIgEBtVP9Xq0QM/NRZeolUxkfxPZT0rovsjiN0vjVF1vcyqjV2hAsidCtX+0GUTAjpEA511WZAyBCC8x97A==", "license": "MIT", "bin": { "pyright": "index.js", @@ -8464,10 +8378,10 @@ } }, "node_modules/qs": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", - "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", - "dev": true, + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -8521,12 +8435,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8535,6 +8451,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -8549,6 +8466,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -8888,9 +8806,10 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -8914,6 +8833,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -8921,12 +8841,23 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/serialize-error": { "version": "11.0.3", @@ -8956,14 +8887,15 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -9009,7 +8941,8 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -9211,10 +9144,11 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", - "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, + "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", @@ -9372,19 +9306,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -9496,10 +9417,17 @@ "dev": true, "license": "MIT" }, + "node_modules/tinyexec": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", + "dev": true, + "license": "MIT" + }, "node_modules/tinypool": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", - "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", + "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", "dev": true, "license": "MIT", "engines": { @@ -9517,9 +9445,9 @@ } }, "node_modules/tinyspy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", - "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", + "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, "license": "MIT", "engines": { @@ -9552,6 +9480,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -9722,6 +9651,7 @@ "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -9910,6 +9840,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10015,9 +9946,9 @@ } }, "node_modules/vite": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz", - "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==", + "version": "5.4.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.7.tgz", + "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10075,16 +10006,15 @@ } }, "node_modules/vite-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.5.tgz", - "integrity": "sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.1.tgz", + "integrity": "sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.5", + "debug": "^4.3.6", "pathe": "^1.1.2", - "tinyrainbow": "^1.2.0", "vite": "^5.0.0" }, "bin": { @@ -10504,30 +10434,30 @@ } }, "node_modules/vitest": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.5.tgz", - "integrity": "sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.1.tgz", + "integrity": "sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.5", - "@vitest/pretty-format": "^2.0.5", - "@vitest/runner": "2.0.5", - "@vitest/snapshot": "2.0.5", - "@vitest/spy": "2.0.5", - "@vitest/utils": "2.0.5", + "@vitest/expect": "2.1.1", + "@vitest/mocker": "2.1.1", + "@vitest/pretty-format": "^2.1.1", + "@vitest/runner": "2.1.1", + "@vitest/snapshot": "2.1.1", + "@vitest/spy": "2.1.1", + "@vitest/utils": "2.1.1", "chai": "^5.1.1", - "debug": "^4.3.5", - "execa": "^8.0.1", - "magic-string": "^0.30.10", + "debug": "^4.3.6", + "magic-string": "^0.30.11", "pathe": "^1.1.2", "std-env": "^3.7.0", - "tinybench": "^2.8.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.0", "tinypool": "^1.0.0", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.0.5", + "vite-node": "2.1.1", "why-is-node-running": "^2.3.0" }, "bin": { @@ -10542,8 +10472,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.5", - "@vitest/ui": "2.0.5", + "@vitest/browser": "2.1.1", + "@vitest/ui": "2.1.1", "happy-dom": "*", "jsdom": "*" }, @@ -10570,20 +10500,21 @@ }, "node_modules/vscode": { "name": "@codingame/monaco-vscode-api", - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-8.0.4.tgz", - "integrity": "sha512-qZ+HwIijDvzwwWscMA73y9ARu5zUaENOdzi0jQftJP9j2k96cRghsaCV25OgnmpZ/1BemjB4HhHCcr71Gq+GPQ==", - "license": "MIT", - "dependencies": { - "@codingame/monaco-vscode-base-service-override": "8.0.4", - "@codingame/monaco-vscode-environment-service-override": "8.0.4", - "@codingame/monaco-vscode-extensions-service-override": "8.0.4", - "@codingame/monaco-vscode-files-service-override": "8.0.4", - "@codingame/monaco-vscode-host-service-override": "8.0.4", - "@codingame/monaco-vscode-layout-service-override": "8.0.4", - "@codingame/monaco-vscode-quickaccess-service-override": "8.0.4", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-9.0.3.tgz", + "integrity": "sha512-++m+qKQUrJEpvrDeIm+0J4uuvd3jqCWjUjpI60WtK1XgtfmcKl6j4YVmCuEvA1ek1O2uPUyF52vJJOycsr1mlQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-base-service-override": "9.0.3", + "@codingame/monaco-vscode-environment-service-override": "9.0.3", + "@codingame/monaco-vscode-extensions-service-override": "9.0.3", + "@codingame/monaco-vscode-files-service-override": "9.0.3", + "@codingame/monaco-vscode-host-service-override": "9.0.3", + "@codingame/monaco-vscode-layout-service-override": "9.0.3", + "@codingame/monaco-vscode-quickaccess-service-override": "9.0.3", "@vscode/iconv-lite-umd": "0.7.0", - "jschardet": "3.1.3" + "jschardet": "3.1.3", + "marked": "~14.0.0" } }, "node_modules/vscode-json-languageservice": { @@ -10676,9 +10607,10 @@ "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==" }, "node_modules/vscode-textmate": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.0.0.tgz", - "integrity": "sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==" + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.1.0.tgz", + "integrity": "sha512-lxKSVp2DkFOx9RDAvpiYUrB9/KT1fAfi1aE8CBGstP8N7rLF+Seifj8kDA198X0mYj1CjQUC+81+nQf8CO0nVA==", + "license": "MIT" }, "node_modules/vscode-uri": { "version": "3.0.8", @@ -10728,41 +10660,41 @@ } }, "node_modules/webdriver": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.7.tgz", - "integrity": "sha512-0PN4omqCGlgi3RG0LyrQXr0RUmlDCenNtpN+dfzikfYoV+CHiCw2GMnZp2XCuYUnU01MaCKgRQxLuGobyZov+A==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.8.tgz", + "integrity": "sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "9.0.6", - "@wdio/logger": "9.0.4", - "@wdio/protocols": "9.0.4", - "@wdio/types": "9.0.4", - "@wdio/utils": "9.0.6", + "@wdio/config": "9.0.8", + "@wdio/logger": "9.0.8", + "@wdio/protocols": "9.0.8", + "@wdio/types": "9.0.8", + "@wdio/utils": "9.0.8", "deepmerge-ts": "^7.0.3", "ws": "^8.8.0" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" } }, "node_modules/webdriverio": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.7.tgz", - "integrity": "sha512-/6CvJkKpUWYbX/59PNJCHXGLPwulQ/bXZwlIUrsF6MWKdf8Eb6yTaXkMJBaBy5x496b50PQcXkbe+qpfsnqXsg==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.9.tgz", + "integrity": "sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.0.6", - "@wdio/logger": "9.0.4", - "@wdio/protocols": "9.0.4", - "@wdio/repl": "9.0.4", - "@wdio/types": "9.0.4", - "@wdio/utils": "9.0.6", + "@wdio/config": "9.0.8", + "@wdio/logger": "9.0.8", + "@wdio/protocols": "9.0.8", + "@wdio/repl": "9.0.8", + "@wdio/types": "9.0.8", + "@wdio/utils": "9.0.8", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", @@ -10781,10 +10713,10 @@ "rgb2hex": "0.2.5", "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.0.7" + "webdriver": "9.0.8" }, "engines": { - "node": ">=18" + "node": ">=18.20.0" }, "peerDependencies": { "puppeteer-core": "^22.3.0" @@ -11084,15 +11016,15 @@ }, "packages/client": { "name": "monaco-languageclient", - "version": "9.0.0-next.0", + "version": "9.0.0-next.1", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-extensions-service-override": "~8.0.4", - "@codingame/monaco-vscode-languages-service-override": "~8.0.4", - "@codingame/monaco-vscode-localization-service-override": "~8.0.4", - "@codingame/monaco-vscode-model-service-override": "~8.0.4", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "@codingame/monaco-vscode-extensions-service-override": "~9.0.3", + "@codingame/monaco-vscode-languages-service-override": "~9.0.3", + "@codingame/monaco-vscode-localization-service-override": "~9.0.3", + "@codingame/monaco-vscode-model-service-override": "~9.0.3", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "vscode-languageclient": "~9.0.1" }, "engines": { @@ -11100,8 +11032,8 @@ "npm": ">=9.0.0" }, "peerDependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependenciesMeta": { "monaco-editor": { @@ -11117,35 +11049,35 @@ "version": "2024.9.1", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-configuration-service-override": "~8.0.4", - "@codingame/monaco-vscode-files-service-override": "~8.0.4", - "@codingame/monaco-vscode-groovy-default-extension": "~8.0.4", - "@codingame/monaco-vscode-java-default-extension": "~8.0.4", - "@codingame/monaco-vscode-javascript-default-extension": "~8.0.4", - "@codingame/monaco-vscode-json-default-extension": "~8.0.4", - "@codingame/monaco-vscode-keybindings-service-override": "~8.0.4", - "@codingame/monaco-vscode-lifecycle-service-override": "~8.0.4", - "@codingame/monaco-vscode-localization-service-override": "~8.0.4", - "@codingame/monaco-vscode-python-default-extension": "~8.0.4", - "@codingame/monaco-vscode-standalone-json-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-languages": "~8.0.4", - "@codingame/monaco-vscode-standalone-typescript-language-features": "~8.0.4", - "@codingame/monaco-vscode-textmate-service-override": "~8.0.4", - "@codingame/monaco-vscode-theme-defaults-default-extension": "~8.0.4", - "@codingame/monaco-vscode-theme-service-override": "~8.0.4", - "@codingame/monaco-vscode-typescript-basics-default-extension": "~8.0.4", - "@codingame/monaco-vscode-typescript-language-features-default-extension": "~8.0.4", - "@typefox/monaco-editor-react": "~6.0.0-next.0", - "express": "~4.19.2", - "langium": "~3.1.3", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-editor-wrapper": "~6.0.0-next.0", - "monaco-languageclient": "~9.0.0-next.0", - "pyright": "~1.1.379", + "@codingame/monaco-vscode-configuration-service-override": "~9.0.3", + "@codingame/monaco-vscode-files-service-override": "~9.0.3", + "@codingame/monaco-vscode-groovy-default-extension": "~9.0.3", + "@codingame/monaco-vscode-java-default-extension": "~9.0.3", + "@codingame/monaco-vscode-javascript-default-extension": "~9.0.3", + "@codingame/monaco-vscode-json-default-extension": "~9.0.3", + "@codingame/monaco-vscode-keybindings-service-override": "~9.0.3", + "@codingame/monaco-vscode-lifecycle-service-override": "~9.0.3", + "@codingame/monaco-vscode-localization-service-override": "~9.0.3", + "@codingame/monaco-vscode-python-default-extension": "~9.0.3", + "@codingame/monaco-vscode-standalone-json-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-languages": "~9.0.3", + "@codingame/monaco-vscode-standalone-typescript-language-features": "~9.0.3", + "@codingame/monaco-vscode-textmate-service-override": "~9.0.3", + "@codingame/monaco-vscode-theme-defaults-default-extension": "~9.0.3", + "@codingame/monaco-vscode-theme-service-override": "~9.0.3", + "@codingame/monaco-vscode-typescript-basics-default-extension": "~9.0.3", + "@codingame/monaco-vscode-typescript-language-features-default-extension": "~9.0.3", + "@typefox/monaco-editor-react": "~6.0.0-next.1", + "express": "~4.21.0", + "langium": "~3.2.0", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-editor-wrapper": "~6.0.0-next.1", + "monaco-languageclient": "~9.0.0-next.1", + "pyright": "~1.1.381", "react": "~18.3.1", "react-dom": "~18.3.1", "request-light": "~0.8.0", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "vscode-json-languageservice": "~5.4.1", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1", @@ -11156,7 +11088,7 @@ "devDependencies": { "@types/express": "~4.17.21", "@types/ws": "~8.5.12", - "langium-cli": "~3.1.1", + "langium-cli": "~3.2.0", "ts-node": "~10.9.1", "vscode-languageserver-types": "~3.17.5" } @@ -11174,46 +11106,46 @@ }, "packages/wrapper": { "name": "monaco-editor-wrapper", - "version": "6.0.0-next.0", - "license": "MIT", - "dependencies": { - "@codingame/monaco-vscode-configuration-service-override": "~8.0.4", - "@codingame/monaco-vscode-editor-service-override": "~8.0.4", - "@codingame/monaco-vscode-language-pack-cs": "~8.0.4", - "@codingame/monaco-vscode-language-pack-de": "~8.0.4", - "@codingame/monaco-vscode-language-pack-es": "~8.0.4", - "@codingame/monaco-vscode-language-pack-fr": "~8.0.4", - "@codingame/monaco-vscode-language-pack-it": "~8.0.4", - "@codingame/monaco-vscode-language-pack-ja": "~8.0.4", - "@codingame/monaco-vscode-language-pack-ko": "~8.0.4", - "@codingame/monaco-vscode-language-pack-pl": "~8.0.4", - "@codingame/monaco-vscode-language-pack-pt-br": "~8.0.4", - "@codingame/monaco-vscode-language-pack-qps-ploc": "~8.0.4", - "@codingame/monaco-vscode-language-pack-ru": "~8.0.4", - "@codingame/monaco-vscode-language-pack-tr": "~8.0.4", - "@codingame/monaco-vscode-language-pack-zh-hans": "~8.0.4", - "@codingame/monaco-vscode-language-pack-zh-hant": "~8.0.4", - "@codingame/monaco-vscode-monarch-service-override": "~8.0.4", - "@codingame/monaco-vscode-textmate-service-override": "~8.0.4", - "@codingame/monaco-vscode-theme-defaults-default-extension": "~8.0.4", - "@codingame/monaco-vscode-theme-service-override": "~8.0.4", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "version": "6.0.0-next.1", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-configuration-service-override": "~9.0.3", + "@codingame/monaco-vscode-editor-service-override": "~9.0.3", + "@codingame/monaco-vscode-language-pack-cs": "~9.0.3", + "@codingame/monaco-vscode-language-pack-de": "~9.0.3", + "@codingame/monaco-vscode-language-pack-es": "~9.0.3", + "@codingame/monaco-vscode-language-pack-fr": "~9.0.3", + "@codingame/monaco-vscode-language-pack-it": "~9.0.3", + "@codingame/monaco-vscode-language-pack-ja": "~9.0.3", + "@codingame/monaco-vscode-language-pack-ko": "~9.0.3", + "@codingame/monaco-vscode-language-pack-pl": "~9.0.3", + "@codingame/monaco-vscode-language-pack-pt-br": "~9.0.3", + "@codingame/monaco-vscode-language-pack-qps-ploc": "~9.0.3", + "@codingame/monaco-vscode-language-pack-ru": "~9.0.3", + "@codingame/monaco-vscode-language-pack-tr": "~9.0.3", + "@codingame/monaco-vscode-language-pack-zh-hans": "~9.0.3", + "@codingame/monaco-vscode-language-pack-zh-hant": "~9.0.3", + "@codingame/monaco-vscode-monarch-service-override": "~9.0.3", + "@codingame/monaco-vscode-textmate-service-override": "~9.0.3", + "@codingame/monaco-vscode-theme-defaults-default-extension": "~9.0.3", + "@codingame/monaco-vscode-theme-service-override": "~9.0.3", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "vscode-languageclient": "~9.0.1", "vscode-languageserver-protocol": "~3.17.5", "vscode-ws-jsonrpc": "~3.3.2" }, "devDependencies": { - "@codingame/monaco-vscode-standalone-css-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-html-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-json-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-languages": "~8.0.4", - "@codingame/monaco-vscode-standalone-typescript-language-features": "~8.0.4" + "@codingame/monaco-vscode-standalone-css-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-html-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-json-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-languages": "~9.0.3", + "@codingame/monaco-vscode-standalone-typescript-language-features": "~9.0.3" }, "peerDependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-languageclient": "~9.0.0-next.0", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-languageclient": "~9.0.0-next.1", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependenciesMeta": { "monaco-editor": { @@ -11229,21 +11161,21 @@ }, "packages/wrapper-react": { "name": "@typefox/monaco-editor-react", - "version": "6.0.0-next.0", + "version": "6.0.0-next.1", "license": "MIT", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-editor-wrapper": "~6.0.0-next.0", - "monaco-languageclient": "~9.0.0-next.0", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-editor-wrapper": "~6.0.0-next.1", + "monaco-languageclient": "~9.0.0-next.1", "react": "~18.3.1", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-editor-wrapper": "~6.0.0-next.0", - "monaco-languageclient": "~9.0.0-next.0", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-editor-wrapper": "~6.0.0-next.1", + "monaco-languageclient": "~9.0.0-next.1", "react": "~18.3.1", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependenciesMeta": { "monaco-editor": { diff --git a/package.json b/package.json index d3ca70917..845a2123c 100644 --- a/package.json +++ b/package.json @@ -3,19 +3,18 @@ "type": "module", "devDependencies": { "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", - "@codingame/monaco-vscode-rollup-vsix-plugin": "~8.0.4", - "@rollup/pluginutils": "~5.1.0", + "@codingame/monaco-vscode-rollup-vsix-plugin": "~9.0.3", "@testing-library/react": "~16.0.1", "@types/node": "~20.16.5", - "@types/react": "~18.3.5", + "@types/react": "~18.3.8", "@types/react-dom": "~18.3.0", - "@types/vscode": "~1.92.0", + "@types/vscode": "~1.93.0", "@typescript-eslint/eslint-plugin": "~7.18.0", "@typescript-eslint/parser": "~7.18.0", "@vitejs/plugin-react": "~4.3.1", - "@vitest/browser": "~2.0.5", + "@vitest/browser": "~2.1.1", "editorconfig": "~2.0.0", - "esbuild": "~0.23.1", + "esbuild": "~0.24.0", "eslint": "~8.57.0", "eslint-plugin-header": "~3.1.1", "eslint-plugin-import": "~2.29.1", @@ -23,10 +22,10 @@ "http-server": "~14.1.1", "minimatch": "~10.0.1", "typescript": "~5.5.4", - "vite": "~5.4.3", - "vite-node": "~2.0.5", - "vitest": "~2.0.5", - "webdriverio": "~9.0.7" + "vite": "~5.4.7", + "vite-node": "~2.1.1", + "vitest": "~2.1.1", + "webdriverio": "~9.0.9" }, "volta": { "node": "20.17.0", diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 559d25601..72ccf343f 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -2,8 +2,9 @@ All notable changes to this npm module are documented in this file. -## [9.0.0-next.0] - 2024-08-26 +## [9.0.0-next.1] - 2024-09-xy +- Update to monaco-vscode-api 9.0.3 (monaco-editor 0.52.0) - Pass MessageTransports directly ## [8.8.3] - 2024-08-26 diff --git a/packages/client/package.json b/packages/client/package.json index dd8e84871..6ff3a3618 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "monaco-languageclient", - "version": "9.0.0-next.0", + "version": "9.0.0-next.1", "description": "Monaco Language client implementation", "author": { "name": "TypeFox GmbH", @@ -62,17 +62,17 @@ "LICENSE" ], "dependencies": { - "@codingame/monaco-vscode-extensions-service-override": "~8.0.4", - "@codingame/monaco-vscode-languages-service-override": "~8.0.4", - "@codingame/monaco-vscode-localization-service-override": "~8.0.4", - "@codingame/monaco-vscode-model-service-override": "~8.0.4", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "@codingame/monaco-vscode-extensions-service-override": "~9.0.3", + "@codingame/monaco-vscode-languages-service-override": "~9.0.3", + "@codingame/monaco-vscode-localization-service-override": "~9.0.3", + "@codingame/monaco-vscode-model-service-override": "~9.0.3", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "vscode-languageclient": "~9.0.1" }, "peerDependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependenciesMeta": { "monaco-editor": { diff --git a/packages/examples/CHANGELOG.md b/packages/examples/CHANGELOG.md index b0b521bca..bc6ecf1aa 100644 --- a/packages/examples/CHANGELOG.md +++ b/packages/examples/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this npm module are documented in this file. ## [2024.9.1] - 2024-09-xy -- Updated to `monaco-languageclient@9.0.0-next.0`, `monaco-editor-wrapper@6.0.0-next.0` and `@typefox/monaco-editor-react@6.0.0-next.0`. Updated all `@codingame/monaco-vscode` packages to `8.0.4`. +- Updated to `monaco-languageclient@9.0.0-next.1`, `monaco-editor-wrapper@6.0.0-next.1` and `@typefox/monaco-editor-react@6.0.0-next.1`. Updated all `@codingame/monaco-vscode` packages to `9.0.3`. ## [2024.8.4] - 2024-08-26 diff --git a/packages/examples/package.json b/packages/examples/package.json index 2ce10f289..d6e5fd0f4 100644 --- a/packages/examples/package.json +++ b/packages/examples/package.json @@ -54,35 +54,35 @@ } }, "dependencies": { - "@codingame/monaco-vscode-configuration-service-override": "~8.0.4", - "@codingame/monaco-vscode-files-service-override": "~8.0.4", - "@codingame/monaco-vscode-groovy-default-extension": "~8.0.4", - "@codingame/monaco-vscode-keybindings-service-override": "~8.0.4", - "@codingame/monaco-vscode-lifecycle-service-override": "~8.0.4", - "@codingame/monaco-vscode-localization-service-override": "~8.0.4", - "@codingame/monaco-vscode-java-default-extension": "~8.0.4", - "@codingame/monaco-vscode-javascript-default-extension": "~8.0.4", - "@codingame/monaco-vscode-json-default-extension": "~8.0.4", - "@codingame/monaco-vscode-python-default-extension": "~8.0.4", - "@codingame/monaco-vscode-standalone-languages": "~8.0.4", - "@codingame/monaco-vscode-standalone-typescript-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-json-language-features": "~8.0.4", - "@codingame/monaco-vscode-textmate-service-override": "~8.0.4", - "@codingame/monaco-vscode-theme-defaults-default-extension": "~8.0.4", - "@codingame/monaco-vscode-theme-service-override": "~8.0.4", - "@codingame/monaco-vscode-typescript-basics-default-extension": "~8.0.4", - "@codingame/monaco-vscode-typescript-language-features-default-extension": "~8.0.4", - "@typefox/monaco-editor-react": "~6.0.0-next.0", - "express": "~4.19.2", - "langium": "~3.1.3", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-editor-wrapper": "~6.0.0-next.0", - "monaco-languageclient": "~9.0.0-next.0", - "pyright": "~1.1.379", + "@codingame/monaco-vscode-configuration-service-override": "~9.0.3", + "@codingame/monaco-vscode-files-service-override": "~9.0.3", + "@codingame/monaco-vscode-groovy-default-extension": "~9.0.3", + "@codingame/monaco-vscode-keybindings-service-override": "~9.0.3", + "@codingame/monaco-vscode-lifecycle-service-override": "~9.0.3", + "@codingame/monaco-vscode-localization-service-override": "~9.0.3", + "@codingame/monaco-vscode-java-default-extension": "~9.0.3", + "@codingame/monaco-vscode-javascript-default-extension": "~9.0.3", + "@codingame/monaco-vscode-json-default-extension": "~9.0.3", + "@codingame/monaco-vscode-python-default-extension": "~9.0.3", + "@codingame/monaco-vscode-standalone-languages": "~9.0.3", + "@codingame/monaco-vscode-standalone-typescript-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-json-language-features": "~9.0.3", + "@codingame/monaco-vscode-textmate-service-override": "~9.0.3", + "@codingame/monaco-vscode-theme-defaults-default-extension": "~9.0.3", + "@codingame/monaco-vscode-theme-service-override": "~9.0.3", + "@codingame/monaco-vscode-typescript-basics-default-extension": "~9.0.3", + "@codingame/monaco-vscode-typescript-language-features-default-extension": "~9.0.3", + "@typefox/monaco-editor-react": "~6.0.0-next.1", + "express": "~4.21.0", + "langium": "~3.2.0", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-editor-wrapper": "~6.0.0-next.1", + "monaco-languageclient": "~9.0.0-next.1", + "pyright": "~1.1.381", "react": "~18.3.1", "react-dom": "~18.3.1", "request-light": "~0.8.0", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "vscode-json-languageservice": "~5.4.1", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1", @@ -93,7 +93,7 @@ "devDependencies": { "@types/express": "~4.17.21", "@types/ws": "~8.5.12", - "langium-cli": "~3.1.1", + "langium-cli": "~3.2.0", "ts-node": "~10.9.1", "vscode-languageserver-types": "~3.17.5" }, diff --git a/packages/examples/src/common/node/server-commons.ts b/packages/examples/src/common/node/server-commons.ts index bf95c60ef..88067e0a1 100644 --- a/packages/examples/src/common/node/server-commons.ts +++ b/packages/examples/src/common/node/server-commons.ts @@ -43,7 +43,7 @@ export const launchLanguageServer = (runconfig: LanguageServerRunConfig, socket: const writer = new WebSocketMessageWriter(socket); const socketConnection = createConnection(reader, writer, () => socket.dispose()); const serverConnection = createServerProcess(serverName, runCommand, runCommandArgs, spawnOptions); - if (serverConnection) { + if (serverConnection !== undefined) { forward(socketConnection, serverConnection, message => { if (Message.isRequest(message)) { if (message.method === InitializeRequest.type.method) { diff --git a/packages/wrapper-react/CHANGELOG.md b/packages/wrapper-react/CHANGELOG.md index 19c250728..6e00bd70e 100644 --- a/packages/wrapper-react/CHANGELOG.md +++ b/packages/wrapper-react/CHANGELOG.md @@ -2,9 +2,9 @@ All notable changes to npm module [@typefox/monaco-editor-react](https://www.npmjs.com/package/@typefox/monaco-editor-react) are documented in this file. -## [6.0.0-next.0] - 2024-09-xy +## [6.0.0-next.1] - 2024-09-xy -- Updated to `monaco-editor-wrapper@9.0.0-next.0` and `monaco-languageclient@6.0.0-next.0`. Updated all `@codingame/monaco-vscode` packages to `8.0.4`. +- Updated to `monaco-editor-wrapper@9.0.0-next.1` and `monaco-languageclient@6.0.0-next.1`. Updated all `@codingame/monaco-vscode` packages to `9.0.3`. ## [4.5.3] - 2024-08-26 diff --git a/packages/wrapper-react/package.json b/packages/wrapper-react/package.json index e7fee5f18..d41434da3 100644 --- a/packages/wrapper-react/package.json +++ b/packages/wrapper-react/package.json @@ -1,6 +1,6 @@ { "name": "@typefox/monaco-editor-react", - "version": "6.0.0-next.0", + "version": "6.0.0-next.1", "license": "MIT", "description": "React component for Monaco-Editor and Monaco Languageclient", "keywords": [ @@ -42,18 +42,18 @@ "npm": "10.8.3" }, "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-editor-wrapper": "~6.0.0-next.0", - "monaco-languageclient": "~9.0.0-next.0", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-editor-wrapper": "~6.0.0-next.1", + "monaco-languageclient": "~9.0.0-next.1", "react": "~18.3.1", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-editor-wrapper": "~6.0.0-next.0", - "monaco-languageclient": "~9.0.0-next.0", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-editor-wrapper": "~6.0.0-next.1", + "monaco-languageclient": "~9.0.0-next.1", "react": "~18.3.1", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependenciesMeta": { "monaco-editor": { diff --git a/packages/wrapper/CHANGELOG.md b/packages/wrapper/CHANGELOG.md index 7d5701b77..bda57167d 100644 --- a/packages/wrapper/CHANGELOG.md +++ b/packages/wrapper/CHANGELOG.md @@ -2,9 +2,9 @@ All notable changes to npm module [monaco-editor-wrapper](https://www.npmjs.com/package/monaco-editor-wrapper) are documented in this file. -## [6.0.0-next.0] - 2024-08-xy +## [6.0.0-next.1] - 2024-08-xy -- Updated to `monaco-languageclient@9.0.0-next.0`. Updated all `@codingame/monaco-vscode` packages to `8.0.4`. +- Updated to `monaco-languageclient@9.0.0-next.1`. Updated all `@codingame/monaco-vscode` packages to `9.0.3`. ## [5.5.3] - 2024-08-26 diff --git a/packages/wrapper/package.json b/packages/wrapper/package.json index 5cc3da210..ad06fc486 100644 --- a/packages/wrapper/package.json +++ b/packages/wrapper/package.json @@ -1,6 +1,6 @@ { "name": "monaco-editor-wrapper", - "version": "6.0.0-next.0", + "version": "6.0.0-next.1", "license": "MIT", "description": "Wrapper for monaco-vscode-editor-api and monaco-languageclient", "keywords": [ @@ -85,43 +85,43 @@ "npm": "10.8.3" }, "dependencies": { - "@codingame/monaco-vscode-configuration-service-override": "~8.0.4", - "@codingame/monaco-vscode-editor-service-override": "~8.0.4", - "@codingame/monaco-vscode-language-pack-cs": "~8.0.4", - "@codingame/monaco-vscode-language-pack-de": "~8.0.4", - "@codingame/monaco-vscode-language-pack-es": "~8.0.4", - "@codingame/monaco-vscode-language-pack-fr": "~8.0.4", - "@codingame/monaco-vscode-language-pack-it": "~8.0.4", - "@codingame/monaco-vscode-language-pack-ja": "~8.0.4", - "@codingame/monaco-vscode-language-pack-ko": "~8.0.4", - "@codingame/monaco-vscode-language-pack-pl": "~8.0.4", - "@codingame/monaco-vscode-language-pack-pt-br": "~8.0.4", - "@codingame/monaco-vscode-language-pack-qps-ploc": "~8.0.4", - "@codingame/monaco-vscode-language-pack-ru": "~8.0.4", - "@codingame/monaco-vscode-language-pack-tr": "~8.0.4", - "@codingame/monaco-vscode-language-pack-zh-hans": "~8.0.4", - "@codingame/monaco-vscode-language-pack-zh-hant": "~8.0.4", - "@codingame/monaco-vscode-monarch-service-override": "~8.0.4", - "@codingame/monaco-vscode-textmate-service-override": "~8.0.4", - "@codingame/monaco-vscode-theme-defaults-default-extension": "~8.0.4", - "@codingame/monaco-vscode-theme-service-override": "~8.0.4", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "@codingame/monaco-vscode-configuration-service-override": "~9.0.3", + "@codingame/monaco-vscode-editor-service-override": "~9.0.3", + "@codingame/monaco-vscode-language-pack-cs": "~9.0.3", + "@codingame/monaco-vscode-language-pack-de": "~9.0.3", + "@codingame/monaco-vscode-language-pack-es": "~9.0.3", + "@codingame/monaco-vscode-language-pack-fr": "~9.0.3", + "@codingame/monaco-vscode-language-pack-it": "~9.0.3", + "@codingame/monaco-vscode-language-pack-ja": "~9.0.3", + "@codingame/monaco-vscode-language-pack-ko": "~9.0.3", + "@codingame/monaco-vscode-language-pack-pl": "~9.0.3", + "@codingame/monaco-vscode-language-pack-pt-br": "~9.0.3", + "@codingame/monaco-vscode-language-pack-qps-ploc": "~9.0.3", + "@codingame/monaco-vscode-language-pack-ru": "~9.0.3", + "@codingame/monaco-vscode-language-pack-tr": "~9.0.3", + "@codingame/monaco-vscode-language-pack-zh-hans": "~9.0.3", + "@codingame/monaco-vscode-language-pack-zh-hant": "~9.0.3", + "@codingame/monaco-vscode-monarch-service-override": "~9.0.3", + "@codingame/monaco-vscode-textmate-service-override": "~9.0.3", + "@codingame/monaco-vscode-theme-defaults-default-extension": "~9.0.3", + "@codingame/monaco-vscode-theme-service-override": "~9.0.3", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "vscode-languageclient": "~9.0.1", "vscode-languageserver-protocol": "~3.17.5", "vscode-ws-jsonrpc": "~3.3.2" }, "devDependencies": { - "@codingame/monaco-vscode-standalone-languages": "~8.0.4", - "@codingame/monaco-vscode-standalone-css-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-html-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-json-language-features": "~8.0.4", - "@codingame/monaco-vscode-standalone-typescript-language-features": "~8.0.4" + "@codingame/monaco-vscode-standalone-languages": "~9.0.3", + "@codingame/monaco-vscode-standalone-css-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-html-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-json-language-features": "~9.0.3", + "@codingame/monaco-vscode-standalone-typescript-language-features": "~9.0.3" }, "peerDependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-languageclient": "~9.0.0-next.0", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-languageclient": "~9.0.0-next.1", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "peerDependenciesMeta": { "monaco-editor": { diff --git a/packages/wrapper/src/languageClientWrapper.ts b/packages/wrapper/src/languageClientWrapper.ts index aba92f200..6eedc15ff 100644 --- a/packages/wrapper/src/languageClientWrapper.ts +++ b/packages/wrapper/src/languageClientWrapper.ts @@ -258,40 +258,31 @@ export class LanguageClientWrapper { } } - protected disposeWorker(keepWorker?: boolean) { - if (keepWorker === undefined || keepWorker === false) { - this.worker?.terminate(); - this.worker = undefined; - } + protected disposeWorker() { + this.worker?.terminate(); + this.worker = undefined; } - async disposeLanguageClient(keepWorker?: boolean): Promise { - // If there is no language client, try to terminate the worker - if (!this.languageClient) { - this.disposeWorker(keepWorker); - return Promise.resolve(); - } - - // then attempt to dispose the LC - if (this.languageClient.isRunning()) { - try { + async disposeLanguageClient(keepWorker: boolean): Promise { + try { + if (this.languageClient !== undefined && this.languageClient.isRunning()) { await this.languageClient.dispose(); - this.disposeWorker(keepWorker); this.languageClient = undefined; this.logger?.info('monaco-languageclient and monaco-editor were successfully disposed.'); - return Promise.resolve(); - } catch (e) { - const languageClientError: LanguageClientError = { - message: `languageClientWrapper (${this.name}): Disposing the monaco-languageclient resulted in error.`, - error: Object.hasOwn(e ?? {}, 'cause') ? (e as Error) : 'No error was provided.' - }; - return Promise.reject(languageClientError); + } + } catch (e) { + const languageClientError: LanguageClientError = { + message: `languageClientWrapper (${this.name}): Disposing the monaco-languageclient resulted in error.`, + error: Object.hasOwn(e ?? {}, 'cause') ? (e as Error) : 'No error was provided.' + }; + return Promise.reject(languageClientError); + } finally { + // always terminate the worker if desired + if (!keepWorker) { + this.disposeWorker(); } } - else { - // disposing the languageclient if it does not exist is considered ok - return Promise.resolve(); - } + return Promise.resolve(); } reportStatus() { diff --git a/packages/wrapper/test/languageClientWrapper.test.ts b/packages/wrapper/test/languageClientWrapper.test.ts index d458a38c3..939029caa 100644 --- a/packages/wrapper/test/languageClientWrapper.test.ts +++ b/packages/wrapper/test/languageClientWrapper.test.ts @@ -74,7 +74,7 @@ describe('Test LanguageClientWrapper', () => { setTimeout(async () => { // dispose & verify - await languageClientWrapper?.disposeLanguageClient(); + await languageClientWrapper?.disposeLanguageClient(false); expect(languageClientWrapper?.getWorker()).toBeUndefined(); }, 250); expect(languageClientWrapper?.getWorker()).toBeTruthy(); diff --git a/verify/angular/package.json b/verify/angular/package.json index 3a5e760fb..eb9e81330 100644 --- a/verify/angular/package.json +++ b/verify/angular/package.json @@ -20,10 +20,10 @@ "@angular/core": "~18.1.0", "@angular/platform-browser": "~18.1.0", "@angular/platform-browser-dynamic": "~18.1.0", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", "monaco-editor-wrapper": "../../packages/wrapper", "monaco-languageclient-examples": "../../packages/examples", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "rxjs": "~7.8.1", "zone.js": "~0.14.7" }, diff --git a/verify/pnpm/package.json b/verify/pnpm/package.json index 1c272e5f6..0ca1f1856 100644 --- a/verify/pnpm/package.json +++ b/verify/pnpm/package.json @@ -4,10 +4,10 @@ "private": true, "type": "module", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", "monaco-editor-wrapper": "../../packages/wrapper", "monaco-languageclient-examples": "../../packages/examples", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "devDependencies": { "shx": "~0.3.4", diff --git a/verify/vite/package.json b/verify/vite/package.json index cea2b9cdb..902c68f81 100644 --- a/verify/vite/package.json +++ b/verify/vite/package.json @@ -4,10 +4,10 @@ "private": true, "type": "module", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", "monaco-editor-wrapper": "../../packages/wrapper", "monaco-languageclient-examples": "../../packages/examples", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "devDependencies": { "shx": "~0.3.4", diff --git a/verify/webpack/package.json b/verify/webpack/package.json index b7178f549..114307a04 100644 --- a/verify/webpack/package.json +++ b/verify/webpack/package.json @@ -4,10 +4,10 @@ "private": true, "type": "module", "dependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", "monaco-editor-wrapper": "../../packages/wrapper", "monaco-languageclient-examples": "../../packages/examples", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4" + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3" }, "devDependencies": { "css-loader": "~7.1.2", diff --git a/verify/yarn/package.json b/verify/yarn/package.json index 474b9e998..a4a6b76f0 100644 --- a/verify/yarn/package.json +++ b/verify/yarn/package.json @@ -4,11 +4,11 @@ "private": true, "type": "module", "dependencies": { - "@typefox/monaco-editor-react": "~6.0.0-next.0", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~8.0.4", - "monaco-editor-wrapper": "~6.0.0-next.0", + "@typefox/monaco-editor-react": "~6.0.0-next.1", + "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", + "monaco-editor-wrapper": "~6.0.0-next.1", "monaco-languageclient-examples": "~2024.9.1", - "vscode": "npm:@codingame/monaco-vscode-api@~8.0.4", + "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", "vscode-ws-jsonrpc": "~3.3.2" }, "devDependencies": { From fe0e85650b37a69074aa6784110b43fb0b0035b2 Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Mon, 23 Sep 2024 14:35:16 +0200 Subject: [PATCH 2/9] Only define one configureMonacoWorkers in examples and use it everywhere --- index.html | 10 +++++----- packages/examples/bare.html | 3 ++- packages/examples/browser.html | 3 ++- packages/examples/eclipse.jdt.ls.html | 3 ++- packages/examples/groovy.html | 3 ++- packages/examples/{wrapper_ws.html => json.html} | 3 ++- .../examples/{wrapper_langium.html => langium.html} | 3 ++- packages/examples/python.html | 3 ++- packages/examples/react_python.html | 3 ++- packages/examples/react_statemachine.html | 3 ++- packages/examples/src/bare/client.ts | 9 --------- packages/examples/src/browser/main.ts | 10 ---------- packages/examples/src/common/client/utils.ts | 12 ++++++++++++ packages/examples/src/eclipse.jdt.ls/client/main.ts | 10 ---------- packages/examples/src/groovy/client/main.ts | 10 ---------- packages/examples/src/index.ts | 3 +-- packages/examples/src/json/client/wrapperWs.ts | 11 ----------- .../src/langium/langium-dsl/wrapperLangium.ts | 10 ---------- .../examples/src/langium/statemachine/main-react.tsx | 10 ---------- packages/examples/src/langium/statemachine/main.ts | 10 ---------- packages/examples/src/multi/twoLanguageClients.ts | 10 ---------- packages/examples/src/python/client/main.ts | 10 ---------- packages/examples/src/python/client/reactPython.tsx | 10 ---------- packages/examples/src/ts/wrapperTs.ts | 10 ---------- .../{wrapper_statemachine.html => statemachine.html} | 3 ++- packages/examples/{wrapper_ts.html => ts.html} | 3 ++- packages/examples/two_langauge_clients.html | 3 ++- verify/pnpm/src/client/main.ts | 3 ++- verify/vite/src/client/main.ts | 3 ++- verify/webpack/src/client/main.ts | 3 ++- verify/yarn/src/client/main.ts | 3 ++- vite.config.ts | 8 ++++---- 32 files changed, 54 insertions(+), 147 deletions(-) rename packages/examples/{wrapper_ws.html => json.html} (80%) rename packages/examples/{wrapper_langium.html => langium.html} (83%) rename packages/examples/{wrapper_statemachine.html => statemachine.html} (84%) rename packages/examples/{wrapper_ts.html => ts.html} (84%) diff --git a/index.html b/index.html index 39af637ec..556cc4b3e 100644 --- a/index.html +++ b/index.html @@ -27,18 +27,18 @@

Monaco Editor Wrapper

JSON

Please execute npm run start:example:server:json beforehand:
- JSON Language Client & Language Server (Web Socket) + JSON Language Client & Language Server (Web Socket)
Language Client Pure Browser Example

Langium

- Langium Grammar DSL Language Client & Language Server (Worker) + Langium Grammar DSL Language Client & Language Server (Worker)
- Langium Statemachine Client & Language Server (Worker) + Langium Statemachine Client & Language Server (Worker)
- Localizations: German French and Spanish
+ Localizations: German French and Spanish

Python

Please execute npm run start:example:server:python beforehand:
@@ -68,7 +68,7 @@

Monaco Editor React


monaco-editor related examples

- Monaco Editor Wrapper TypeScript Example + Monaco Editor Wrapper TypeScript Example

Verification

diff --git a/packages/examples/bare.html b/packages/examples/bare.html index d8e0ddd55..6458b3f1a 100644 --- a/packages/examples/bare.html +++ b/packages/examples/bare.html @@ -13,7 +13,8 @@

JSON Language Client & Language Server (Web Socket)

diff --git a/packages/examples/browser.html b/packages/examples/browser.html index 4363ae4b3..46a058da2 100644 --- a/packages/examples/browser.html +++ b/packages/examples/browser.html @@ -12,10 +12,8 @@

Language Client Pure Browser Example

diff --git a/packages/examples/eclipse.jdt.ls.html b/packages/examples/eclipse.jdt.ls.html index 6574cfe57..5f1245d8b 100644 --- a/packages/examples/eclipse.jdt.ls.html +++ b/packages/examples/eclipse.jdt.ls.html @@ -14,10 +14,8 @@

Java Language Client & Language Server (Web Socket)

diff --git a/packages/examples/groovy.html b/packages/examples/groovy.html index 902ed4ada..b35fc25a4 100644 --- a/packages/examples/groovy.html +++ b/packages/examples/groovy.html @@ -14,10 +14,8 @@

Groovy Language Client & Language Server (Web Socket)

diff --git a/packages/examples/json.html b/packages/examples/json.html index d13114d47..87caf49bb 100644 --- a/packages/examples/json.html +++ b/packages/examples/json.html @@ -14,10 +14,8 @@

JSON Language Client & Language Server (Web Socket)

diff --git a/packages/examples/langium.html b/packages/examples/langium.html index 08101e4a8..45c2335e8 100644 --- a/packages/examples/langium.html +++ b/packages/examples/langium.html @@ -17,10 +17,8 @@

Langium Grammar DSL Language Client & Language Server (Worker)

; diff --git a/packages/examples/python.html b/packages/examples/python.html index f117b4cb9..265b307dc 100644 --- a/packages/examples/python.html +++ b/packages/examples/python.html @@ -14,10 +14,8 @@

Python Language Client & Pyright Language Server (Web Socket)

diff --git a/packages/examples/react_python.html b/packages/examples/react_python.html index b2b033220..851ed86f7 100644 --- a/packages/examples/react_python.html +++ b/packages/examples/react_python.html @@ -15,10 +15,8 @@

React: Python Language Client & Language Server (Web Socket)

diff --git a/packages/examples/react_statemachine.html b/packages/examples/react_statemachine.html index 4c19e7ab5..16b836a37 100644 --- a/packages/examples/react_statemachine.html +++ b/packages/examples/react_statemachine.html @@ -15,10 +15,8 @@

React: Langium Statemachine Language Client & Language Server (Worker)

diff --git a/packages/examples/src/bare/client.ts b/packages/examples/src/bare/client.ts index 8b8eba640..464ffb655 100644 --- a/packages/examples/src/bare/client.ts +++ b/packages/examples/src/bare/client.ts @@ -9,16 +9,21 @@ import { initServices } from 'monaco-languageclient/vscode/services'; // that's why we use the textmate extension from VSCode import getThemeServiceOverride from '@codingame/monaco-vscode-theme-service-override'; import getTextmateServiceOverride from '@codingame/monaco-vscode-textmate-service-override'; +import getConfigurationServiceOverride from '@codingame/monaco-vscode-configuration-service-override'; import '@codingame/monaco-vscode-theme-defaults-default-extension'; import '@codingame/monaco-vscode-json-default-extension'; import { MonacoLanguageClient } from 'monaco-languageclient'; import { WebSocketMessageReader, WebSocketMessageWriter, toSocket } from 'vscode-ws-jsonrpc'; import { CloseAction, ErrorAction, MessageTransports } from 'vscode-languageclient/browser.js'; +import { configureMonacoWorkers } from '../common/client/utils.js'; +import { Logger } from 'monaco-languageclient/tools'; +import { updateUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; export const runClient = async () => { await initServices({ serviceConfig: { userServices: { + ...getConfigurationServiceOverride(), ...getThemeServiceOverride(), ...getTextmateServiceOverride(), }, @@ -26,6 +31,10 @@ export const runClient = async () => { } }); + updateUserConfiguration(JSON.stringify({ + 'editor.experimental.asyncTokenization': false + })); + // register the JSON language with Monaco monaco.languages.register({ id: 'json', @@ -34,6 +43,11 @@ export const runClient = async () => { mimetypes: ['application/json'] }); + configureMonacoWorkers(new Logger({ + enabled: true, + debugEnabled: true + })); + // create monaco editor monaco.editor.create(document.getElementById('monaco-editor-root')!, { value: `{ diff --git a/packages/examples/src/browser/main.ts b/packages/examples/src/browser/main.ts index dd63d1abe..c728b823c 100644 --- a/packages/examples/src/browser/main.ts +++ b/packages/examples/src/browser/main.ts @@ -11,6 +11,7 @@ import { getLanguageService, TextDocument } from 'vscode-json-languageservice'; import { createConverter as createCodeConverter } from 'vscode-languageclient/lib/common/codeConverter.js'; import { createConverter as createProtocolConverter } from 'vscode-languageclient/lib/common/protocolConverter.js'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; +import { configureMonacoWorkers } from '../common/client/utils.js'; export const runBrowserEditor = async () => { const codeConverter = createCodeConverter(); @@ -46,9 +47,11 @@ export const runBrowserEditor = async () => { json: JSON.stringify({ 'workbench.colorTheme': 'Default Dark Modern', 'editor.guides.bracketPairsHorizontal': 'active', - 'editor.lightbulb.enabled': 'On' + 'editor.lightbulb.enabled': 'On', + 'editor.experimental.asyncTokenization': false }) - } + }, + monacoWorkerFactory: configureMonacoWorkers } }; await wrapper.init(jsonClientUserConfig); diff --git a/packages/examples/src/common/client/utils.ts b/packages/examples/src/common/client/utils.ts index 9777537c7..e19d7e2b2 100644 --- a/packages/examples/src/common/client/utils.ts +++ b/packages/examples/src/common/client/utils.ts @@ -4,6 +4,7 @@ * ------------------------------------------------------------------------------------------ */ import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'; +import { Logger } from 'monaco-languageclient/tools'; export const disableButton = (id: string, disabled: boolean) => { const button = document.getElementById(id) as HTMLButtonElement | null; @@ -12,12 +13,12 @@ export const disableButton = (id: string, disabled: boolean) => { } }; -export const configureMonacoWorkers = () => { +export const configureMonacoWorkers = (logger?: Logger) => { useWorkerFactory({ ignoreMapping: true, workerLoaders: { TextEditorWorker: () => new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker.js', import.meta.url), { type: 'module' }), TextMateWorker: () => new Worker(new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url), { type: 'module' }) } - }); + }, logger); }; diff --git a/packages/examples/src/eclipse.jdt.ls/client/main.ts b/packages/examples/src/eclipse.jdt.ls/client/main.ts index d18d314b1..3cee6d76c 100644 --- a/packages/examples/src/eclipse.jdt.ls/client/main.ts +++ b/packages/examples/src/eclipse.jdt.ls/client/main.ts @@ -11,6 +11,7 @@ import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor- import { RegisteredFileSystemProvider, RegisteredMemoryFile, registerFileSystemOverlay } from '@codingame/monaco-vscode-files-service-override'; import { eclipseJdtLsConfig } from '../config.js'; import helloJavaCode from '../../../resources/eclipse.jdt.ls/workspace/hello.java?raw'; +import { configureMonacoWorkers } from '../../common/client/utils.js'; export const runEclipseJdtLsClient = () => { const helloJavaUri = vscode.Uri.file(`${eclipseJdtLsConfig.basePath}/workspace/hello.java`); @@ -38,10 +39,11 @@ export const runEclipseJdtLsClient = () => { json: JSON.stringify({ 'workbench.colorTheme': 'Default Dark Modern', 'editor.guides.bracketPairsHorizontal': 'active', - 'editor.wordBasedSuggestions': 'off' + 'editor.wordBasedSuggestions': 'off', + 'editor.experimental.asyncTokenization': false }) - } - + }, + monacoWorkerFactory: configureMonacoWorkers }, languageClientConfigs: { java: { diff --git a/packages/examples/src/groovy/client/main.ts b/packages/examples/src/groovy/client/main.ts index d2cb2b06e..d3750d89a 100644 --- a/packages/examples/src/groovy/client/main.ts +++ b/packages/examples/src/groovy/client/main.ts @@ -8,6 +8,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- import '@codingame/monaco-vscode-groovy-default-extension'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { groovyConfig } from '../config.js'; +import { configureMonacoWorkers } from '../../common/client/utils.js'; const code = `package test.org; import java.io.File; @@ -34,9 +35,11 @@ const userConfig: WrapperConfig = { json: JSON.stringify({ 'workbench.colorTheme': 'Default Dark Modern', 'editor.guides.bracketPairsHorizontal': 'active', - 'editor.wordBasedSuggestions': 'off' + 'editor.wordBasedSuggestions': 'off', + 'editor.experimental.asyncTokenization': false }) - } + }, + monacoWorkerFactory: configureMonacoWorkers }, languageClientConfigs: { groovy: { diff --git a/packages/examples/src/json/client/wrapperWs.ts b/packages/examples/src/json/client/wrapperWs.ts index c5d09f002..7f170ee1c 100644 --- a/packages/examples/src/json/client/wrapperWs.ts +++ b/packages/examples/src/json/client/wrapperWs.ts @@ -7,6 +7,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- // this is required syntax highlighting import '@codingame/monaco-vscode-json-default-extension'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; +import { configureMonacoWorkers } from '../../common/client/utils.js'; const text = `{ "$schema": "http://json.schemastore.org/coffeelint", @@ -34,9 +35,11 @@ export const jsonClientUserConfig: WrapperConfig = { 'workbench.colorTheme': 'Default Dark Modern', 'editor.guides.bracketPairsHorizontal': 'active', 'editor.lightbulb.enabled': 'On', - 'editor.wordBasedSuggestions': 'off' + 'editor.wordBasedSuggestions': 'off', + 'editor.experimental.asyncTokenization': false }) - } + }, + monacoWorkerFactory: configureMonacoWorkers }, languageClientConfigs: { json: { diff --git a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts index 488e76162..2a7188967 100644 --- a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts +++ b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts @@ -8,6 +8,7 @@ import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-ov import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; import { WrapperConfig } from 'monaco-editor-wrapper'; +import { configureMonacoWorkers } from '../../../common/client/utils.js'; import { LangiumMonarchContent } from './langium.monarch.js'; import { loadLangiumWorker } from '../wrapperLangium.js'; import code from '../content/example.langium?raw'; @@ -45,7 +46,8 @@ export const setupLangiumClientClassic = async (): Promise => { languageDef: { monarchLanguage: LangiumMonarchContent, languageExtensionConfig: { id: 'langium' }, - } + }, + monacoWorkerFactory: configureMonacoWorkers }, languageClientConfigs: { langium: { diff --git a/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts b/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts index 5cc60226b..21e63aff8 100644 --- a/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts +++ b/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts @@ -10,6 +10,7 @@ import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; import { WrapperConfig } from 'monaco-editor-wrapper'; import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js'; import { loadLangiumWorker } from '../wrapperLangium.js'; +import { configureMonacoWorkers } from '../../../common/client/utils.js'; import langiumLanguageConfig from './langium.configuration.json?raw'; import langiumTextmateGrammar from './langium.tmLanguage.json?raw'; import text from '../content/example.langium?raw'; @@ -33,6 +34,10 @@ export const setupLangiumClientExtended = async (): Promise => { }, debugLogging: true }, + loggerConfig: { + enabled: true, + debugEnabled: true + }, editorAppConfig: { $type: 'extended', codeResources: { @@ -70,9 +75,11 @@ export const setupLangiumClientExtended = async (): Promise => { json: JSON.stringify({ 'workbench.colorTheme': 'GitHub Dark High Contrast', 'editor.guides.bracketPairsHorizontal': 'active', - 'editor.wordBasedSuggestions': 'off' + 'editor.wordBasedSuggestions': 'off', + 'editor.experimental.asyncTokenization': false }) - } + }, + monacoWorkerFactory: configureMonacoWorkers }, languageClientConfigs: { langium: { diff --git a/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts b/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts index e54abc400..d20689c9c 100644 --- a/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts +++ b/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts @@ -12,6 +12,7 @@ import { LanguageClientConfig, WrapperConfig } from 'monaco-editor-wrapper'; import statemachineLanguageConfig from './language-configuration.json?raw'; import responseStatemachineTm from '../syntaxes/statemachine.tmLanguage.json?raw'; import { MessageTransports } from 'vscode-languageclient'; +import { configureMonacoWorkers } from '../../../common/client/utils.js'; export const createLangiumGlobalConfig = async (params: { languageServerId: string, @@ -90,9 +91,11 @@ export const createLangiumGlobalConfig = async (params: { json: JSON.stringify({ 'workbench.colorTheme': 'Default Dark Modern', 'editor.guides.bracketPairsHorizontal': 'active', - 'editor.wordBasedSuggestions': 'off' + 'editor.wordBasedSuggestions': 'off', + 'editor.experimental.asyncTokenization': false }) - } + }, + monacoWorkerFactory: configureMonacoWorkers }, languageClientConfigs, loggerConfig: { diff --git a/packages/examples/src/multi/twoLanguageClients.ts b/packages/examples/src/multi/twoLanguageClients.ts index 68bea3ca0..f7b299b22 100644 --- a/packages/examples/src/multi/twoLanguageClients.ts +++ b/packages/examples/src/multi/twoLanguageClients.ts @@ -10,7 +10,7 @@ import '@codingame/monaco-vscode-json-default-extension'; import '@codingame/monaco-vscode-python-default-extension'; import { CodePlusFileExt, MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { MonacoLanguageClient } from 'monaco-languageclient'; -import { disableButton } from '../common/client/utils.js'; +import { configureMonacoWorkers, disableButton } from '../common/client/utils.js'; export const runMultipleLanguageClientsExample = async () => { disableButton('button-flip', true); @@ -49,9 +49,11 @@ print("Hello Moon!") userConfiguration: { json: JSON.stringify({ 'workbench.colorTheme': 'Default Dark Modern', - 'editor.wordBasedSuggestions': 'off' + 'editor.wordBasedSuggestions': 'off', + 'editor.experimental.asyncTokenization': false }) - } + }, + monacoWorkerFactory: configureMonacoWorkers }, languageClientConfigs: { json: { diff --git a/packages/examples/src/python/client/config.ts b/packages/examples/src/python/client/config.ts index 72b5fa352..2f417b396 100644 --- a/packages/examples/src/python/client/config.ts +++ b/packages/examples/src/python/client/config.ts @@ -11,6 +11,7 @@ import { createUrl, WrapperConfig } from 'monaco-editor-wrapper'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; import { MonacoLanguageClient } from 'monaco-languageclient'; import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc'; +import { configureMonacoWorkers } from '../../common/client/utils.js'; export const createUserConfig = (workspaceRoot: string, code: string, codeUri: string): WrapperConfig => { const url = createUrl({ @@ -80,10 +81,12 @@ export const createUserConfig = (workspaceRoot: string, code: string, codeUri: s json: JSON.stringify({ 'workbench.colorTheme': 'Default Dark Modern', 'editor.guides.bracketPairsHorizontal': 'active', - 'editor.wordBasedSuggestions': 'off' + 'editor.wordBasedSuggestions': 'off', + 'editor.experimental.asyncTokenization': false }) }, - useDiffEditor: false + useDiffEditor: false, + monacoWorkerFactory: configureMonacoWorkers }, loggerConfig: { enabled: true, diff --git a/packages/examples/src/ts/wrapperTs.ts b/packages/examples/src/ts/wrapperTs.ts index 1485747e2..032679251 100644 --- a/packages/examples/src/ts/wrapperTs.ts +++ b/packages/examples/src/ts/wrapperTs.ts @@ -9,6 +9,7 @@ import '@codingame/monaco-vscode-theme-defaults-default-extension'; import '@codingame/monaco-vscode-typescript-basics-default-extension'; import '@codingame/monaco-vscode-typescript-language-features-default-extension'; import { CodePlusUri, MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; +import { configureMonacoWorkers } from '../common/client/utils.js'; export const runTsWrapper = async () => { const codeUri = '/workspace/hello.ts'; @@ -50,9 +51,11 @@ export const runTsWrapper = async () => { 'diffEditor.renderSideBySide': false, 'editor.lightbulb.enabled': 'on', 'editor.glyphMargin': true, - 'editor.guides.bracketPairsHorizontal': true + 'editor.guides.bracketPairsHorizontal': true, + 'editor.experimental.asyncTokenization': false }) - } + }, + monacoWorkerFactory: configureMonacoWorkers } }; diff --git a/packages/examples/statemachine.html b/packages/examples/statemachine.html index 88fbf2cd4..34ade7c5c 100644 --- a/packages/examples/statemachine.html +++ b/packages/examples/statemachine.html @@ -19,10 +19,8 @@

Langium Statemachine Client & Language Server (Worker)

await initLocaleLoader(); // production build: ensure local loading is handled before loading the main script - import { configureMonacoWorkers } from "./src/common/client/utils.ts"; const { runStatemachineWrapper } = await import ('./src/langium/statemachine/main.ts'); - configureMonacoWorkers(); runStatemachineWrapper(); diff --git a/packages/examples/ts.html b/packages/examples/ts.html index 64efe2352..bae94b2d6 100644 --- a/packages/examples/ts.html +++ b/packages/examples/ts.html @@ -16,10 +16,8 @@

Monaco Editor Wrapper TypeScript Example

diff --git a/packages/examples/two_langauge_clients.html b/packages/examples/two_langauge_clients.html index a3b6692d0..e608db098 100644 --- a/packages/examples/two_langauge_clients.html +++ b/packages/examples/two_langauge_clients.html @@ -15,10 +15,8 @@

Json & Python Languageclients & Language Server (Web Socket)

diff --git a/packages/wrapper/src/editorAppBase.ts b/packages/wrapper/src/editorAppBase.ts index 24ed6f381..2f03b837a 100644 --- a/packages/wrapper/src/editorAppBase.ts +++ b/packages/wrapper/src/editorAppBase.ts @@ -6,7 +6,7 @@ import * as monaco from 'monaco-editor'; import { createModelReference, ITextFileEditorModel } from 'vscode/monaco'; import { IReference } from '@codingame/monaco-vscode-editor-service-override'; -import { getUserConfiguration, updateUserConfiguration as vscodeUpdateUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; +import { getUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; import { getEditorUri, isModelUpdateRequired, ModelUpdateType } from './utils.js'; import { Logger } from 'monaco-languageclient/tools'; @@ -40,6 +40,7 @@ export interface EditorAppConfigBase { overrideAutomaticLayout?: boolean; editorOptions?: monaco.editor.IStandaloneEditorConstructionOptions; diffEditorOptions?: monaco.editor.IStandaloneDiffEditorConstructionOptions; + monacoWorkerFactory?: (logger: Logger) => void; } export interface ModelRefs { @@ -276,17 +277,11 @@ export abstract class EditorAppBase { this.getEditor()?.updateOptions(options); } - async updateUserConfiguration(json?: string) { - if (json !== undefined) { - return vscodeUpdateUserConfiguration(json); - } - return Promise.resolve(); - } - getUserConfiguration(): Promise { return getUserConfiguration(); } + abstract loadUserConfiguration(): Promise; abstract init(): Promise; abstract specifyServices(): Promise; abstract getConfig(): EditorAppConfigBase; diff --git a/packages/wrapper/src/editorAppClassic.ts b/packages/wrapper/src/editorAppClassic.ts index 33cc177a2..afe27605f 100644 --- a/packages/wrapper/src/editorAppClassic.ts +++ b/packages/wrapper/src/editorAppClassic.ts @@ -4,6 +4,7 @@ * ------------------------------------------------------------------------------------------ */ import * as monaco from 'monaco-editor'; +import { updateUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; import { Logger } from 'monaco-languageclient/tools'; import { EditorAppBase, EditorAppConfigBase } from './editorAppBase.js'; import { ModelUpdateType, isEqual, isModelUpdateRequired } from './utils.js'; @@ -44,8 +45,17 @@ export class EditorAppClassic extends EditorAppBase { }; } + override async loadUserConfiguration() { + if (this.config.editorOptions?.['semanticHighlighting.enabled'] !== undefined) { + // use updateConfiguration here as otherwise semantic highlighting will not work + await updateUserConfiguration(JSON.stringify({ + 'editor.semanticHighlighting.enabled': this.config.editorOptions['semanticHighlighting.enabled'] + })); + } + } + async init() { - // await all extenson that should be ready beforehand + // await all extensions that should be ready beforehand await this.awaitReadiness(this.config.awaitExtensionReadiness); const languageDef = this.config.languageDef; @@ -71,14 +81,6 @@ export class EditorAppClassic extends EditorAppBase { monaco.editor.setTheme(languageDef.theme.name); } } - - if (this.config.editorOptions?.['semanticHighlighting.enabled'] !== undefined) { - // use updateConfiguration here as otherwise semantic highlighting will not work - const json = JSON.stringify({ - 'editor.semanticHighlighting.enabled': this.config.editorOptions['semanticHighlighting.enabled'] - }); - await this.updateUserConfiguration(json); - } this.logger?.info('Init of Classic App was completed.'); } diff --git a/packages/wrapper/src/editorAppExtended.ts b/packages/wrapper/src/editorAppExtended.ts index 83d6ee15e..98573fc90 100644 --- a/packages/wrapper/src/editorAppExtended.ts +++ b/packages/wrapper/src/editorAppExtended.ts @@ -5,6 +5,7 @@ import type * as vscode from 'vscode'; import * as monaco from 'monaco-editor'; +import { updateUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; import { EditorAppBase, EditorAppConfigBase } from './editorAppBase.js'; import { registerExtension, IExtensionManifest, ExtensionHostKind } from 'vscode/extensions'; import { Logger } from 'monaco-languageclient/tools'; @@ -75,6 +76,11 @@ export class EditorAppExtended extends EditorAppBase { }; } + override async loadUserConfiguration() { + // buildConfig ensures userConfiguration is available + await updateUserConfiguration(this.config.userConfiguration?.json ?? JSON.stringify({})); + } + override async init() { // await all extensions that should be ready beforehand // always await theme extension @@ -98,9 +104,6 @@ export class EditorAppExtended extends EditorAppBase { } await Promise.all(allPromises); } - - // buildConfig ensures userConfiguration is available - await this.updateUserConfiguration(this.config.userConfiguration?.json); this.logger?.info('Init of Extended App was completed.'); } diff --git a/packages/wrapper/src/wrapper.ts b/packages/wrapper/src/wrapper.ts index 5adb2115e..0fb7cb8f2 100644 --- a/packages/wrapper/src/wrapper.ts +++ b/packages/wrapper/src/wrapper.ts @@ -57,6 +57,10 @@ export class MonacoEditorLanguageClientWrapper { this.id = wrapperConfig.id ?? Math.floor(Math.random() * 101).toString(); this.logger.updateConfig(wrapperConfig.loggerConfig); + if (typeof wrapperConfig.editorAppConfig.monacoWorkerFactory === 'function') { + wrapperConfig.editorAppConfig.monacoWorkerFactory(this.logger); + } + if (editorAppConfig.$type === 'classic') { this.editorApp = new EditorAppClassic(this.id, wrapperConfig.editorAppConfig as EditorAppConfigClassic, this.logger); } else { @@ -77,6 +81,8 @@ export class MonacoEditorLanguageClientWrapper { logger: this.logger }); + await this.editorApp.loadUserConfiguration(); + const lccEntries = Object.entries(wrapperConfig.languageClientConfigs ?? {}); if (lccEntries.length > 0) { for (const [languageId, lcc] of lccEntries) { @@ -88,6 +94,8 @@ export class MonacoEditorLanguageClientWrapper { } } + await this.editorApp.init(); + this.initDone = true; } @@ -111,7 +119,6 @@ export class MonacoEditorLanguageClientWrapper { } this.logger.info(`Starting monaco-editor (${this.id})`); - await this.editorApp?.init(); await this.editorApp?.createEditors(htmlElement); for (const lcw of this.languageClientWrappers.values()) { diff --git a/verify/pnpm/src/client/main.ts b/verify/pnpm/src/client/main.ts index bb1331cd7..648a99ad4 100644 --- a/verify/pnpm/src/client/main.ts +++ b/verify/pnpm/src/client/main.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { configureMonacoWorkers } from 'monaco-languageclient-examples'; import { runJsonWrapper } from 'monaco-languageclient-examples/json-client'; -configureMonacoWorkers(); runJsonWrapper(); diff --git a/verify/vite/src/client/main.ts b/verify/vite/src/client/main.ts index bb1331cd7..648a99ad4 100644 --- a/verify/vite/src/client/main.ts +++ b/verify/vite/src/client/main.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { configureMonacoWorkers } from 'monaco-languageclient-examples'; import { runJsonWrapper } from 'monaco-languageclient-examples/json-client'; -configureMonacoWorkers(); runJsonWrapper(); diff --git a/verify/webpack/src/client/main.ts b/verify/webpack/src/client/main.ts index bb1331cd7..648a99ad4 100644 --- a/verify/webpack/src/client/main.ts +++ b/verify/webpack/src/client/main.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { configureMonacoWorkers } from 'monaco-languageclient-examples'; import { runJsonWrapper } from 'monaco-languageclient-examples/json-client'; -configureMonacoWorkers(); runJsonWrapper(); diff --git a/verify/yarn/src/client/main.ts b/verify/yarn/src/client/main.ts index bb1331cd7..648a99ad4 100644 --- a/verify/yarn/src/client/main.ts +++ b/verify/yarn/src/client/main.ts @@ -3,8 +3,6 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { configureMonacoWorkers } from 'monaco-languageclient-examples'; import { runJsonWrapper } from 'monaco-languageclient-examples/json-client'; -configureMonacoWorkers(); runJsonWrapper(); From bc1a941f1c166759a6f882c69d67610e6e32bc92 Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Tue, 24 Sep 2024 12:11:04 +0200 Subject: [PATCH 4/9] Rework logging: Rely on vscode logging --- package-lock.json | 11 ++++ packages/client/package.json | 7 +- packages/client/src/tools/index.ts | 41 +----------- packages/client/src/tools/logging.ts | 66 +++++++++++++++++++ packages/client/src/vscode/index.ts | 9 +++ packages/client/src/vscode/services.ts | 54 +++++++-------- packages/client/test/tools/index.test.ts | 47 +++---------- packages/examples/src/bare/client.ts | 23 +++---- packages/examples/src/browser/main.ts | 5 +- packages/examples/src/common/client/utils.ts | 2 +- .../src/eclipse.jdt.ls/client/main.ts | 7 +- packages/examples/src/groovy/client/main.ts | 5 +- .../examples/src/json/client/wrapperWs.ts | 5 +- .../langium-dsl/config/classicConfig.ts | 9 +-- .../langium-dsl/config/extendedConfig.ts | 11 ++-- .../config/wrapperStatemachineConfig.ts | 11 ++-- .../examples/src/multi/twoLanguageClients.ts | 5 +- packages/examples/src/python/client/config.ts | 9 +-- packages/examples/src/ts/wrapperTs.ts | 5 +- packages/wrapper-react/src/index.tsx | 3 - packages/wrapper-react/test/index.test.tsx | 18 ++--- packages/wrapper/src/editorAppBase.ts | 2 +- packages/wrapper/src/editorAppExtended.ts | 2 +- packages/wrapper/src/languageClientWrapper.ts | 6 +- packages/wrapper/src/vscode/services.ts | 4 -- packages/wrapper/src/workerFactory.ts | 2 +- packages/wrapper/src/wrapper.ts | 16 +++-- 27 files changed, 188 insertions(+), 197 deletions(-) create mode 100644 packages/client/src/tools/logging.ts create mode 100644 packages/client/src/vscode/index.ts diff --git a/package-lock.json b/package-lock.json index 8f38b42df..60e29a9d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -833,6 +833,16 @@ "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" } }, + "node_modules/@codingame/monaco-vscode-log-service-override": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-log-service-override/-/monaco-vscode-log-service-override-9.0.3.tgz", + "integrity": "sha512-z01MJcfnBUJGfGGuT0wCqoWNx9wRei0HT4T3iXmnS0AbMmHejCqAxSvVCAj1ghHyb2g0DuxdC23TxxzR8WLZtQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-environment-service-override": "9.0.3", + "vscode": "npm:@codingame/monaco-vscode-api@9.0.3" + } + }, "node_modules/@codingame/monaco-vscode-model-service-override": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-model-service-override/-/monaco-vscode-model-service-override-9.0.3.tgz", @@ -11022,6 +11032,7 @@ "@codingame/monaco-vscode-extensions-service-override": "~9.0.3", "@codingame/monaco-vscode-languages-service-override": "~9.0.3", "@codingame/monaco-vscode-localization-service-override": "~9.0.3", + "@codingame/monaco-vscode-log-service-override": "~9.0.3", "@codingame/monaco-vscode-model-service-override": "~9.0.3", "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", diff --git a/packages/client/package.json b/packages/client/package.json index 6ff3a3618..19c9348a7 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -29,8 +29,8 @@ "default": "./lib/tools/index.js" }, "./vscode/services": { - "types": "./lib/vscode/services.d.ts", - "default": "./lib/vscode/services.js" + "types": "./lib/vscode/index.d.ts", + "default": "./lib/vscode/index.js" } }, "typesVersions": { @@ -42,7 +42,7 @@ "lib/tools/index" ], "vscode/services": [ - "lib/vscode/services" + "lib/vscode/index" ] } }, @@ -65,6 +65,7 @@ "@codingame/monaco-vscode-extensions-service-override": "~9.0.3", "@codingame/monaco-vscode-languages-service-override": "~9.0.3", "@codingame/monaco-vscode-localization-service-override": "~9.0.3", + "@codingame/monaco-vscode-log-service-override": "~9.0.3", "@codingame/monaco-vscode-model-service-override": "~9.0.3", "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~9.0.3", "vscode": "npm:@codingame/monaco-vscode-api@~9.0.3", diff --git a/packages/client/src/tools/index.ts b/packages/client/src/tools/index.ts index 3676c07fd..3fd313d9b 100644 --- a/packages/client/src/tools/index.ts +++ b/packages/client/src/tools/index.ts @@ -3,42 +3,5 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -export type LoggerConfig = { - enabled: boolean, - debugEnabled?: boolean -}; - -export class Logger { - - private enabled: boolean; - private debugEnabled: boolean; - - constructor(config?: LoggerConfig) { - this.updateConfig(config); - } - - updateConfig(config?: LoggerConfig) { - this.enabled = !config ? true : config!.enabled === true; - this.debugEnabled = this.enabled && config?.debugEnabled === true; - } - - isEnabled() { - return this.enabled; - } - - isDebugEnabled() { - return this.debugEnabled; - } - - info(message: string) { - if (this.enabled) { - console.log(message); - } - } - - debug(message: string, force?: boolean) { - if (this.enabled && (this.debugEnabled || force === true)) { - console.debug(message); - } - } -} +export type * from './logging.js'; +export * from './logging.js'; diff --git a/packages/client/src/tools/logging.ts b/packages/client/src/tools/logging.ts new file mode 100644 index 000000000..dd58beadf --- /dev/null +++ b/packages/client/src/tools/logging.ts @@ -0,0 +1,66 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) 2024 TypeFox and others. + * Licensed under the MIT License. See LICENSE in the package root for license information. + * ------------------------------------------------------------------------------------------ */ + +import { ConsoleLogger as VSCodeConsoleLogger, ILogger } from '@codingame/monaco-vscode-log-service-override'; +import { LogLevel } from 'vscode/services'; + +export interface Logger extends ILogger { + createErrorAndLog(message: string, ...params: unknown[]): Error; +} + +export class ConsoleLogger extends VSCodeConsoleLogger { + + constructor(logLevel?: LogLevel, useColors?: boolean) { + super(logLevel ?? LogLevel.Off, useColors); + } + + createErrorAndLog(message: string, ...params: unknown[]) { + if (this.getLevel() >= LogLevel.Error) { + this.error(message, ...params); + } + return new Error(message); + } + +} + +export function checkLogLevel(logLevel?: string | number | unknown) { + switch (logLevel) { + case 'none': + case 'Off': + case 'off': + case '0': + case 0: + return LogLevel.Off; + case 'Trace': + case 'trace': + case '1': + case 1: + return LogLevel.Trace; + case 'Debug': + case 'debug': + case '2': + case 2: + return LogLevel.Debug; + case 'Info': + case 'info': + case '3': + case 3: + return LogLevel.Info; + case 'Warning': + case 'warning': + case 'Warn': + case 'warn': + case '4': + case 4: + return LogLevel.Warning; + case 'Error': + case 'error': + case '5': + case 5: + return LogLevel.Error; + default: + return LogLevel.Off; + } +} diff --git a/packages/client/src/vscode/index.ts b/packages/client/src/vscode/index.ts new file mode 100644 index 000000000..25b4480c2 --- /dev/null +++ b/packages/client/src/vscode/index.ts @@ -0,0 +1,9 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) 2024 TypeFox and others. + * Licensed under the MIT License. See LICENSE in the package root for license information. + * ------------------------------------------------------------------------------------------ */ + +export * from './fakeWorker.js'; + +export type * from './services.js'; +export * from './services.js'; diff --git a/packages/client/src/vscode/services.ts b/packages/client/src/vscode/services.ts index 744a591dc..43a8a2854 100644 --- a/packages/client/src/vscode/services.ts +++ b/packages/client/src/vscode/services.ts @@ -5,14 +5,15 @@ import * as monaco from 'monaco-editor'; import 'vscode/localExtensionHost'; -import { ILogService, initialize, IWorkbenchConstructionOptions, LogLevel, StandaloneServices } from 'vscode/services'; +import { ILogService, initialize, IWorkbenchConstructionOptions, StandaloneServices, LogLevel } from 'vscode/services'; import type { WorkerConfig } from '@codingame/monaco-vscode-extensions-service-override'; import getExtensionServiceOverride from '@codingame/monaco-vscode-extensions-service-override'; import getLanguagesServiceOverride from '@codingame/monaco-vscode-languages-service-override'; import getModelServiceOverride from '@codingame/monaco-vscode-model-service-override'; +import getLogServiceOverride from '@codingame/monaco-vscode-log-service-override'; import type { LocalizationOptions } from '@codingame/monaco-vscode-localization-service-override'; +import { Logger } from 'monaco-languageclient/tools'; import { FakeWorker as Worker } from './fakeWorker.js'; -import { Logger } from '../tools/index.js'; export interface MonacoEnvironmentEnhanced extends monaco.Environment { vscodeInitialising?: boolean; @@ -22,10 +23,15 @@ export interface MonacoEnvironmentEnhanced extends monaco.Environment { export interface InitializeServiceConfig { userServices?: monaco.editor.IEditorOverrideServices; enableExtHostWorker?: boolean; - debugLogging?: boolean; workspaceConfig?: IWorkbenchConstructionOptions; } +export interface InitServicesInstructions extends InitializeServiceConfig { + caller?: string; + performChecks?: () => boolean; + logger?: Logger; +} + export const initEnhancedMonacoEnvironment = () => { const monWin = (self as Window); if (!monWin.MonacoEnvironment) { @@ -45,6 +51,7 @@ export const initEnhancedMonacoEnvironment = () => { export const supplyRequiredServices = async () => { return { ...getLanguagesServiceOverride(), + ...getLogServiceOverride(), ...getModelServiceOverride() }; }; @@ -61,33 +68,18 @@ export const mergeServices = (services: monaco.editor.IEditorOverrideServices, o } }; -export interface InitServicesInstruction { - serviceConfig?: InitializeServiceConfig; - caller?: string; - performChecks?: () => boolean; - logger?: Logger; -} - -export const initServices = async (instruction: InitServicesInstruction) => { +export const initServices = async (instructions: InitServicesInstructions) => { const envEnhanced = initEnhancedMonacoEnvironment(); - // in case debugLogging is set and for whatever reason no logger is passed a proper one is created - if (instruction.serviceConfig?.debugLogging === true && !instruction.logger) { - instruction.logger = new Logger({ - enabled: true, - debugEnabled: true - }); - } - if (!(envEnhanced.vscodeInitialising ?? false)) { if (envEnhanced.vscodeApiInitialised ?? false) { - instruction.logger?.debug('Initialization of vscode services can only performed once!'); + instructions.logger?.debug('Initialization of vscode services can only performed once!'); } else { envEnhanced.vscodeInitialising = true; - instruction.logger?.debug(`Initializing vscode services. Caller: ${instruction.caller ?? 'unknown'}`); + instructions.logger?.debug(`Initializing vscode services. Caller: ${instructions.caller ?? 'unknown'}`); - await importAllServices(instruction); - instruction.logger?.debug('Initialization of vscode services completed successfully.'); + await importAllServices(instructions); + instructions.logger?.debug('Initialization of vscode services completed successfully.'); envEnhanced.vscodeApiInitialised = true; } @@ -105,21 +97,19 @@ export const initServices = async (instruction: InitServicesInstruction) => { * - languages * - model */ -export const importAllServices = async (instruction: InitServicesInstruction) => { - const lc: InitializeServiceConfig = instruction.serviceConfig ?? {}; - const userServices: monaco.editor.IEditorOverrideServices = lc.userServices ?? {}; +export const importAllServices = async (instructions: InitServicesInstructions) => { + const userServices: monaco.editor.IEditorOverrideServices = instructions.userServices ?? {}; const lcRequiredServices = await supplyRequiredServices(); mergeServices(lcRequiredServices, userServices); - await configureExtHostWorker(instruction.serviceConfig?.enableExtHostWorker === true, userServices); + await configureExtHostWorker(instructions.enableExtHostWorker === true, userServices); - reportServiceLoading(userServices, instruction.logger); + reportServiceLoading(userServices, instructions.logger); - if (instruction.performChecks === undefined || instruction.performChecks()) { - await initialize(userServices, undefined, lc.workspaceConfig); - const logLevel = lc.workspaceConfig?.developmentOptions?.logLevel ?? LogLevel.Info; - StandaloneServices.get(ILogService).setLevel(logLevel); + if (instructions.performChecks === undefined || (typeof instructions.performChecks === 'function' && instructions.performChecks())) { + await initialize(userServices, undefined, instructions.workspaceConfig); + StandaloneServices.get(ILogService).setLevel(instructions.logger?.getLevel() ?? LogLevel.Off); } }; diff --git a/packages/client/test/tools/index.test.ts b/packages/client/test/tools/index.test.ts index f6bdb330b..03ec870a0 100644 --- a/packages/client/test/tools/index.test.ts +++ b/packages/client/test/tools/index.test.ts @@ -4,54 +4,27 @@ * ------------------------------------------------------------------------------------------ */ import { describe, expect, test } from 'vitest'; -import { Logger } from 'monaco-languageclient/tools'; +import { ConsoleLogger } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; describe('Logger', () => { test('Config: None', () => { - const logger = new Logger(); + const logger = new ConsoleLogger(); - expect(logger.isEnabled()).toBeTruthy(); - expect(logger.isDebugEnabled()).toBeFalsy(); + expect(logger.getLevel()).toBe(LogLevel.Info); }); - test('Config: disabled', () => { - const logger = new Logger({ - enabled: false - }); + test('Config: Off', () => { + const logger = new ConsoleLogger(LogLevel.Off); - expect(logger.isEnabled()).toBeFalsy(); - expect(logger.isDebugEnabled()).toBeFalsy(); + expect(logger.getLevel()).toBe(LogLevel.Off); }); - test('Config: disabled, debug enabled', () => { - const logger = new Logger({ - enabled: false, - debugEnabled: true - }); + test('Config: Debug', () => { + const logger = new ConsoleLogger(LogLevel.Debug); - expect(logger.isEnabled()).toBeFalsy(); - expect(logger.isDebugEnabled()).toBeFalsy(); - }); - - test('Config: enabled, debug disabled', () => { - const logger = new Logger({ - enabled: true, - debugEnabled: false - }); - - expect(logger.isEnabled()).toBeTruthy(); - expect(logger.isDebugEnabled()).toBeFalsy(); - }); - - test('Config: enabled, debug enabled', () => { - const logger = new Logger({ - enabled: true, - debugEnabled: true - }); - - expect(logger.isEnabled()).toBeTruthy(); - expect(logger.isDebugEnabled()).toBeTruthy(); + expect(logger.getLevel()).toBe(LogLevel.Debug); }); }); diff --git a/packages/examples/src/bare/client.ts b/packages/examples/src/bare/client.ts index 464ffb655..7ffe222c2 100644 --- a/packages/examples/src/bare/client.ts +++ b/packages/examples/src/bare/client.ts @@ -5,6 +5,7 @@ import * as monaco from 'monaco-editor'; import { initServices } from 'monaco-languageclient/vscode/services'; +import { LogLevel } from 'vscode/services'; // monaco-editor does not supply json highlighting with the json worker, // that's why we use the textmate extension from VSCode import getThemeServiceOverride from '@codingame/monaco-vscode-theme-service-override'; @@ -16,19 +17,18 @@ import { MonacoLanguageClient } from 'monaco-languageclient'; import { WebSocketMessageReader, WebSocketMessageWriter, toSocket } from 'vscode-ws-jsonrpc'; import { CloseAction, ErrorAction, MessageTransports } from 'vscode-languageclient/browser.js'; import { configureMonacoWorkers } from '../common/client/utils.js'; -import { Logger } from 'monaco-languageclient/tools'; +import { ConsoleLogger } from 'monaco-languageclient/tools'; import { updateUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; export const runClient = async () => { + const logger = new ConsoleLogger(LogLevel.Debug); await initServices({ - serviceConfig: { - userServices: { - ...getConfigurationServiceOverride(), - ...getThemeServiceOverride(), - ...getTextmateServiceOverride(), - }, - debugLogging: true, - } + userServices: { + ...getConfigurationServiceOverride(), + ...getThemeServiceOverride(), + ...getTextmateServiceOverride(), + }, + logger }); updateUserConfiguration(JSON.stringify({ @@ -43,10 +43,7 @@ export const runClient = async () => { mimetypes: ['application/json'] }); - configureMonacoWorkers(new Logger({ - enabled: true, - debugEnabled: true - })); + configureMonacoWorkers(logger); // create monaco editor monaco.editor.create(document.getElementById('monaco-editor-root')!, { diff --git a/packages/examples/src/browser/main.ts b/packages/examples/src/browser/main.ts index c728b823c..2e43e337f 100644 --- a/packages/examples/src/browser/main.ts +++ b/packages/examples/src/browser/main.ts @@ -10,6 +10,7 @@ import '@codingame/monaco-vscode-json-default-extension'; import { getLanguageService, TextDocument } from 'vscode-json-languageservice'; import { createConverter as createCodeConverter } from 'vscode-languageclient/lib/common/codeConverter.js'; import { createConverter as createProtocolConverter } from 'vscode-languageclient/lib/common/protocolConverter.js'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { configureMonacoWorkers } from '../common/client/utils.js'; @@ -28,11 +29,11 @@ export const runBrowserEditor = async () => { const wrapper = new MonacoEditorLanguageClientWrapper(); const jsonClientUserConfig: WrapperConfig = { + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), - }, - debugLogging: true + } }, editorAppConfig: { $type: 'extended', diff --git a/packages/examples/src/common/client/utils.ts b/packages/examples/src/common/client/utils.ts index e19d7e2b2..bd3da1712 100644 --- a/packages/examples/src/common/client/utils.ts +++ b/packages/examples/src/common/client/utils.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'; import { Logger } from 'monaco-languageclient/tools'; +import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'; export const disableButton = (id: string, disabled: boolean) => { const button = document.getElementById(id) as HTMLButtonElement | null; diff --git a/packages/examples/src/eclipse.jdt.ls/client/main.ts b/packages/examples/src/eclipse.jdt.ls/client/main.ts index 3cee6d76c..31ce4b987 100644 --- a/packages/examples/src/eclipse.jdt.ls/client/main.ts +++ b/packages/examples/src/eclipse.jdt.ls/client/main.ts @@ -5,10 +5,11 @@ import * as vscode from 'vscode'; import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; +import { RegisteredFileSystemProvider, RegisteredMemoryFile, registerFileSystemOverlay } from '@codingame/monaco-vscode-files-service-override'; // this is required syntax highlighting import '@codingame/monaco-vscode-java-default-extension'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; -import { RegisteredFileSystemProvider, RegisteredMemoryFile, registerFileSystemOverlay } from '@codingame/monaco-vscode-files-service-override'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { eclipseJdtLsConfig } from '../config.js'; import helloJavaCode from '../../../resources/eclipse.jdt.ls/workspace/hello.java?raw'; import { configureMonacoWorkers } from '../../common/client/utils.js'; @@ -20,11 +21,11 @@ export const runEclipseJdtLsClient = () => { registerFileSystemOverlay(1, fileSystemProvider); const userConfig: WrapperConfig = { + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), - }, - debugLogging: true + } }, editorAppConfig: { $type: 'extended', diff --git a/packages/examples/src/groovy/client/main.ts b/packages/examples/src/groovy/client/main.ts index d3750d89a..b63ae7312 100644 --- a/packages/examples/src/groovy/client/main.ts +++ b/packages/examples/src/groovy/client/main.ts @@ -6,6 +6,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; // this is required syntax highlighting import '@codingame/monaco-vscode-groovy-default-extension'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { groovyConfig } from '../config.js'; import { configureMonacoWorkers } from '../../common/client/utils.js'; @@ -16,11 +17,11 @@ File file = new File("E:/Example.txt"); `; const userConfig: WrapperConfig = { + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), - }, - debugLogging: true + } }, editorAppConfig: { $type: 'extended', diff --git a/packages/examples/src/json/client/wrapperWs.ts b/packages/examples/src/json/client/wrapperWs.ts index 7f170ee1c..43a358399 100644 --- a/packages/examples/src/json/client/wrapperWs.ts +++ b/packages/examples/src/json/client/wrapperWs.ts @@ -6,6 +6,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; // this is required syntax highlighting import '@codingame/monaco-vscode-json-default-extension'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { configureMonacoWorkers } from '../../common/client/utils.js'; @@ -15,11 +16,11 @@ const text = `{ }`; export const jsonClientUserConfig: WrapperConfig = { + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), - }, - debugLogging: true + } }, editorAppConfig: { $type: 'extended', diff --git a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts index 2a7188967..d24dbf9e2 100644 --- a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts +++ b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts @@ -7,6 +7,7 @@ import getConfigurationServiceOverride from '@codingame/monaco-vscode-configurat import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override'; import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { WrapperConfig } from 'monaco-editor-wrapper'; import { configureMonacoWorkers } from '../../../common/client/utils.js'; import { LangiumMonarchContent } from './langium.monarch.js'; @@ -16,17 +17,13 @@ import code from '../content/example.langium?raw'; export const setupLangiumClientClassic = async (): Promise => { const langiumWorker = loadLangiumWorker(); return { - loggerConfig: { - enabled: true, - debugEnabled: true - }, + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getConfigurationServiceOverride(), ...getEditorServiceOverride(useOpenEditorStub), ...getKeybindingsServiceOverride() - }, - debugLogging: true + } }, editorAppConfig: { $type: 'classic', diff --git a/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts b/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts index 21e63aff8..2b277e26a 100644 --- a/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts +++ b/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts @@ -7,8 +7,9 @@ import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-ov import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; import '../../../../resources/vsix/github-vscode-theme.vsix'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; -import { WrapperConfig } from 'monaco-editor-wrapper'; import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js'; +import { checkLogLevel } from 'monaco-languageclient/tools'; +import { WrapperConfig } from 'monaco-editor-wrapper'; import { loadLangiumWorker } from '../wrapperLangium.js'; import { configureMonacoWorkers } from '../../../common/client/utils.js'; import langiumLanguageConfig from './langium.configuration.json?raw'; @@ -27,16 +28,12 @@ export const setupLangiumClientExtended = async (): Promise => { const writer = new BrowserMessageWriter(langiumWorker); return { + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getEditorServiceOverride(useOpenEditorStub), ...getKeybindingsServiceOverride() - }, - debugLogging: true - }, - loggerConfig: { - enabled: true, - debugEnabled: true + } }, editorAppConfig: { $type: 'extended', diff --git a/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts b/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts index d20689c9c..cb596f1f0 100644 --- a/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts +++ b/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts @@ -7,6 +7,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override'; import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override'; import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { LanguageClientConfig, WrapperConfig } from 'monaco-editor-wrapper'; // cannot be imported with assert as json contains comments import statemachineLanguageConfig from './language-configuration.json?raw'; @@ -49,13 +50,13 @@ export const createLangiumGlobalConfig = async (params: { } : undefined; return { + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), ...getLifecycleServiceOverride(), ...getLocalizationServiceOverride(createDefaultLocaleConfiguration()), - }, - debugLogging: true + } }, editorAppConfig: { $type: 'extended', @@ -97,10 +98,6 @@ export const createLangiumGlobalConfig = async (params: { }, monacoWorkerFactory: configureMonacoWorkers }, - languageClientConfigs, - loggerConfig: { - enabled: true, - debugEnabled: true - } + languageClientConfigs }; }; diff --git a/packages/examples/src/multi/twoLanguageClients.ts b/packages/examples/src/multi/twoLanguageClients.ts index f7b299b22..e2f303561 100644 --- a/packages/examples/src/multi/twoLanguageClients.ts +++ b/packages/examples/src/multi/twoLanguageClients.ts @@ -8,6 +8,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- // this is required syntax highlighting import '@codingame/monaco-vscode-json-default-extension'; import '@codingame/monaco-vscode-python-default-extension'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { CodePlusFileExt, MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { MonacoLanguageClient } from 'monaco-languageclient'; import { configureMonacoWorkers, disableButton } from '../common/client/utils.js'; @@ -31,11 +32,11 @@ print("Hello Moon!") const wrapperConfig: WrapperConfig = { id: '42', + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getKeybindingsServiceOverride() - }, - debugLogging: true + } }, editorAppConfig: { $type: 'extended', diff --git a/packages/examples/src/python/client/config.ts b/packages/examples/src/python/client/config.ts index 2f417b396..f13beed21 100644 --- a/packages/examples/src/python/client/config.ts +++ b/packages/examples/src/python/client/config.ts @@ -7,6 +7,7 @@ import * as vscode from 'vscode'; import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override'; import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; import '@codingame/monaco-vscode-python-default-extension'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { createUrl, WrapperConfig } from 'monaco-editor-wrapper'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; import { MonacoLanguageClient } from 'monaco-languageclient'; @@ -62,12 +63,12 @@ export const createUserConfig = (workspaceRoot: string, code: string, codeUri: s } } }, + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getEditorServiceOverride(useOpenEditorStub), ...getKeybindingsServiceOverride() - }, - debugLogging: true + } }, editorAppConfig: { $type: 'extended', @@ -87,10 +88,6 @@ export const createUserConfig = (workspaceRoot: string, code: string, codeUri: s }, useDiffEditor: false, monacoWorkerFactory: configureMonacoWorkers - }, - loggerConfig: { - enabled: true, - debugEnabled: true } }; }; diff --git a/packages/examples/src/ts/wrapperTs.ts b/packages/examples/src/ts/wrapperTs.ts index 032679251..fa63d446d 100644 --- a/packages/examples/src/ts/wrapperTs.ts +++ b/packages/examples/src/ts/wrapperTs.ts @@ -8,6 +8,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- import '@codingame/monaco-vscode-theme-defaults-default-extension'; import '@codingame/monaco-vscode-typescript-basics-default-extension'; import '@codingame/monaco-vscode-typescript-language-features-default-extension'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { CodePlusUri, MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { configureMonacoWorkers } from '../common/client/utils.js'; @@ -23,12 +24,12 @@ export const runTsWrapper = async () => { };`; const wrapperConfig: WrapperConfig = { + logLevel: checkLogLevel(2), serviceConfig: { userServices: { ...getKeybindingsServiceOverride() }, - enableExtHostWorker: true, - debugLogging: true + enableExtHostWorker: true }, editorAppConfig: { $type: 'extended', diff --git a/packages/wrapper-react/src/index.tsx b/packages/wrapper-react/src/index.tsx index 475d38d79..399806b99 100644 --- a/packages/wrapper-react/src/index.tsx +++ b/packages/wrapper-react/src/index.tsx @@ -6,7 +6,6 @@ import * as monaco from 'monaco-editor'; import React, { CSSProperties, useCallback, useEffect, useRef, useState } from 'react'; import { MonacoEditorLanguageClientWrapper, TextContents, WrapperConfig } from 'monaco-editor-wrapper'; -import { Logger } from 'monaco-languageclient/tools'; export type TextChanges = TextContents & { isDirty: boolean; @@ -33,12 +32,10 @@ export const MonacoEditorReactComp: React.FC = (props) => { } = props; const wrapperRef = useRef(new MonacoEditorLanguageClientWrapper()); - const loggerRef = useRef(new Logger()); const containerRef = useRef(null); const [onTextChangedSubscriptions, setOnTextChangedSubscriptions] = useState([]); useEffect(() => { - loggerRef.current.updateConfig(wrapperConfig.loggerConfig); return () => { destroyMonaco(); }; diff --git a/packages/wrapper-react/test/index.test.tsx b/packages/wrapper-react/test/index.test.tsx index 9d16f15a4..4193b1f9a 100644 --- a/packages/wrapper-react/test/index.test.tsx +++ b/packages/wrapper-react/test/index.test.tsx @@ -6,20 +6,18 @@ import { describe, expect, test } from 'vitest'; import { render, RenderResult } from '@testing-library/react'; import React from 'react'; -import { MonacoEditorReactComp, TextChanges } from '@typefox/monaco-editor-react'; +import { checkLogLevel } from 'monaco-languageclient/tools'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; +import { MonacoEditorReactComp, TextChanges } from '@typefox/monaco-editor-react'; import { updateExtendedAppPrototyp } from './helper.js'; describe('Test MonacoEditorReactComp', () => { test('rerender', async () => { updateExtendedAppPrototyp(); const wrapperConfig: WrapperConfig = { + logLevel: checkLogLevel(2), editorAppConfig: { $type: 'extended', - }, - loggerConfig: { - enabled: true, - debugEnabled: true, } }; const { rerender } = render(); @@ -44,6 +42,7 @@ describe('Test MonacoEditorReactComp', () => { test('update onTextChanged', async () => { updateExtendedAppPrototyp(); const wrapperConfig: WrapperConfig = { + logLevel: checkLogLevel(2), editorAppConfig: { $type: 'extended', codeResources: { @@ -52,10 +51,6 @@ describe('Test MonacoEditorReactComp', () => { fileExt: 'js' } } - }, - loggerConfig: { - enabled: true, - debugEnabled: true, } }; @@ -85,6 +80,7 @@ describe('Test MonacoEditorReactComp', () => { test('update codeResources', async () => { updateExtendedAppPrototyp(); const wrapperConfig: WrapperConfig = { + logLevel: checkLogLevel(2), editorAppConfig: { $type: 'extended', codeResources: { @@ -93,10 +89,6 @@ describe('Test MonacoEditorReactComp', () => { fileExt: 'js' } } - }, - loggerConfig: { - enabled: true, - debugEnabled: true, } }; diff --git a/packages/wrapper/src/editorAppBase.ts b/packages/wrapper/src/editorAppBase.ts index 2f03b837a..3d5275ffa 100644 --- a/packages/wrapper/src/editorAppBase.ts +++ b/packages/wrapper/src/editorAppBase.ts @@ -7,8 +7,8 @@ import * as monaco from 'monaco-editor'; import { createModelReference, ITextFileEditorModel } from 'vscode/monaco'; import { IReference } from '@codingame/monaco-vscode-editor-service-override'; import { getUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; -import { getEditorUri, isModelUpdateRequired, ModelUpdateType } from './utils.js'; import { Logger } from 'monaco-languageclient/tools'; +import { getEditorUri, isModelUpdateRequired, ModelUpdateType } from './utils.js'; export interface CodeContent { text: string; diff --git a/packages/wrapper/src/editorAppExtended.ts b/packages/wrapper/src/editorAppExtended.ts index 98573fc90..5968f9875 100644 --- a/packages/wrapper/src/editorAppExtended.ts +++ b/packages/wrapper/src/editorAppExtended.ts @@ -6,9 +6,9 @@ import type * as vscode from 'vscode'; import * as monaco from 'monaco-editor'; import { updateUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; -import { EditorAppBase, EditorAppConfigBase } from './editorAppBase.js'; import { registerExtension, IExtensionManifest, ExtensionHostKind } from 'vscode/extensions'; import { Logger } from 'monaco-languageclient/tools'; +import { EditorAppBase, EditorAppConfigBase } from './editorAppBase.js'; import { verifyUrlOrCreateDataUrl, ModelUpdateType, isEqual, isModelUpdateRequired } from './utils.js'; import { DisposableStore } from 'vscode/monaco'; diff --git a/packages/wrapper/src/languageClientWrapper.ts b/packages/wrapper/src/languageClientWrapper.ts index 6eedc15ff..7486eaa18 100644 --- a/packages/wrapper/src/languageClientWrapper.ts +++ b/packages/wrapper/src/languageClientWrapper.ts @@ -3,12 +3,12 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { MonacoLanguageClient, ConnetionConfigOptions, WorkerConfigOptionsDirect, WorkerConfigOptionsParams } from 'monaco-languageclient'; -import { Logger } from 'monaco-languageclient/tools'; import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver-protocol/browser.js'; import { CloseAction, ErrorAction, LanguageClientOptions, MessageTransports, State } from 'vscode-languageclient/browser.js'; -import { createUrl } from './utils.js'; +import { MonacoLanguageClient, ConnetionConfigOptions, WorkerConfigOptionsDirect, WorkerConfigOptionsParams } from 'monaco-languageclient'; +import { Logger } from 'monaco-languageclient/tools'; import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc'; +import { createUrl } from './utils.js'; export interface ConnectionConfig { options: ConnetionConfigOptions; diff --git a/packages/wrapper/src/vscode/services.ts b/packages/wrapper/src/vscode/services.ts index 955929920..978288615 100644 --- a/packages/wrapper/src/vscode/services.ts +++ b/packages/wrapper/src/vscode/services.ts @@ -8,12 +8,10 @@ import * as monaco from 'monaco-editor'; import getConfigurationServiceOverride from '@codingame/monaco-vscode-configuration-service-override'; import { OpenEditor } from '@codingame/monaco-vscode-editor-service-override'; import { mergeServices, InitializeServiceConfig } from 'monaco-languageclient/vscode/services'; -import { Logger } from 'monaco-languageclient/tools'; export interface VscodeServicesConfig { serviceConfig?: InitializeServiceConfig; specificServices?: monaco.editor.IEditorOverrideServices; - logger?: Logger; } /** @@ -21,8 +19,6 @@ export interface VscodeServicesConfig { */ export const configureServices = async (config: VscodeServicesConfig): Promise => { const serviceConfig = config.serviceConfig ?? {}; - // configure log level - serviceConfig.debugLogging = config.logger?.isEnabled() === true && (serviceConfig.debugLogging === true || config.logger.isDebugEnabled() === true); // always set required services if not configured serviceConfig.userServices = serviceConfig.userServices ?? {}; diff --git a/packages/wrapper/src/workerFactory.ts b/packages/wrapper/src/workerFactory.ts index a8fabd080..7a9546fda 100644 --- a/packages/wrapper/src/workerFactory.ts +++ b/packages/wrapper/src/workerFactory.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { Logger } from 'monaco-languageclient/tools'; import { initEnhancedMonacoEnvironment } from 'monaco-languageclient/vscode/services'; +import { Logger } from 'monaco-languageclient/tools'; export interface WorkerOverrides { rootPath?: string | URL; diff --git a/packages/wrapper/src/wrapper.ts b/packages/wrapper/src/wrapper.ts index 0fb7cb8f2..c0fc739a8 100644 --- a/packages/wrapper/src/wrapper.ts +++ b/packages/wrapper/src/wrapper.ts @@ -4,9 +4,10 @@ * ------------------------------------------------------------------------------------------ */ import * as monaco from 'monaco-editor'; +import { LogLevel } from 'vscode/services'; import { MonacoLanguageClient } from 'monaco-languageclient'; import { InitializeServiceConfig, initServices } from 'monaco-languageclient/vscode/services'; -import { Logger, LoggerConfig } from 'monaco-languageclient/tools'; +import { Logger, ConsoleLogger } from 'monaco-languageclient/tools'; import { checkServiceConsistency, configureServices } from './vscode/services.js'; import { EditorAppConfigExtended, EditorAppExtended } from './editorAppExtended.js'; import { EditorAppClassic, EditorAppConfigClassic } from './editorAppClassic.js'; @@ -15,7 +16,7 @@ import { LanguageClientConfig, LanguageClientWrapper } from './languageClientWra export interface WrapperConfig { id?: string; - loggerConfig?: LoggerConfig; + logLevel?: LogLevel | number; serviceConfig?: InitializeServiceConfig; editorAppConfig: EditorAppConfigExtended | EditorAppConfigClassic; languageClientConfigs?: Record; @@ -31,7 +32,7 @@ export class MonacoEditorLanguageClientWrapper { private id: string; private editorApp: EditorAppClassic | EditorAppExtended | undefined; private languageClientWrappers: Map = new Map(); - private logger: Logger = new Logger(); + private logger: Logger = new ConsoleLogger(); private initDone = false; private starting?: Promise; private startAwait: (value: void | PromiseLike) => void; @@ -55,7 +56,7 @@ export class MonacoEditorLanguageClientWrapper { // Always dispose old instances before start this.dispose(false); this.id = wrapperConfig.id ?? Math.floor(Math.random() * 101).toString(); - this.logger.updateConfig(wrapperConfig.loggerConfig); + this.logger.setLevel(wrapperConfig.logLevel ?? LogLevel.Off); if (typeof wrapperConfig.editorAppConfig.monacoWorkerFactory === 'function') { wrapperConfig.editorAppConfig.monacoWorkerFactory(this.logger); @@ -71,11 +72,12 @@ export class MonacoEditorLanguageClientWrapper { const specificServices = await this.editorApp.specifyServices(); const serviceConfig = await configureServices({ serviceConfig: wrapperConfig.serviceConfig, - specificServices, - logger: this.logger + specificServices }); await initServices({ - serviceConfig, + userServices: serviceConfig.userServices, + enableExtHostWorker: serviceConfig.enableExtHostWorker, + workspaceConfig: serviceConfig.workspaceConfig, caller: `monaco-editor (${this.id})`, performChecks: checkServiceConsistency, logger: this.logger From 1c52708659e4bd71d19448f2667b8a8f8387b3f7 Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Tue, 24 Sep 2024 14:47:35 +0200 Subject: [PATCH 5/9] Fix tests, remove awaitExtensionReadiness --- package-lock.json | 66 +++++++++++------------ package.json | 2 +- packages/client/test/tools/index.test.ts | 16 +++++- packages/wrapper/src/editorAppBase.ts | 15 +----- packages/wrapper/src/editorAppClassic.ts | 4 -- packages/wrapper/src/editorAppExtended.ts | 6 +-- vitest.workspace.ts | 3 +- 7 files changed, 52 insertions(+), 60 deletions(-) diff --git a/package-lock.json b/package-lock.json index 60e29a9d9..7dd9116bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,7 @@ "vite": "~5.4.7", "vite-node": "~2.1.1", "vitest": "~2.1.1", - "webdriverio": "~9.0.9" + "webdriverio": "~9.1.0" } }, "node_modules/@ampproject/remapping": { @@ -3015,15 +3015,15 @@ "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==" }, "node_modules/@wdio/config": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.0.8.tgz", - "integrity": "sha512-37L+hd+A1Nyehd/pgfTrLC6w+Ngbu0CIoFh9Vv6v8Cgu5Hih0TLofvlg+J1BNbcTd5eQ2tFKZBDeFMhQaIiTpg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.1.0.tgz", + "integrity": "sha512-lxrUJK5ZRilRMrKgamooGbmxpE9qeYFSpF2R3H8HGZXnFDUMUQnWYY2Hn6O5Hw0BA9DxZKqCi1hrBxRws9O2ww==", "dev": true, "license": "MIT", "dependencies": { - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@wdio/logger": "9.1.0", + "@wdio/types": "9.1.0", + "@wdio/utils": "9.1.0", "decamelize": "^6.0.0", "deepmerge-ts": "^7.0.3", "glob": "^10.2.2", @@ -3071,9 +3071,9 @@ } }, "node_modules/@wdio/logger": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.0.8.tgz", - "integrity": "sha512-uIyYIDBwLczmsp9JE5hN3ME8Xg+9WNBfSNXD69ICHrY9WPTzFf94UeTuavK7kwSKF3ro2eJbmNZItYOfnoovnw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.1.0.tgz", + "integrity": "sha512-1Rfg9VCy87I9IrViA1ned1Rqa66JwhCzdEo8rA8T3Ro6lBfOEwDbK1XW8ETKLWcweddzGeFalfVnvUlNgPmFdA==", "dev": true, "license": "MIT", "dependencies": { @@ -3149,9 +3149,9 @@ } }, "node_modules/@wdio/types": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.0.8.tgz", - "integrity": "sha512-pmz2iRWddTanrv8JC7v3wUGm17KRv2WyyJhQfklMSANn9V1ep6pw1RJG2WJnKq4NojMvH1nVv1sMZxXrYPhpYw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.1.0.tgz", + "integrity": "sha512-bi3DTse8Nlat7FTCnciPnJWYggpRSszLQ70ReCcegAUlaancV+Y8ma4IWZROsBQ6f1hB+JIS9gwc/HGcp+6XSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3162,15 +3162,15 @@ } }, "node_modules/@wdio/utils": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.0.8.tgz", - "integrity": "sha512-p3EgOdkhCvMxJFd3WTtSChqYFQu2mz69/5tOsljDaL+4QYwnRR7O8M9wFsL3/9XMVcHdnC4Ija2VRxQ/lb+hHQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.1.0.tgz", + "integrity": "sha512-iH+P/Dakttc7MRsVaikLLe13SDkm9Z+GAAOi6yu6I3x+ao6563KECjsLqJxLCKtbfOjqAqID19QBAtPQTRBVRA==", "dev": true, "license": "MIT", "dependencies": { "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.0.8", - "@wdio/types": "9.0.8", + "@wdio/logger": "9.1.0", + "@wdio/types": "9.1.0", "decamelize": "^6.0.0", "deepmerge-ts": "^7.0.3", "edgedriver": "^5.6.1", @@ -10670,19 +10670,19 @@ } }, "node_modules/webdriver": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.0.8.tgz", - "integrity": "sha512-UnV0ANriSTUgypGk0pz8lApeQuHt+72WEDQG5hFwkkSvggtKLyWdT7+PQkNoXvDajTmiLIqUOq8XPI/Pm71rtw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.1.0.tgz", + "integrity": "sha512-cdTAJ3OFyAEsQVDNqwP8f21I/xaazIotSHrLGcIgIwgfe4rzQpnpXxz2UnXQTtSjjnVmVoYOUAmYhScO02+uww==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", + "@wdio/config": "9.1.0", + "@wdio/logger": "9.1.0", "@wdio/protocols": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@wdio/types": "9.1.0", + "@wdio/utils": "9.1.0", "deepmerge-ts": "^7.0.3", "ws": "^8.8.0" }, @@ -10691,20 +10691,20 @@ } }, "node_modules/webdriverio": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.0.9.tgz", - "integrity": "sha512-IwvKzhcJ9NjOL55xwj27uTTKkfxsg77dmAfqoKFSP5dQ70JzU+NgxiALEjjWQDybtt1yGIkHk7wjjxjboMU1uw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.1.0.tgz", + "integrity": "sha512-6wJ7emnLhxJ3F10cUGaBjzgaabZCByAdNA59/J0Ctg/i40lOdsmHpoYVktlbXYUeOdqUC0raVLi6pngBOSqL1g==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.0.8", - "@wdio/logger": "9.0.8", + "@wdio/config": "9.1.0", + "@wdio/logger": "9.1.0", "@wdio/protocols": "9.0.8", "@wdio/repl": "9.0.8", - "@wdio/types": "9.0.8", - "@wdio/utils": "9.0.8", + "@wdio/types": "9.1.0", + "@wdio/utils": "9.1.0", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", @@ -10723,7 +10723,7 @@ "rgb2hex": "0.2.5", "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.0.8" + "webdriver": "9.1.0" }, "engines": { "node": ">=18.20.0" diff --git a/package.json b/package.json index 845a2123c..30e372b15 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "vite": "~5.4.7", "vite-node": "~2.1.1", "vitest": "~2.1.1", - "webdriverio": "~9.0.9" + "webdriverio": "~9.1.0" }, "volta": { "node": "20.17.0", diff --git a/packages/client/test/tools/index.test.ts b/packages/client/test/tools/index.test.ts index 03ec870a0..e1f002050 100644 --- a/packages/client/test/tools/index.test.ts +++ b/packages/client/test/tools/index.test.ts @@ -4,7 +4,7 @@ * ------------------------------------------------------------------------------------------ */ import { describe, expect, test } from 'vitest'; -import { ConsoleLogger } from 'monaco-languageclient/tools'; +import { checkLogLevel, ConsoleLogger } from 'monaco-languageclient/tools'; import { LogLevel } from 'vscode/services'; describe('Logger', () => { @@ -12,7 +12,7 @@ describe('Logger', () => { test('Config: None', () => { const logger = new ConsoleLogger(); - expect(logger.getLevel()).toBe(LogLevel.Info); + expect(logger.getLevel()).toBe(LogLevel.Off); }); test('Config: Off', () => { @@ -21,10 +21,22 @@ describe('Logger', () => { expect(logger.getLevel()).toBe(LogLevel.Off); }); + test('Config: Info', () => { + const logger = new ConsoleLogger(LogLevel.Info); + + expect(logger.getLevel()).toBe(LogLevel.Info); + }); + test('Config: Debug', () => { const logger = new ConsoleLogger(LogLevel.Debug); expect(logger.getLevel()).toBe(LogLevel.Debug); }); + test('Config: checkLogLevel debug', () => { + const logger = new ConsoleLogger(checkLogLevel(2)); + + expect(logger.getLevel()).toBe(LogLevel.Debug); + }); + }); diff --git a/packages/wrapper/src/editorAppBase.ts b/packages/wrapper/src/editorAppBase.ts index 3d5275ffa..f252f67a6 100644 --- a/packages/wrapper/src/editorAppBase.ts +++ b/packages/wrapper/src/editorAppBase.ts @@ -36,7 +36,6 @@ export interface EditorAppConfigBase { useDiffEditor?: boolean; domReadOnly?: boolean; readOnly?: boolean; - awaitExtensionReadiness?: Array<() => Promise>; overrideAutomaticLayout?: boolean; editorOptions?: monaco.editor.IStandaloneEditorConstructionOptions; diffEditorOptions?: monaco.editor.IStandaloneDiffEditorConstructionOptions; @@ -88,8 +87,7 @@ export abstract class EditorAppBase { useDiffEditor: userAppConfig.useDiffEditor ?? false, readOnly: userAppConfig.readOnly ?? false, domReadOnly: userAppConfig.domReadOnly ?? false, - overrideAutomaticLayout: userAppConfig.overrideAutomaticLayout ?? true, - awaitExtensionReadiness: userAppConfig.awaitExtensionReadiness ?? undefined, + overrideAutomaticLayout: userAppConfig.overrideAutomaticLayout ?? true }; config.editorOptions = { ...userAppConfig.editorOptions, @@ -262,17 +260,6 @@ export abstract class EditorAppBase { } } - async awaitReadiness(awaitExtensionReadiness?: Array<() => Promise>) { - if (awaitExtensionReadiness) { - const allPromises: Array> = []; - for (const awaitReadiness of awaitExtensionReadiness) { - allPromises.push(awaitReadiness()); - } - return Promise.all(allPromises); - } - return Promise.resolve(); - } - updateMonacoEditorOptions(options: monaco.editor.IEditorOptions & monaco.editor.IGlobalEditorOptions) { this.getEditor()?.updateOptions(options); } diff --git a/packages/wrapper/src/editorAppClassic.ts b/packages/wrapper/src/editorAppClassic.ts index afe27605f..6b7752148 100644 --- a/packages/wrapper/src/editorAppClassic.ts +++ b/packages/wrapper/src/editorAppClassic.ts @@ -55,9 +55,6 @@ export class EditorAppClassic extends EditorAppBase { } async init() { - // await all extensions that should be ready beforehand - await this.awaitReadiness(this.config.awaitExtensionReadiness); - const languageDef = this.config.languageDef; if (languageDef) { // register own language first @@ -99,7 +96,6 @@ export class EditorAppClassic extends EditorAppBase { 'useDiffEditor', 'domReadOnly', 'readOnly', - 'awaitExtensionReadiness', 'overrideAutomaticLayout', 'editorOptions', 'diffEditorOptions', diff --git a/packages/wrapper/src/editorAppExtended.ts b/packages/wrapper/src/editorAppExtended.ts index 5968f9875..e7782bd82 100644 --- a/packages/wrapper/src/editorAppExtended.ts +++ b/packages/wrapper/src/editorAppExtended.ts @@ -82,11 +82,7 @@ export class EditorAppExtended extends EditorAppBase { } override async init() { - // await all extensions that should be ready beforehand - // always await theme extension - const whenReadyTheme = (await import('@codingame/monaco-vscode-theme-defaults-default-extension')).whenReady; - const awaitReadiness = (this.config.awaitExtensionReadiness ?? []).concat(whenReadyTheme); - await this.awaitReadiness(awaitReadiness); + await import('@codingame/monaco-vscode-theme-defaults-default-extension'); if (this.config.extensions) { const allPromises: Array> = []; diff --git a/vitest.workspace.ts b/vitest.workspace.ts index bf784da49..6e737db6c 100644 --- a/vitest.workspace.ts +++ b/vitest.workspace.ts @@ -3,8 +3,9 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ +import * as path from 'path'; import { defineWorkspace } from 'vitest/config'; export default defineWorkspace([ - './vite.config.ts' + path.resolve(__dirname, './vite.config.ts') ]); From 43f1093e7bbc73fd8d97deb4ddd690fdc55e3163 Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Tue, 24 Sep 2024 15:20:46 +0200 Subject: [PATCH 6/9] Overcome Linux test problems --- packages/wrapper/src/editorAppExtended.ts | 6 +++- packages/wrapper/test/editorAppBase.test.ts | 8 ++--- .../wrapper/test/editorAppClassic.test.ts | 14 ++++---- .../wrapper/test/editorAppExtended.test.ts | 11 +++--- packages/wrapper/test/helper.ts | 36 ++++++++++++------- .../test/languageClientWrapper.test.ts | 12 +++---- packages/wrapper/test/wrapper.test.ts | 28 +++++++-------- 7 files changed, 65 insertions(+), 50 deletions(-) diff --git a/packages/wrapper/src/editorAppExtended.ts b/packages/wrapper/src/editorAppExtended.ts index e7782bd82..2c3d34043 100644 --- a/packages/wrapper/src/editorAppExtended.ts +++ b/packages/wrapper/src/editorAppExtended.ts @@ -23,6 +23,7 @@ export interface UserConfiguration { export interface EditorAppConfigExtended extends EditorAppConfigBase { $type: 'extended'; + loadThemes?: boolean; extensions?: ExtensionConfig[]; userConfiguration?: UserConfiguration; } @@ -57,6 +58,7 @@ export class EditorAppExtended extends EditorAppBase { this.config = this.buildConfig(editorAppConfig) as EditorAppConfigExtended; this.config.extensions = editorAppConfig.extensions ?? undefined; this.config.userConfiguration = editorAppConfig.userConfiguration ?? undefined; + this.config.loadThemes = editorAppConfig.loadThemes ?? true; } getConfig(): EditorAppConfigExtended { @@ -82,7 +84,9 @@ export class EditorAppExtended extends EditorAppBase { } override async init() { - await import('@codingame/monaco-vscode-theme-defaults-default-extension'); + if (this.config.loadThemes ?? true) { + await import('@codingame/monaco-vscode-theme-defaults-default-extension'); + } if (this.config.extensions) { const allPromises: Array> = []; diff --git a/packages/wrapper/test/editorAppBase.test.ts b/packages/wrapper/test/editorAppBase.test.ts index d58bb9944..2950ee436 100644 --- a/packages/wrapper/test/editorAppBase.test.ts +++ b/packages/wrapper/test/editorAppBase.test.ts @@ -5,17 +5,17 @@ import { describe, expect, test } from 'vitest'; import { isCodeUpdateRequired, isModelUpdateRequired, ModelUpdateType } from 'monaco-editor-wrapper'; -import { createEditorAppConfig, createBaseConfig } from './helper.js'; +import { createWrapperConfigClassicApp, createWrapperConfigExtendedApp } from './helper.js'; describe('Test EditorAppBase', () => { test('classic type: empty EditorAppConfigClassic', () => { - const wrapperConfig = createBaseConfig('classic'); + const wrapperConfig = createWrapperConfigClassicApp(); expect(wrapperConfig.editorAppConfig.$type).toBe('classic'); }); test('extended type: empty EditorAppConfigExtended', () => { - const wrapperConfig = createBaseConfig('extended'); + const wrapperConfig = createWrapperConfigExtendedApp(); expect(wrapperConfig.editorAppConfig.$type).toBe('extended'); }); @@ -40,7 +40,7 @@ describe('Test EditorAppBase', () => { }); test('isModelUpdateRequired', () => { - const config = createEditorAppConfig('classic'); + const config = createWrapperConfigClassicApp().editorAppConfig; let modelUpdateType = isModelUpdateRequired(config.codeResources, { main: { text: '', fileExt: 'js' } }); expect(modelUpdateType).toBe(ModelUpdateType.NONE); diff --git a/packages/wrapper/test/editorAppClassic.test.ts b/packages/wrapper/test/editorAppClassic.test.ts index 4e7c6f4ad..26f902310 100644 --- a/packages/wrapper/test/editorAppClassic.test.ts +++ b/packages/wrapper/test/editorAppClassic.test.ts @@ -5,10 +5,10 @@ import { describe, expect, test } from 'vitest'; import { EditorAppClassic, EditorAppConfigClassic, WrapperConfig } from 'monaco-editor-wrapper'; -import { createBaseConfig, createEditorAppConfig } from './helper.js'; +import { createWrapperConfigClassicApp } from './helper.js'; const buildConfig = (): WrapperConfig => { - const wrapperConfig = createBaseConfig('classic'); + const wrapperConfig = createWrapperConfigClassicApp(); (wrapperConfig.editorAppConfig as EditorAppConfigClassic).editorOptions = {}; return wrapperConfig; }; @@ -44,9 +44,9 @@ describe('Test EditorAppClassic', () => { }); test('isAppConfigDifferent: basic', () => { - const orgConfig = createEditorAppConfig('classic') as EditorAppConfigClassic; - const config = createEditorAppConfig('classic') as EditorAppConfigClassic; - const app = new EditorAppClassic('test', config); + const orgConfig = createWrapperConfigClassicApp().editorAppConfig; + const config = createWrapperConfigClassicApp().editorAppConfig; + const app = new EditorAppClassic('test', config as EditorAppConfigClassic); expect(app.isAppConfigDifferent(orgConfig, config, false)).toBeFalsy(); config.codeResources ??= {}; @@ -78,8 +78,8 @@ describe('Test EditorAppClassic', () => { }); test('config defaults', () => { - const editorAppConfig = createEditorAppConfig('classic') as EditorAppConfigClassic; - const app = new EditorAppClassic('config defaults', editorAppConfig); + const editorAppConfig = createWrapperConfigClassicApp().editorAppConfig; + const app = new EditorAppClassic('config defaults', editorAppConfig as EditorAppConfigClassic); expect(app.getConfig().codeResources?.main?.text).toEqual(''); expect(app.getConfig().codeResources?.original).toBeUndefined(); expect(app.getConfig().useDiffEditor ?? false).toBeFalsy(); diff --git a/packages/wrapper/test/editorAppExtended.test.ts b/packages/wrapper/test/editorAppExtended.test.ts index 55280da8f..17aa89ffb 100644 --- a/packages/wrapper/test/editorAppExtended.test.ts +++ b/packages/wrapper/test/editorAppExtended.test.ts @@ -5,7 +5,7 @@ import { describe, expect, test } from 'vitest'; import { EditorAppConfigExtended, EditorAppExtended, verifyUrlOrCreateDataUrl } from 'monaco-editor-wrapper'; -import { createBaseConfig, createEditorAppConfig } from './helper.js'; +import { createWrapperConfigExtendedApp } from './helper.js'; describe('Test EditorAppExtended', () => { @@ -21,8 +21,7 @@ describe('Test EditorAppExtended', () => { }); test('config userConfiguration', () => { - const wrapperConfig = createBaseConfig('extended'); - const appConfig = wrapperConfig.editorAppConfig as EditorAppConfigExtended; + const appConfig = createWrapperConfigExtendedApp().editorAppConfig as EditorAppConfigExtended; appConfig.userConfiguration = { json: '{ "editor.semanticHighlighting.enabled": true }' }; @@ -31,8 +30,8 @@ describe('Test EditorAppExtended', () => { }); test('isAppConfigDifferent: basic', () => { - const orgConfig = createEditorAppConfig('extended') as EditorAppConfigExtended; - const config = createEditorAppConfig('extended') as EditorAppConfigExtended; + const orgConfig = createWrapperConfigExtendedApp().editorAppConfig as EditorAppConfigExtended; + const config = createWrapperConfigExtendedApp().editorAppConfig as EditorAppConfigExtended; const app = new EditorAppExtended('test', config); expect(app.isAppConfigDifferent(orgConfig, config, false)).toBeFalsy(); @@ -61,7 +60,7 @@ describe('Test EditorAppExtended', () => { }); test('config defaults', () => { - const editorAppConfig = createEditorAppConfig('extended') as EditorAppConfigExtended; + const editorAppConfig = createWrapperConfigExtendedApp().editorAppConfig as EditorAppConfigExtended; const app = new EditorAppExtended('config defaults', editorAppConfig); expect(app.getConfig().codeResources?.main?.text).toEqual(''); expect(app.getConfig().codeResources?.original).toBeUndefined(); diff --git a/packages/wrapper/test/helper.ts b/packages/wrapper/test/helper.ts index 6897d5b9e..a9081ba08 100644 --- a/packages/wrapper/test/helper.ts +++ b/packages/wrapper/test/helper.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -import { EditorAppType, WrapperConfig } from 'monaco-editor-wrapper'; +import { WrapperConfig } from 'monaco-editor-wrapper'; export const createMonacoEditorDiv = () => { const div = document.createElement('div'); @@ -11,21 +11,33 @@ export const createMonacoEditorDiv = () => { document.body.insertAdjacentElement('beforeend', div); }; -export const createBaseConfig = (type: EditorAppType): WrapperConfig => { +export const createWrapperConfigExtendedApp = (): WrapperConfig => { return { - editorAppConfig: createEditorAppConfig(type) + editorAppConfig: { + loadThemes: false, + $type: 'extended', + codeResources: { + main: { + text: '', + fileExt: 'js' + } + }, + useDiffEditor: false, + } }; }; -export const createEditorAppConfig = (type: EditorAppType) => { +export const createWrapperConfigClassicApp = (): WrapperConfig => { return { - $type: type, - codeResources: { - main: { - text: '', - fileExt: 'js' - } - }, - useDiffEditor: false, + editorAppConfig: { + $type: 'classic', + codeResources: { + main: { + text: '', + fileExt: 'js' + } + }, + useDiffEditor: false, + } }; }; diff --git a/packages/wrapper/test/languageClientWrapper.test.ts b/packages/wrapper/test/languageClientWrapper.test.ts index 939029caa..54bd6a2c4 100644 --- a/packages/wrapper/test/languageClientWrapper.test.ts +++ b/packages/wrapper/test/languageClientWrapper.test.ts @@ -5,13 +5,13 @@ import { describe, expect, test } from 'vitest'; import { LanguageClientConfig, LanguageClientWrapper, MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper'; -import { createBaseConfig } from './helper.js'; +import { createWrapperConfigExtendedApp } from './helper.js'; describe('Test LanguageClientWrapper', () => { test('Not defined after construction without configuration', async () => { const wrapper = new MonacoEditorLanguageClientWrapper(); - await wrapper.init(createBaseConfig('extended')); + await wrapper.init(createWrapperConfigExtendedApp()); const languageClientWrapper = wrapper.getLanguageClientWrapper('unknown'); expect(languageClientWrapper).toBeUndefined(); @@ -48,7 +48,7 @@ describe('Test LanguageClientWrapper', () => { }); // setup the wrapper - const config = createBaseConfig('extended'); + const config = createWrapperConfigExtendedApp(); config.languageClientConfigs = { javascript: { languageId: 'javascript', @@ -81,7 +81,7 @@ describe('Test LanguageClientWrapper', () => { }); test('Constructor: config', async () => { - const config = createBaseConfig('extended'); + const config = createWrapperConfigExtendedApp(); config.languageClientConfigs = { javascript: { languageId: 'javascript', @@ -101,7 +101,7 @@ describe('Test LanguageClientWrapper', () => { }); test('Start: unreachable url', async () => { - const config = createBaseConfig('extended'); + const config = createWrapperConfigExtendedApp(); config.languageClientConfigs = { javascript: { languageId: 'javascript', @@ -138,7 +138,7 @@ describe('Test LanguageClientWrapper', () => { }); test('Start: unreachable worker url', async () => { - const config = createBaseConfig('extended'); + const config = createWrapperConfigExtendedApp(); config.languageClientConfigs = { javascript: { languageId: 'javascript', diff --git a/packages/wrapper/test/wrapper.test.ts b/packages/wrapper/test/wrapper.test.ts index 5ee1e9b52..a6943ce8b 100644 --- a/packages/wrapper/test/wrapper.test.ts +++ b/packages/wrapper/test/wrapper.test.ts @@ -7,7 +7,7 @@ import * as vscode from 'vscode'; import { createModelReference } from 'vscode/monaco'; import { describe, expect, test } from 'vitest'; import { isReInitRequired, EditorAppClassic, EditorAppConfigExtended, MonacoEditorLanguageClientWrapper } from 'monaco-editor-wrapper'; -import { createBaseConfig, createMonacoEditorDiv } from './helper.js'; +import { createMonacoEditorDiv, createWrapperConfigClassicApp, createWrapperConfigExtendedApp } from './helper.js'; describe('Test MonacoEditorLanguageClientWrapper', () => { @@ -25,7 +25,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('Check default values', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - await wrapper.initAndStart(createBaseConfig('classic'), document.getElementById('monaco-editor-root')); + await wrapper.initAndStart(createWrapperConfigClassicApp(), document.getElementById('monaco-editor-root')); const app = wrapper.getMonacoEditorApp() as EditorAppClassic; expect(app).toBeDefined(); @@ -38,7 +38,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); await expect(async () => { - await wrapper.initAndStart(createBaseConfig('classic'), null); + await wrapper.initAndStart(createWrapperConfigClassicApp(), null); }).rejects.toThrowError('No HTMLElement provided for monaco-editor.'); }); @@ -54,7 +54,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); await expect(async () => { - const config = createBaseConfig('classic'); + const config = createWrapperConfigClassicApp(); await wrapper.init(config); await wrapper.initAndStart(config, document.getElementById('monaco-editor-root')); }).rejects.toThrowError('init was already performed. Please call dispose first if you want to re-start.'); @@ -63,17 +63,17 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('Verify if configuration changes make re-init necessary', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const wrapperConfigClassic = createBaseConfig('classic'); + const wrapperConfigClassic = createWrapperConfigClassicApp(); wrapper.init(wrapperConfigClassic); const app = wrapper.getMonacoEditorApp(); expect(app).toBeDefined(); if (app) { expect(isReInitRequired(app, wrapperConfigClassic.editorAppConfig, wrapperConfigClassic.editorAppConfig)).toBeFalsy(); - const wrapperConfigExtended = createBaseConfig('extended'); + const wrapperConfigExtended = createWrapperConfigExtendedApp(); expect(isReInitRequired(app, wrapperConfigClassic.editorAppConfig, wrapperConfigExtended.editorAppConfig)).toBeTruthy(); - const wrapperConfigClassicNew = createBaseConfig('classic'); + const wrapperConfigClassicNew = createWrapperConfigClassicApp(); wrapperConfigClassicNew.editorAppConfig.useDiffEditor = true; expect(isReInitRequired(app, wrapperConfigClassicNew.editorAppConfig, wrapperConfigClassic.editorAppConfig)).toBeTruthy(); @@ -83,7 +83,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('code resources main', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const userConfig = createBaseConfig('classic'); + const userConfig = createWrapperConfigClassicApp(); await wrapper.initAndStart(userConfig, document.getElementById('monaco-editor-root')); const app = wrapper.getMonacoEditorApp(); @@ -96,7 +96,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('code resources original', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const wrapperConfig = createBaseConfig('classic'); + const wrapperConfig = createWrapperConfigClassicApp(); let codeResources = wrapperConfig.editorAppConfig.codeResources; if (!codeResources) { codeResources = {}; @@ -118,7 +118,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('code resources main and original', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const wrapperConfig = createBaseConfig('classic'); + const wrapperConfig = createWrapperConfigClassicApp(); let codeResources = wrapperConfig.editorAppConfig.codeResources; if (!codeResources) { codeResources = {}; @@ -146,7 +146,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('code resources empty', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const wrapperConfig = createBaseConfig('classic'); + const wrapperConfig = createWrapperConfigClassicApp(); wrapperConfig.editorAppConfig.codeResources = {}; await wrapper.initAndStart(wrapperConfig, document.getElementById('monaco-editor-root')); @@ -159,7 +159,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('code resources model direct', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const wrapperConfig = createBaseConfig('classic'); + const wrapperConfig = createWrapperConfigClassicApp(); wrapperConfig.editorAppConfig.codeResources = {}; await wrapper.initAndStart(wrapperConfig, document.getElementById('monaco-editor-root')); @@ -183,7 +183,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test.skip('extended editor disposes extensions', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const wrapperConfig = createBaseConfig('extended'); + const wrapperConfig = createWrapperConfigExtendedApp(); (wrapperConfig.editorAppConfig as EditorAppConfigExtended).extensions = [{ config: { engines: { @@ -215,7 +215,7 @@ describe('Test MonacoEditorLanguageClientWrapper', () => { test('Early code resources update on wrapper are ok', async () => { createMonacoEditorDiv(); const wrapper = new MonacoEditorLanguageClientWrapper(); - const wrapperConfig = createBaseConfig('classic'); + const wrapperConfig = createWrapperConfigClassicApp(); wrapperConfig.editorAppConfig.codeResources = {}; await wrapper.init(wrapperConfig); From d64bfbbaec2f1edc90b8feb96a92d4daff75be7f Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Tue, 24 Sep 2024 17:33:21 +0200 Subject: [PATCH 7/9] Unclutter WorkerFactory. Only support direct worker loading, but keep classic preset (used in Langium Classic example) --- packages/examples/src/common/client/utils.ts | 15 ++- .../langium-dsl/config/classicConfig.ts | 11 +- packages/wrapper/src/workerFactory.ts | 115 ++++-------------- 3 files changed, 43 insertions(+), 98 deletions(-) diff --git a/packages/examples/src/common/client/utils.ts b/packages/examples/src/common/client/utils.ts index bd3da1712..8fe4e04ab 100644 --- a/packages/examples/src/common/client/utils.ts +++ b/packages/examples/src/common/client/utils.ts @@ -15,10 +15,13 @@ export const disableButton = (id: string, disabled: boolean) => { export const configureMonacoWorkers = (logger?: Logger) => { useWorkerFactory({ - ignoreMapping: true, - workerLoaders: { - TextEditorWorker: () => new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker.js', import.meta.url), { type: 'module' }), - TextMateWorker: () => new Worker(new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url), { type: 'module' }) - } - }, logger); + workerOverrides: { + ignoreMapping: true, + workerLoaders: { + TextEditorWorker: () => new Worker(new URL('monaco-editor/esm/vs/editor/editor.worker.js', import.meta.url), { type: 'module' }), + TextMateWorker: () => new Worker(new URL('@codingame/monaco-vscode-textmate-service-override/worker', import.meta.url), { type: 'module' }) + } + }, + logger + }); }; diff --git a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts index d24dbf9e2..f13be35ff 100644 --- a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts +++ b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts @@ -7,12 +7,13 @@ import getConfigurationServiceOverride from '@codingame/monaco-vscode-configurat import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override'; import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { checkLogLevel, Logger } from 'monaco-languageclient/tools'; import { WrapperConfig } from 'monaco-editor-wrapper'; -import { configureMonacoWorkers } from '../../../common/client/utils.js'; +// import { configureMonacoWorkers } from '../../../common/client/utils.js'; import { LangiumMonarchContent } from './langium.monarch.js'; import { loadLangiumWorker } from '../wrapperLangium.js'; import code from '../content/example.langium?raw'; +import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'; export const setupLangiumClientClassic = async (): Promise => { const langiumWorker = loadLangiumWorker(); @@ -44,7 +45,11 @@ export const setupLangiumClientClassic = async (): Promise => { monarchLanguage: LangiumMonarchContent, languageExtensionConfig: { id: 'langium' }, }, - monacoWorkerFactory: configureMonacoWorkers + monacoWorkerFactory: (logger?: Logger) => { + useWorkerFactory({ + logger + }); + } }, languageClientConfigs: { langium: { diff --git a/packages/wrapper/src/workerFactory.ts b/packages/wrapper/src/workerFactory.ts index 7a9546fda..514c13d46 100644 --- a/packages/wrapper/src/workerFactory.ts +++ b/packages/wrapper/src/workerFactory.ts @@ -7,122 +7,58 @@ import { initEnhancedMonacoEnvironment } from 'monaco-languageclient/vscode/serv import { Logger } from 'monaco-languageclient/tools'; export interface WorkerOverrides { - rootPath?: string | URL; - basePath?: string | URL; - workerLoaders?: Partial>; + workerLoaders?: Partial>; ignoreMapping?: boolean; userDefinedMapping?: (label: string) => string; } -export interface WorkerConfig { - rootPath: string | URL; - basePath?: string | URL; - workerFile: string | URL; - options?: WorkerOptions; -} - -export type WorkerConfigSupplier = () => WorkerConfig; -export type WorkerLoader = () => Worker - -export const defaultWorkerLoaders: Partial> = { - editorWorker: () => { - return { - rootPath: import.meta.url, - workerFile: 'monaco-editor-wrapper/dist/workers/editorWorker-es.js' - }; - }, - tsWorker: () => { - return { - rootPath: import.meta.url, - workerFile: 'monaco-editor-wrapper/dist/workers/tsWorker-es.js' - }; - }, - htmlWorker: () => { - return { - rootPath: import.meta.url, - workerFile: 'monaco-editor-wrapper/dist/workers/htmlWorker-es.js' - }; - }, - cssWorker: () => { - return { - rootPath: import.meta.url, - workerFile: 'monaco-editor-wrapper/dist/workers/cssWorker-es.js' - }; - }, - jsonWorker: () => { - return { - rootPath: import.meta.url, - workerFile: 'monaco-editor-wrapper/dist/workers/jsonWorker-es.js' - }; - } -}; -/** - * Cross origin workers don't work - * The workaround used by vscode is to start a worker on a blob url containing a short script calling 'importScripts' - * importScripts accepts to load the code inside the blob worker - */ -export const buildWorker = (config: WorkerConfig, workerOverrides?: WorkerOverrides, logger?: Logger): Worker => { - if (workerOverrides?.rootPath !== undefined) { - config.rootPath = workerOverrides.rootPath; - } - if (workerOverrides?.basePath !== undefined) { - config.basePath = workerOverrides.basePath; - } - let workerFile = config.workerFile; - if (config.basePath !== undefined) { - workerFile = `${config.basePath}/${config.workerFile}`; - } - const fullUrl = new URL(workerFile, config.rootPath).href; - logger?.info(`Creating worker: ${fullUrl}`); +export type WorkerLoader = () => Worker; - // default to 'module' if not specified - const workerOptions = config.options ?? {}; - if (!workerOptions.type) { - workerOptions.type = 'module'; - } - const js = workerOptions.type === 'module' ? `import '${fullUrl}';` : `importScripts('${fullUrl}');`; - const blob = new Blob([js], { type: 'application/javascript' }); +export interface WorkerFactoryConfig { + workerOverrides?: WorkerOverrides; + logger?: Logger; +} - return new Worker(URL.createObjectURL(blob), workerOptions); +export const defaultWorkerLoaders: Partial> = { + editorWorker: () => new Worker(new URL('monaco-editor-wrapper/workers/module/editor', import.meta.url), { type: 'module' }), + tsWorker: () => new Worker(new URL('monaco-editor-wrapper/workers/module/ts', import.meta.url), { type: 'module' }), + htmlWorker: () => new Worker(new URL('monaco-editor-wrapper/workers/module/html', import.meta.url), { type: 'module' }), + cssWorker: () => new Worker(new URL('monaco-editor-wrapper/workers/module/css', import.meta.url), { type: 'module' }), + jsonWorker: () => new Worker(new URL('monaco-editor-wrapper/workers/module/json', import.meta.url), { type: 'module' }) }; -export const useWorkerFactory = (workerOverrides?: WorkerOverrides, logger?: Logger) => { +export const useWorkerFactory = (config: WorkerFactoryConfig) => { const envEnhanced = initEnhancedMonacoEnvironment(); const getWorker = (moduleId: string, label: string) => { - logger?.info(`getWorker: moduleId: ${moduleId} label: ${label}`); + config.logger?.info(`getWorker: moduleId: ${moduleId} label: ${label}`); let selector = label; let workerLoaders; - // if you choose to ignore the default mapping only the - // workerLoaders passed with workerOverrides are used - if (workerOverrides?.ignoreMapping === true) { + // if you choose to ignore the default mapping only the workerLoaders passed with workerOverrides are used + if (config.workerOverrides?.ignoreMapping === true) { workerLoaders = { - ...workerOverrides.workerLoaders + ...config.workerOverrides.workerLoaders }; } else { workerLoaders = { - ...defaultWorkerLoaders, ...workerOverrides?.workerLoaders + ...defaultWorkerLoaders, ...config.workerOverrides?.workerLoaders }; let mappingFunc = useDefaultWorkerMapping; - if (workerOverrides?.userDefinedMapping) { - mappingFunc = workerOverrides.userDefinedMapping; + if (config.workerOverrides?.userDefinedMapping) { + mappingFunc = config.workerOverrides.userDefinedMapping; } selector = mappingFunc(label); } - const workerOrConfig = workerLoaders[selector]; - if (workerOrConfig) { - const invoked = workerOrConfig(); - if (Object.hasOwn(invoked, 'workerFile')) { - return buildWorker(invoked as WorkerConfig, workerOverrides, logger); - } else { - return invoked as Worker; - } + const workerFunc = workerLoaders[selector]; + if (workerFunc !== undefined) { + return workerFunc(); + } else { + throw new Error(`Unimplemented worker ${label} (${moduleId})`); } - throw new Error(`Unimplemented worker ${label} (${moduleId})`); }; envEnhanced.getWorker = getWorker; }; @@ -131,6 +67,7 @@ export const useDefaultWorkerMapping = (label: string) => { switch (label) { case 'editor': case 'editorWorkerService': + case 'TextEditorWorker': return 'editorWorker'; case 'typescript': case 'javascript': From 1ba4a1dcacff077664353ede875cc316250bd70b Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Wed, 25 Sep 2024 12:30:29 +0200 Subject: [PATCH 8/9] Implemented review comments --- packages/client/src/index.ts | 2 - packages/client/src/tools/index.ts | 1 - packages/client/src/tools/logging.ts | 40 -------------- packages/client/src/vscode/index.ts | 2 - packages/client/test/tools/index.test.ts | 4 +- packages/examples/src/browser/main.ts | 4 +- .../src/eclipse.jdt.ls/client/main.ts | 4 +- packages/examples/src/groovy/client/main.ts | 4 +- .../examples/src/json/client/wrapperWs.ts | 4 +- .../langium-dsl/config/classicConfig.ts | 6 +-- .../langium-dsl/config/extendedConfig.ts | 4 +- .../config/wrapperStatemachineConfig.ts | 4 +- .../examples/src/multi/twoLanguageClients.ts | 4 +- packages/examples/src/python/client/config.ts | 4 +- packages/examples/src/ts/wrapperTs.ts | 4 +- packages/wrapper-react/test/index.test.tsx | 8 +-- packages/wrapper/src/editorAppClassic.ts | 8 +-- packages/wrapper/src/index.ts | 11 ---- packages/wrapper/src/vscode/services.ts | 38 ++++++++----- packages/wrapper/src/wrapper.ts | 9 +++- packages/wrapper/test/vscode/services.test.ts | 54 +++++++++++++++++++ 21 files changed, 113 insertions(+), 106 deletions(-) create mode 100644 packages/wrapper/test/vscode/services.test.ts diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index de65a7bd3..02b191395 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -3,7 +3,5 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -export type * from './client.js'; export * from './client.js'; -export type * from './commonTypes.js'; export * from './commonTypes.js'; diff --git a/packages/client/src/tools/index.ts b/packages/client/src/tools/index.ts index 3fd313d9b..afc805174 100644 --- a/packages/client/src/tools/index.ts +++ b/packages/client/src/tools/index.ts @@ -3,5 +3,4 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -export type * from './logging.js'; export * from './logging.js'; diff --git a/packages/client/src/tools/logging.ts b/packages/client/src/tools/logging.ts index dd58beadf..39fc6ca46 100644 --- a/packages/client/src/tools/logging.ts +++ b/packages/client/src/tools/logging.ts @@ -24,43 +24,3 @@ export class ConsoleLogger extends VSCodeConsoleLogger { } } - -export function checkLogLevel(logLevel?: string | number | unknown) { - switch (logLevel) { - case 'none': - case 'Off': - case 'off': - case '0': - case 0: - return LogLevel.Off; - case 'Trace': - case 'trace': - case '1': - case 1: - return LogLevel.Trace; - case 'Debug': - case 'debug': - case '2': - case 2: - return LogLevel.Debug; - case 'Info': - case 'info': - case '3': - case 3: - return LogLevel.Info; - case 'Warning': - case 'warning': - case 'Warn': - case 'warn': - case '4': - case 4: - return LogLevel.Warning; - case 'Error': - case 'error': - case '5': - case 5: - return LogLevel.Error; - default: - return LogLevel.Off; - } -} diff --git a/packages/client/src/vscode/index.ts b/packages/client/src/vscode/index.ts index 25b4480c2..9fa9c02d2 100644 --- a/packages/client/src/vscode/index.ts +++ b/packages/client/src/vscode/index.ts @@ -4,6 +4,4 @@ * ------------------------------------------------------------------------------------------ */ export * from './fakeWorker.js'; - -export type * from './services.js'; export * from './services.js'; diff --git a/packages/client/test/tools/index.test.ts b/packages/client/test/tools/index.test.ts index e1f002050..fbc36b2eb 100644 --- a/packages/client/test/tools/index.test.ts +++ b/packages/client/test/tools/index.test.ts @@ -4,7 +4,7 @@ * ------------------------------------------------------------------------------------------ */ import { describe, expect, test } from 'vitest'; -import { checkLogLevel, ConsoleLogger } from 'monaco-languageclient/tools'; +import { ConsoleLogger } from 'monaco-languageclient/tools'; import { LogLevel } from 'vscode/services'; describe('Logger', () => { @@ -34,7 +34,7 @@ describe('Logger', () => { }); test('Config: checkLogLevel debug', () => { - const logger = new ConsoleLogger(checkLogLevel(2)); + const logger = new ConsoleLogger(LogLevel.Debug); expect(logger.getLevel()).toBe(LogLevel.Debug); }); diff --git a/packages/examples/src/browser/main.ts b/packages/examples/src/browser/main.ts index 2e43e337f..1d05772be 100644 --- a/packages/examples/src/browser/main.ts +++ b/packages/examples/src/browser/main.ts @@ -10,7 +10,7 @@ import '@codingame/monaco-vscode-json-default-extension'; import { getLanguageService, TextDocument } from 'vscode-json-languageservice'; import { createConverter as createCodeConverter } from 'vscode-languageclient/lib/common/codeConverter.js'; import { createConverter as createProtocolConverter } from 'vscode-languageclient/lib/common/protocolConverter.js'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { configureMonacoWorkers } from '../common/client/utils.js'; @@ -29,7 +29,7 @@ export const runBrowserEditor = async () => { const wrapper = new MonacoEditorLanguageClientWrapper(); const jsonClientUserConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), diff --git a/packages/examples/src/eclipse.jdt.ls/client/main.ts b/packages/examples/src/eclipse.jdt.ls/client/main.ts index 31ce4b987..fae83ec82 100644 --- a/packages/examples/src/eclipse.jdt.ls/client/main.ts +++ b/packages/examples/src/eclipse.jdt.ls/client/main.ts @@ -9,7 +9,7 @@ import { RegisteredFileSystemProvider, RegisteredMemoryFile, registerFileSystemO // this is required syntax highlighting import '@codingame/monaco-vscode-java-default-extension'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { eclipseJdtLsConfig } from '../config.js'; import helloJavaCode from '../../../resources/eclipse.jdt.ls/workspace/hello.java?raw'; import { configureMonacoWorkers } from '../../common/client/utils.js'; @@ -21,7 +21,7 @@ export const runEclipseJdtLsClient = () => { registerFileSystemOverlay(1, fileSystemProvider); const userConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), diff --git a/packages/examples/src/groovy/client/main.ts b/packages/examples/src/groovy/client/main.ts index b63ae7312..515564828 100644 --- a/packages/examples/src/groovy/client/main.ts +++ b/packages/examples/src/groovy/client/main.ts @@ -6,7 +6,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; // this is required syntax highlighting import '@codingame/monaco-vscode-groovy-default-extension'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { groovyConfig } from '../config.js'; import { configureMonacoWorkers } from '../../common/client/utils.js'; @@ -17,7 +17,7 @@ File file = new File("E:/Example.txt"); `; const userConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), diff --git a/packages/examples/src/json/client/wrapperWs.ts b/packages/examples/src/json/client/wrapperWs.ts index 43a358399..c3293c192 100644 --- a/packages/examples/src/json/client/wrapperWs.ts +++ b/packages/examples/src/json/client/wrapperWs.ts @@ -6,7 +6,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; // this is required syntax highlighting import '@codingame/monaco-vscode-json-default-extension'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { configureMonacoWorkers } from '../../common/client/utils.js'; @@ -16,7 +16,7 @@ const text = `{ }`; export const jsonClientUserConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), diff --git a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts index f13be35ff..53f16b34c 100644 --- a/packages/examples/src/langium/langium-dsl/config/classicConfig.ts +++ b/packages/examples/src/langium/langium-dsl/config/classicConfig.ts @@ -7,9 +7,9 @@ import getConfigurationServiceOverride from '@codingame/monaco-vscode-configurat import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override'; import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; -import { checkLogLevel, Logger } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; +import { Logger } from 'monaco-languageclient/tools'; import { WrapperConfig } from 'monaco-editor-wrapper'; -// import { configureMonacoWorkers } from '../../../common/client/utils.js'; import { LangiumMonarchContent } from './langium.monarch.js'; import { loadLangiumWorker } from '../wrapperLangium.js'; import code from '../content/example.langium?raw'; @@ -18,7 +18,7 @@ import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'; export const setupLangiumClientClassic = async (): Promise => { const langiumWorker = loadLangiumWorker(); return { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getConfigurationServiceOverride(), diff --git a/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts b/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts index 2b277e26a..4955c29f0 100644 --- a/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts +++ b/packages/examples/src/langium/langium-dsl/config/extendedConfig.ts @@ -8,7 +8,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- import '../../../../resources/vsix/github-vscode-theme.vsix'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageclient/browser.js'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { WrapperConfig } from 'monaco-editor-wrapper'; import { loadLangiumWorker } from '../wrapperLangium.js'; import { configureMonacoWorkers } from '../../../common/client/utils.js'; @@ -28,7 +28,7 @@ export const setupLangiumClientExtended = async (): Promise => { const writer = new BrowserMessageWriter(langiumWorker); return { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getEditorServiceOverride(useOpenEditorStub), diff --git a/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts b/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts index cb596f1f0..c0a50fdd2 100644 --- a/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts +++ b/packages/examples/src/langium/statemachine/config/wrapperStatemachineConfig.ts @@ -7,7 +7,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- import getLifecycleServiceOverride from '@codingame/monaco-vscode-lifecycle-service-override'; import getLocalizationServiceOverride from '@codingame/monaco-vscode-localization-service-override'; import { createDefaultLocaleConfiguration } from 'monaco-languageclient/vscode/services'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { LanguageClientConfig, WrapperConfig } from 'monaco-editor-wrapper'; // cannot be imported with assert as json contains comments import statemachineLanguageConfig from './language-configuration.json?raw'; @@ -50,7 +50,7 @@ export const createLangiumGlobalConfig = async (params: { } : undefined; return { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getKeybindingsServiceOverride(), diff --git a/packages/examples/src/multi/twoLanguageClients.ts b/packages/examples/src/multi/twoLanguageClients.ts index e2f303561..1e9545750 100644 --- a/packages/examples/src/multi/twoLanguageClients.ts +++ b/packages/examples/src/multi/twoLanguageClients.ts @@ -8,7 +8,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- // this is required syntax highlighting import '@codingame/monaco-vscode-json-default-extension'; import '@codingame/monaco-vscode-python-default-extension'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { CodePlusFileExt, MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { MonacoLanguageClient } from 'monaco-languageclient'; import { configureMonacoWorkers, disableButton } from '../common/client/utils.js'; @@ -32,7 +32,7 @@ print("Hello Moon!") const wrapperConfig: WrapperConfig = { id: '42', - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getKeybindingsServiceOverride() diff --git a/packages/examples/src/python/client/config.ts b/packages/examples/src/python/client/config.ts index f13beed21..4d1c0d6ae 100644 --- a/packages/examples/src/python/client/config.ts +++ b/packages/examples/src/python/client/config.ts @@ -7,7 +7,7 @@ import * as vscode from 'vscode'; import getEditorServiceOverride from '@codingame/monaco-vscode-editor-service-override'; import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings-service-override'; import '@codingame/monaco-vscode-python-default-extension'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { createUrl, WrapperConfig } from 'monaco-editor-wrapper'; import { useOpenEditorStub } from 'monaco-editor-wrapper/vscode/services'; import { MonacoLanguageClient } from 'monaco-languageclient'; @@ -63,7 +63,7 @@ export const createUserConfig = (workspaceRoot: string, code: string, codeUri: s } } }, - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getEditorServiceOverride(useOpenEditorStub), diff --git a/packages/examples/src/ts/wrapperTs.ts b/packages/examples/src/ts/wrapperTs.ts index fa63d446d..0b00027b8 100644 --- a/packages/examples/src/ts/wrapperTs.ts +++ b/packages/examples/src/ts/wrapperTs.ts @@ -8,7 +8,7 @@ import getKeybindingsServiceOverride from '@codingame/monaco-vscode-keybindings- import '@codingame/monaco-vscode-theme-defaults-default-extension'; import '@codingame/monaco-vscode-typescript-basics-default-extension'; import '@codingame/monaco-vscode-typescript-language-features-default-extension'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { CodePlusUri, MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { configureMonacoWorkers } from '../common/client/utils.js'; @@ -24,7 +24,7 @@ export const runTsWrapper = async () => { };`; const wrapperConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, serviceConfig: { userServices: { ...getKeybindingsServiceOverride() diff --git a/packages/wrapper-react/test/index.test.tsx b/packages/wrapper-react/test/index.test.tsx index 4193b1f9a..5b74750f3 100644 --- a/packages/wrapper-react/test/index.test.tsx +++ b/packages/wrapper-react/test/index.test.tsx @@ -6,7 +6,7 @@ import { describe, expect, test } from 'vitest'; import { render, RenderResult } from '@testing-library/react'; import React from 'react'; -import { checkLogLevel } from 'monaco-languageclient/tools'; +import { LogLevel } from 'vscode/services'; import { MonacoEditorLanguageClientWrapper, WrapperConfig } from 'monaco-editor-wrapper'; import { MonacoEditorReactComp, TextChanges } from '@typefox/monaco-editor-react'; import { updateExtendedAppPrototyp } from './helper.js'; @@ -15,7 +15,7 @@ describe('Test MonacoEditorReactComp', () => { test('rerender', async () => { updateExtendedAppPrototyp(); const wrapperConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, editorAppConfig: { $type: 'extended', } @@ -42,7 +42,7 @@ describe('Test MonacoEditorReactComp', () => { test('update onTextChanged', async () => { updateExtendedAppPrototyp(); const wrapperConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, editorAppConfig: { $type: 'extended', codeResources: { @@ -80,7 +80,7 @@ describe('Test MonacoEditorReactComp', () => { test('update codeResources', async () => { updateExtendedAppPrototyp(); const wrapperConfig: WrapperConfig = { - logLevel: checkLogLevel(2), + logLevel: LogLevel.Debug, editorAppConfig: { $type: 'extended', codeResources: { diff --git a/packages/wrapper/src/editorAppClassic.ts b/packages/wrapper/src/editorAppClassic.ts index 6b7752148..e20b253c3 100644 --- a/packages/wrapper/src/editorAppClassic.ts +++ b/packages/wrapper/src/editorAppClassic.ts @@ -4,7 +4,6 @@ * ------------------------------------------------------------------------------------------ */ import * as monaco from 'monaco-editor'; -import { updateUserConfiguration } from '@codingame/monaco-vscode-configuration-service-override'; import { Logger } from 'monaco-languageclient/tools'; import { EditorAppBase, EditorAppConfigBase } from './editorAppBase.js'; import { ModelUpdateType, isEqual, isModelUpdateRequired } from './utils.js'; @@ -46,12 +45,7 @@ export class EditorAppClassic extends EditorAppBase { } override async loadUserConfiguration() { - if (this.config.editorOptions?.['semanticHighlighting.enabled'] !== undefined) { - // use updateConfiguration here as otherwise semantic highlighting will not work - await updateUserConfiguration(JSON.stringify({ - 'editor.semanticHighlighting.enabled': this.config.editorOptions['semanticHighlighting.enabled'] - })); - } + // nothing needed here currently } async init() { diff --git a/packages/wrapper/src/index.ts b/packages/wrapper/src/index.ts index f7598fac8..1ba893097 100644 --- a/packages/wrapper/src/index.ts +++ b/packages/wrapper/src/index.ts @@ -3,20 +3,9 @@ * Licensed under the MIT License. See LICENSE in the package root for license information. * ------------------------------------------------------------------------------------------ */ -export type * from './editorAppBase.js'; export * from './editorAppBase.js'; - -export type * from './editorAppClassic.js'; export * from './editorAppClassic.js'; - -export type * from './editorAppExtended.js'; export * from './editorAppExtended.js'; - -export type * from './languageClientWrapper.js'; export * from './languageClientWrapper.js'; - -export type * from './wrapper.js'; export * from './wrapper.js'; - export * from './utils.js'; -export type * from './utils.js'; diff --git a/packages/wrapper/src/vscode/services.ts b/packages/wrapper/src/vscode/services.ts index 978288615..cb7659ce3 100644 --- a/packages/wrapper/src/vscode/services.ts +++ b/packages/wrapper/src/vscode/services.ts @@ -5,30 +5,27 @@ import * as vscode from 'vscode'; import * as monaco from 'monaco-editor'; -import getConfigurationServiceOverride from '@codingame/monaco-vscode-configuration-service-override'; import { OpenEditor } from '@codingame/monaco-vscode-editor-service-override'; +import { LogLevel } from 'vscode/services'; import { mergeServices, InitializeServiceConfig } from 'monaco-languageclient/vscode/services'; export interface VscodeServicesConfig { - serviceConfig?: InitializeServiceConfig; - specificServices?: monaco.editor.IEditorOverrideServices; + serviceConfig: InitializeServiceConfig; + specificServices: monaco.editor.IEditorOverrideServices; + logLevel: LogLevel } /** * Child classes are allow to override the services configuration implementation. */ export const configureServices = async (config: VscodeServicesConfig): Promise => { - const serviceConfig = config.serviceConfig ?? {}; - - // always set required services if not configured + const serviceConfig = config.serviceConfig; + // set empty object if undefined serviceConfig.userServices = serviceConfig.userServices ?? {}; - const configureService = serviceConfig.userServices.configurationService ?? undefined; - const workspaceConfig = serviceConfig.workspaceConfig ?? undefined; - if (configureService === undefined) { - if (workspaceConfig) { - throw new Error('You provided a workspaceConfig without using the configurationServiceOverride'); - } + // import configuration service if it is not available + if (serviceConfig.userServices.configurationService === undefined) { + const getConfigurationServiceOverride = (await import('@codingame/monaco-vscode-configuration-service-override')).default; const mlcDefautServices = { ...getConfigurationServiceOverride() }; @@ -36,7 +33,7 @@ export const configureServices = async (config: VscodeServicesConfig): Promise | undefined) ?? {}; + devOptions.logLevel = config.logLevel; + (serviceConfig.workspaceConfig.developmentOptions as Record) = Object.assign(serviceConfig.workspaceConfig.developmentOptions ?? {}, devOptions); + } else if (devLogLevel !== config.logLevel) { + + throw new Error(`You have configured mismatching logLevels: ${config.logLevel} (wrapperConfig) ${devLogLevel} (workspaceConfig.developmentOptions)`); + } return serviceConfig; }; diff --git a/packages/wrapper/src/wrapper.ts b/packages/wrapper/src/wrapper.ts index c0fc739a8..79ece0810 100644 --- a/packages/wrapper/src/wrapper.ts +++ b/packages/wrapper/src/wrapper.ts @@ -71,8 +71,9 @@ export class MonacoEditorLanguageClientWrapper { // editorApps init their own service thats why they have to be created first const specificServices = await this.editorApp.specifyServices(); const serviceConfig = await configureServices({ - serviceConfig: wrapperConfig.serviceConfig, - specificServices + serviceConfig: wrapperConfig.serviceConfig ?? {}, + specificServices, + logLevel: this.logger.getLevel() }); await initServices({ userServices: serviceConfig.userServices, @@ -206,6 +207,10 @@ export class MonacoEditorLanguageClientWrapper { return this.languageClientWrappers.get(languageId)?.getWorker(); } + getLogger() { + return this.logger; + } + async updateCodeResources(codeResources?: CodeResources): Promise { return this.editorApp?.updateCodeResources(codeResources); } diff --git a/packages/wrapper/test/vscode/services.test.ts b/packages/wrapper/test/vscode/services.test.ts new file mode 100644 index 000000000..57e75bf9b --- /dev/null +++ b/packages/wrapper/test/vscode/services.test.ts @@ -0,0 +1,54 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) 2024 TypeFox and others. + * Licensed under the MIT License. See LICENSE in the package root for license information. + * ------------------------------------------------------------------------------------------ */ + +import { describe, expect, test } from 'vitest'; +import { LogLevel } from 'vscode/services'; +import { configureServices } from '../../src/vscode/services.js'; + +describe('createUrl', () => { + + test('test configureServices logLevel trace', async () => { + const serviceConfig = await configureServices({ + serviceConfig: {}, + specificServices: {}, + logLevel: LogLevel.Trace + }); + + expect(serviceConfig.workspaceConfig?.developmentOptions?.logLevel).toBe(LogLevel.Trace); + }); + + test('test configureServices logLevel and developmenet info', async () => { + const serviceConfig = await configureServices({ + serviceConfig: { + workspaceConfig: { + developmentOptions: { + logLevel: LogLevel.Info + } + } + }, + specificServices: {}, + logLevel: LogLevel.Info + }); + + expect(serviceConfig.workspaceConfig?.developmentOptions?.logLevel).toBe(LogLevel.Info); + }); + + test('test configureServices logLevel development mismatch', async () => { + await expect(async () => { + await configureServices({ + serviceConfig: { + workspaceConfig: { + developmentOptions: { + logLevel: LogLevel.Info + } + } + }, + specificServices: {}, + logLevel: LogLevel.Trace + }); + }).rejects.toThrowError('You have configured mismatching logLevels: 1 (wrapperConfig) 3 (workspaceConfig.developmentOptions)'); + }); + +}); From 51476b8fb87e16f9cd6af082e573ec9f4c652056 Mon Sep 17 00:00:00 2001 From: Kai Salmen Date: Wed, 25 Sep 2024 21:43:03 +0200 Subject: [PATCH 9/9] Implemented further review comments --- packages/wrapper/src/vscode/services.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/wrapper/src/vscode/services.ts b/packages/wrapper/src/vscode/services.ts index cb7659ce3..6d3c6d278 100644 --- a/packages/wrapper/src/vscode/services.ts +++ b/packages/wrapper/src/vscode/services.ts @@ -51,12 +51,14 @@ export const configureServices = async (config: VscodeServicesConfig): Promise | undefined) ?? {}; + const devOptions: Record = { + ...serviceConfig.workspaceConfig.developmentOptions + }; devOptions.logLevel = config.logLevel; - (serviceConfig.workspaceConfig.developmentOptions as Record) = Object.assign(serviceConfig.workspaceConfig.developmentOptions ?? {}, devOptions); + (serviceConfig.workspaceConfig.developmentOptions as Record) = Object.assign({}, devOptions); } else if (devLogLevel !== config.logLevel) { throw new Error(`You have configured mismatching logLevels: ${config.logLevel} (wrapperConfig) ${devLogLevel} (workspaceConfig.developmentOptions)`);