From 6084f5bde2b71c586d5a48987c78838d88f5689c Mon Sep 17 00:00:00 2001 From: Arne Lange <118437561+arlange@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:23:30 +0100 Subject: [PATCH 01/60] Add npm and GitHub Actions to Dependabot config Updated Dependabot configuration to include npm and GitHub Actions with daily update schedules. --- .github/dependabot.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..55b6b73c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +version: 2 +updates: +- package-ecosystem: npm + directory: "/" + schedule: + interval: daily +- package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + commit-message: + prefix: "GitHub Actions" + include: "scope" From 482bfe0fbb28ee0ab85f8411ba10f50da729537c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:37:04 +0000 Subject: [PATCH 02/60] Bump react-dom and @types/react-dom Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together. Updates `react-dom` from 19.1.0 to 19.2.0 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.0/packages/react-dom) Updates `@types/react-dom` from 19.1.6 to 19.2.2 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom) --- updated-dependencies: - dependency-name: react-dom dependency-version: 19.2.0 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: "@types/react-dom" dependency-version: 19.2.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 40 ++++++++++++++++++++-------------------- package.json | 4 ++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88b50684..c1a10c04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,11 +15,11 @@ "@types/jest": "^27.5.2", "@types/node": "^16.18.126", "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", + "@types/react-dom": "^19.2.2", "react": "^19.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", - "react-dom": "^19.1.0", + "react-dom": "^19.2.0", "react-router-dom": "6.30.1", "react-scripts": "5.0.1", "reactflow": "^11.11.4", @@ -4214,21 +4214,21 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.8", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", - "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", + "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", "license": "MIT", "dependencies": { "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "19.1.6", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", - "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", + "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", "license": "MIT", "peerDependencies": { - "@types/react": "^19.0.0" + "@types/react": "^19.2.0" } }, "node_modules/@types/resolve": { @@ -14327,9 +14327,9 @@ } }, "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -14497,15 +14497,15 @@ } }, "node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.0" + "react": "^19.2.0" } }, "node_modules/react-error-overlay": { @@ -15255,9 +15255,9 @@ } }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/schema-utils": { diff --git a/package.json b/package.json index ac4373b5..11a58588 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,11 @@ "@types/jest": "^27.5.2", "@types/node": "^16.18.126", "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", + "@types/react-dom": "^19.2.2", "react": "^19.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", - "react-dom": "^19.1.0", + "react-dom": "^19.2.0", "react-router-dom": "6.30.1", "react-scripts": "5.0.1", "reactflow": "^11.11.4", From ab06a25d93caeaa3cbfec182a2a66d6ceb6ca5c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:48:14 +0000 Subject: [PATCH 03/60] GitHub Actions(deps): Bump actions/setup-node from 4 to 6 Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c87f6607..7b5d37f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: uses: actions/checkout@v4 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '20' # or 18, 16 — match your frontend version @@ -59,7 +59,7 @@ jobs: uses: actions/checkout@v4 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '20' From 5d221623bccaca1827869e8984f04bb53dc77114 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Oct 2025 13:10:47 +0000 Subject: [PATCH 04/60] Bump @types/jest from 27.5.2 to 30.0.0 Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 27.5.2 to 30.0.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) --- updated-dependencies: - dependency-name: "@types/jest" dependency-version: 30.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 266 ++++++++++++++++++++++++++++++++++++++++++++-- package.json | 2 +- 2 files changed, 261 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88b50684..c1153548 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", + "@types/jest": "^30.0.0", "@types/node": "^16.18.126", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", @@ -2688,6 +2688,15 @@ } } }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/environment": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", @@ -2703,6 +2712,18 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/expect-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/fake-timers": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", @@ -2720,6 +2741,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/globals": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", @@ -2734,6 +2764,28 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/reporters": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", @@ -4141,15 +4193,217 @@ } }, "node_modules/@types/jest": { - "version": "27.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz", - "integrity": "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "license": "MIT", "dependencies": { - "jest-matcher-utils": "^27.0.0", - "pretty-format": "^27.0.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "license": "MIT" + }, + "node_modules/@types/jest/node_modules/@types/yargs": { + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", + "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" } }, + "node_modules/@types/jest/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", diff --git a/package.json b/package.json index ac4373b5..33e9b9f3 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", - "@types/jest": "^27.5.2", + "@types/jest": "^30.0.0", "@types/node": "^16.18.126", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", From 090225298bfe7c52d40772f979d2361ea0ce51dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 18:27:17 +0000 Subject: [PATCH 05/60] GitHub Actions(deps): Bump actions/checkout from 4 to 6 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c87f6607..d841dfef 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v4 @@ -56,7 +56,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Node.js uses: actions/setup-node@v4 From 48a125dd5838d2d5f060664b591d6d658b1911af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Dec 2025 18:25:21 +0000 Subject: [PATCH 06/60] GitHub Actions(deps): Bump actions/cache from 4 to 5 Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c87f6607..0013dd34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: node-version: '20' # or 18, 16 — match your frontend version - name: Cache node_modules - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} From 196defd20deae6017ee0e5ce23644b597ed49cbf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 18:26:36 +0000 Subject: [PATCH 07/60] GitHub Actions(deps): Bump actions/upload-artifact from 4 to 6 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c87f6607..b9282054 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: run: npm run build - name: Upload production build (optional) - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: frontend-build path: dist/ # or your build output dir From e0aa392f6751b90a82e99e17523d3db6435b0e44 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 18:06:49 +0000 Subject: [PATCH 08/60] GitHub Actions(deps): Bump actions/upload-artifact from 6 to 7 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed17b40b..acec69b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,7 +44,7 @@ jobs: run: npm run build - name: Upload production build (optional) - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: frontend-build path: dist/ # or your build output dir From 124d06a3b9d9f0bf31e6b296d1a0c17b6a237e83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 10:18:05 +0000 Subject: [PATCH 09/60] Bump minimatch Bumps and [minimatch](https://github.com/isaacs/minimatch). These dependencies needed to be updated together. Updates `minimatch` from 5.1.6 to 5.1.9 - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v5.1.6...v5.1.9) Updates `minimatch` from 3.1.2 to 3.1.5 - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v5.1.6...v5.1.9) Updates `minimatch` from 9.0.5 to 9.0.9 - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v5.1.6...v5.1.9) --- updated-dependencies: - dependency-name: minimatch dependency-version: 5.1.9 dependency-type: indirect - dependency-name: minimatch dependency-version: 3.1.5 dependency-type: indirect - dependency-name: minimatch dependency-version: 9.0.9 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff970e55..0016d224 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9110,9 +9110,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -12539,9 +12539,9 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -16914,12 +16914,12 @@ } }, "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -17922,9 +17922,9 @@ } }, "node_modules/vscode-languageclient/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" From b349c2ab9c146a3d712b9c4e28861ce4f080613a Mon Sep 17 00:00:00 2001 From: Arne Lange <118437561+arlange@users.noreply.github.com> Date: Tue, 26 May 2026 12:27:02 +0200 Subject: [PATCH 10/60] Enhance SonarCloud scanner configuration Added organization and project key to SonarCloud scanner command. --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed17b40b..90773503 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: - name: Run SonarCloud scanner run: | - npm install -g sonarqube-scanner - npx sonar-scanner -Dsonar.login=${{ secrets.SONAR_TOKEN }} + npm install -g sonarqube-scanner + npx sonar-scanner -Dsonar.login=${{ secrets.SONAR_TOKEN }} -Dsonar.organization=vitruv-tools -Dsonar.projectKey=vitruv-tools_Vitruv-UI-Methodologist env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} \ No newline at end of file + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From ed297c3ca3fd002f8d95bf99c7616a77cb67256d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 10:34:37 +0000 Subject: [PATCH 11/60] Bump form-data from 3.0.3 to 3.0.4 Bumps [form-data](https://github.com/form-data/form-data) from 3.0.3 to 3.0.4. - [Release notes](https://github.com/form-data/form-data/releases) - [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md) - [Commits](https://github.com/form-data/form-data/compare/v3.0.3...v3.0.4) --- updated-dependencies: - dependency-name: form-data dependency-version: 3.0.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff970e55..07afcbf1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9386,14 +9386,15 @@ } }, "node_modules/form-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", - "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.35" }, "engines": { From 39d451b64aa9b27559dd254979376cc8418da532 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 May 2026 14:03:08 +0000 Subject: [PATCH 12/60] Bump rollup from 2.79.2 to 2.80.0 Bumps [rollup](https://github.com/rollup/rollup) from 2.79.2 to 2.80.0. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/v2.80.0/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v2.79.2...v2.80.0) --- updated-dependencies: - dependency-name: rollup dependency-version: 2.80.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3bf92397..2282eef8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15642,9 +15642,9 @@ } }, "node_modules/rollup": { - "version": "2.79.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", - "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "version": "2.80.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz", + "integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==", "license": "MIT", "bin": { "rollup": "dist/bin/rollup" From 7f1916f33863a328a2d907d45e5e1d2c47d76db4 Mon Sep 17 00:00:00 2001 From: Arne Lange <118437561+arlange@users.noreply.github.com> Date: Tue, 26 May 2026 16:23:06 +0200 Subject: [PATCH 13/60] Update ci.yml --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 90773503..d69c59f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,6 +72,8 @@ jobs: - name: Run SonarCloud scanner run: | npm install -g sonarqube-scanner - npx sonar-scanner -Dsonar.login=${{ secrets.SONAR_TOKEN }} -Dsonar.organization=vitruv-tools -Dsonar.projectKey=vitruv-tools_Vitruv-UI-Methodologist + npx sonar-scanner -Dsonar.login=${{ secrets.SONAR_TOKEN }} \ + -Dsonar.organization=vitruv-tools \ + -Dsonar.projectKey=vitruv-tools_Vitruv-UI-Methodologist env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From e36d42ba02ce8d1139d178f10a74a35b13aa39bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 11:24:40 +0000 Subject: [PATCH 14/60] Bump shell-quote from 1.8.3 to 1.8.4 Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4. - [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4) --- updated-dependencies: - dependency-name: shell-quote dependency-version: 1.8.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3bf92397..bb951a67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16172,9 +16172,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz", + "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==", "license": "MIT", "engines": { "node": ">= 0.4" From 73e68093eed3bd49a18f3a28d6be7022d80e6ac9 Mon Sep 17 00:00:00 2001 From: tools-vitruv <107855875+tools-vitruv@users.noreply.github.com> Date: Wed, 17 Jun 2026 13:53:43 +0200 Subject: [PATCH 15/60] Update ci.yml --- .github/workflows/ci.yml | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d69c59f4..cf51c37d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,27 +53,20 @@ jobs: name: SonarCloud Analysis runs-on: ubuntu-latest needs: build-and-test - steps: - name: Checkout repository uses: actions/checkout@v6 - + with: + fetch-depth: 0 # SonarCloud needs full history for blame/new-code analysis - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '20' - - name: Install dependencies run: npm ci - - name: Run tests with coverage run: npm test -- --coverage - - - name: Run SonarCloud scanner - run: | - npm install -g sonarqube-scanner - npx sonar-scanner -Dsonar.login=${{ secrets.SONAR_TOKEN }} \ - -Dsonar.organization=vitruv-tools \ - -Dsonar.projectKey=vitruv-tools_Vitruv-UI-Methodologist + - name: SonarCloud Scan + uses: SonarSource/sonarqube-scan-action@v4 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 94cb816a8f9ae811ac5daba55b187956b427b2bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 18:04:14 +0000 Subject: [PATCH 16/60] GitHub Actions(deps): Bump SonarSource/sonarqube-scan-action from 4 to 8 Bumps [SonarSource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action) from 4 to 8. - [Release notes](https://github.com/sonarsource/sonarqube-scan-action/releases) - [Commits](https://github.com/sonarsource/sonarqube-scan-action/compare/v4...v8) --- updated-dependencies: - dependency-name: SonarSource/sonarqube-scan-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf51c37d..1b323b74 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,6 +67,6 @@ jobs: - name: Run tests with coverage run: npm test -- --coverage - name: SonarCloud Scan - uses: SonarSource/sonarqube-scan-action@v4 + uses: SonarSource/sonarqube-scan-action@v8 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From e5096f3e637851d70a4ba3b1ed1e97dd32fe25ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 18:03:44 +0000 Subject: [PATCH 17/60] GitHub Actions(deps): Bump actions/checkout from 6 to 7 Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf51c37d..ca1fb7a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Setup Node.js uses: actions/setup-node@v6 @@ -55,7 +55,7 @@ jobs: needs: build-and-test steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: fetch-depth: 0 # SonarCloud needs full history for blame/new-code analysis - name: Setup Node.js From fba69bbe932488c856b9f2bdec8b63f3226c5238 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 20:07:45 +0000 Subject: [PATCH 18/60] Bump jsonpath from 1.1.1 to 1.3.0 Bumps [jsonpath](https://github.com/dchester/jsonpath) from 1.1.1 to 1.3.0. - [Commits](https://github.com/dchester/jsonpath/commits) --- updated-dependencies: - dependency-name: jsonpath dependency-version: 1.3.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 123 ++++++---------------------------------------- 1 file changed, 16 insertions(+), 107 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f99e7ef..6141c8d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12069,20 +12069,20 @@ } }, "node_modules/jsonpath": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.3.0.tgz", + "integrity": "sha512-0kjkYHJBkAy50Z5QzArZ7udmvxrJzkpKYW27fiF//BrMY7TQibYLl+FYIXN2BiYmwMIVzSfD8aDRj6IzgBX2/w==", "license": "MIT", "dependencies": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" + "esprima": "1.2.5", + "static-eval": "2.1.1", + "underscore": "1.13.6" } }, "node_modules/jsonpath/node_modules/esprima": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -16435,103 +16435,12 @@ "license": "MIT" }, "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "license": "MIT", - "dependencies": { - "escodegen": "^1.8.1" - } - }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/static-eval/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/static-eval/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-eval/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", + "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "escodegen": "^2.1.0" } }, "node_modules/statuses": { @@ -17656,9 +17565,9 @@ } }, "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { From 0e13c79d0107e07a16c1ebe928dc6dc7dbb9bdba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jun 2026 18:03:43 +0000 Subject: [PATCH 19/60] GitHub Actions(deps): Bump actions/cache from 5 to 6 Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76ab802f..3405b8de 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: node-version: '20' # or 18, 16 — match your frontend version - name: Cache node_modules - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} From 1810ab1ba4aaae22f154610fbc0c8cc9cf5e74e8 Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim <105105189+a77med-Ibrahim@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:37:39 +0200 Subject: [PATCH 20/60] Add password visibility toggles --- package-lock.json | 10 +++ package.json | 1 + src/__tests__/components/auth/SignIn.test.tsx | 39 +++++++++-- src/__tests__/components/auth/SignUp.test.tsx | 34 +++++++++- src/components/auth/Auth.css | 43 ++++++++++++ .../auth/PasswordVisibilityToggle.tsx | 40 ++++++++++++ src/components/auth/SignIn.tsx | 31 ++++++--- src/components/auth/SignUp.tsx | 65 ++++++++++++------- 8 files changed, 226 insertions(+), 37 deletions(-) create mode 100644 src/components/auth/PasswordVisibilityToggle.tsx diff --git a/package-lock.json b/package-lock.json index 6f99e7ef..2ec8d323 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "@types/node": "^16.18.126", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", + "lucide-react": "^1.24.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.5.0", "react": "^19.1.0", @@ -12317,6 +12318,15 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.24.0.tgz", + "integrity": "sha512-YT6mBD8lGKkg4nM39enlm94/sfJIiW0YKUT60fBy4YK8tai31ylg1VhGNWxkpSKHo9UagfnZqwIff3HTDQwXeA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/lz-string": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", diff --git a/package.json b/package.json index d85c2e2a..1147fde7 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@types/node": "^16.18.126", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", + "lucide-react": "^1.24.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.5.0", "react": "^19.1.0", diff --git a/src/__tests__/components/auth/SignIn.test.tsx b/src/__tests__/components/auth/SignIn.test.tsx index 813fbeef..189a12c4 100644 --- a/src/__tests__/components/auth/SignIn.test.tsx +++ b/src/__tests__/components/auth/SignIn.test.tsx @@ -33,10 +33,42 @@ describe('SignIn component', () => { ); expect(screen.getByLabelText(/Username or Email/i)).toBeInTheDocument(); - expect(screen.getByLabelText(/Password/i)).toBeInTheDocument(); + expect(screen.getByLabelText(/^Password$/i)).toBeInTheDocument(); expect(screen.getByRole('button', { name: /Sign In/i })).toBeInTheDocument(); }); + it('toggles password visibility without changing the password value', async () => { + render( + , + ); + + const passwordInput = screen.getByLabelText(/^Password$/i); + await userEvent.type(passwordInput, 'password123!'); + + expect(passwordInput).toHaveAttribute('type', 'password'); + expect(screen.getByRole('button', { name: 'Show password' })).toHaveAttribute( + 'aria-pressed', + 'false', + ); + + await userEvent.click(screen.getByRole('button', { name: 'Show password' })); + + expect(passwordInput).toHaveAttribute('type', 'text'); + expect(passwordInput).toHaveValue('password123!'); + expect(screen.getByRole('button', { name: 'Hide password' })).toHaveAttribute( + 'aria-pressed', + 'true', + ); + + await userEvent.click(screen.getByRole('button', { name: 'Hide password' })); + + expect(passwordInput).toHaveAttribute('type', 'password'); + expect(passwordInput).toHaveValue('password123!'); + }); + it('shows validation error when submitting with empty fields', async () => { render( { screen.getByLabelText(/Username or Email/i), 'john@example.com', ); - await userEvent.type(screen.getByLabelText(/Password/i), 'password123!'); + await userEvent.type(screen.getByLabelText(/^Password$/i), 'password123!'); await userEvent.click(screen.getByRole('button', { name: /Sign In/i })); await waitFor(() => { @@ -94,7 +126,7 @@ describe('SignIn component', () => { screen.getByLabelText(/Username or Email/i), 'john@example.com', ); - await userEvent.type(screen.getByLabelText(/Password/i), 'wrong'); + await userEvent.type(screen.getByLabelText(/^Password$/i), 'wrong'); await userEvent.click(screen.getByRole('button', { name: /Sign In/i })); expect( @@ -145,4 +177,3 @@ describe('SignIn component', () => { }); }); }); - diff --git a/src/__tests__/components/auth/SignUp.test.tsx b/src/__tests__/components/auth/SignUp.test.tsx index a9e2e2f4..c5c2df70 100644 --- a/src/__tests__/components/auth/SignUp.test.tsx +++ b/src/__tests__/components/auth/SignUp.test.tsx @@ -40,6 +40,39 @@ describe('SignUp component', () => { ).toBeInTheDocument(); }); + it('toggles sign-up password fields independently', async () => { + render( + , + ); + + const passwordInput = screen.getByLabelText(/^Password \*$/i); + const confirmPasswordInput = screen.getByLabelText(/^Confirm Password \*$/i); + + expect(passwordInput).toHaveAttribute('type', 'password'); + expect(confirmPasswordInput).toHaveAttribute('type', 'password'); + + await userEvent.click(screen.getByRole('button', { name: 'Show password' })); + + expect(passwordInput).toHaveAttribute('type', 'text'); + expect(confirmPasswordInput).toHaveAttribute('type', 'password'); + expect(screen.getByRole('button', { name: 'Hide password' })).toHaveAttribute( + 'aria-pressed', + 'true', + ); + + await userEvent.click( + screen.getByRole('button', { name: 'Show confirm password' }), + ); + + expect(confirmPasswordInput).toHaveAttribute('type', 'text'); + expect( + screen.getByRole('button', { name: 'Hide confirm password' }), + ).toHaveAttribute('aria-pressed', 'true'); + }); + it('shows validation error for too short first name', async () => { render( { expect(onSignUpSuccess).toHaveBeenCalled(); }); }); - diff --git a/src/components/auth/Auth.css b/src/components/auth/Auth.css index cd11cde1..d1cfadb5 100644 --- a/src/components/auth/Auth.css +++ b/src/components/auth/Auth.css @@ -118,6 +118,45 @@ font-weight: 400; } +.password-input-wrapper { + position: relative; +} + +.password-input-wrapper input { + padding-right: 3.5rem; +} + +.password-visibility-toggle { + position: absolute; + top: 50%; + right: 2px; + width: 44px; + height: 44px; + padding: 0; + border: none; + background: transparent; + color: #047857; + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + transform: translateY(-50%); +} + +.password-visibility-toggle:hover:not(:disabled) { + color: #065f46; +} + +.password-visibility-toggle:focus-visible { + outline: 2px solid #06b5a0; + outline-offset: -2px; +} + +.password-visibility-toggle:disabled { + color: #64748b; + cursor: not-allowed; +} + .auth-button { width: 100%; padding: 14px; @@ -418,6 +457,10 @@ padding: 11px 13px; font-size: 14px; } + + .password-input-wrapper input { + padding-right: 3.25rem; + } .auth-button { padding: 13px; diff --git a/src/components/auth/PasswordVisibilityToggle.tsx b/src/components/auth/PasswordVisibilityToggle.tsx new file mode 100644 index 00000000..50168bd3 --- /dev/null +++ b/src/components/auth/PasswordVisibilityToggle.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import { Eye, EyeOff } from 'lucide-react'; + +interface PasswordVisibilityToggleProps { + inputId: string; + fieldLabel: string; + isVisible: boolean; + onToggle: () => void; + disabled?: boolean; +} + +export function PasswordVisibilityToggle({ + inputId, + fieldLabel, + isVisible, + onToggle, + disabled = false, +}: Readonly) { + const action = isVisible ? 'Hide' : 'Show'; + const accessibleLabel = `${action} ${fieldLabel}`; + + return ( + + ); +} diff --git a/src/components/auth/SignIn.tsx b/src/components/auth/SignIn.tsx index 75ebdc78..c22f6a8f 100644 --- a/src/components/auth/SignIn.tsx +++ b/src/components/auth/SignIn.tsx @@ -2,6 +2,7 @@ import React, { useState } from 'react'; import { SignInCredentials } from '../../services/auth'; import { useAuth } from '../../contexts/AuthContext'; import { apiService } from '../../services/api'; +import { PasswordVisibilityToggle } from './PasswordVisibilityToggle'; import './Auth.css'; interface SignInProps { @@ -17,6 +18,7 @@ export function SignIn({ onSignInSuccess, onSwitchToSignUp }: Readonly(null); + const [isPasswordVisible, setIsPasswordVisible] = useState(false); // Forgot password states const [isForgotPasswordOpen, setIsForgotPasswordOpen] = useState(false); @@ -125,16 +127,25 @@ export function SignIn({ onSignInSuccess, onSwitchToSignUp }: Readonly - +
+ + setIsPasswordVisible(visible => !visible)} + disabled={isLoading} + /> +
(null); const [isSuccess, setIsSuccess] = useState(false); @@ -402,16 +405,25 @@ export function SignUp({ onSignUpSuccess, onSwitchToSignIn }: Readonly - + + setIsPasswordVisible(visible => !visible)} disabled={isLoading || isSuccess} - required - /> + /> +
{/* PASSWORD STRENGTH METER + REQUIREMENTS */} {formData.password && ( @@ -460,19 +472,28 @@ export function SignUp({ onSignUpSuccess, onSwitchToSignIn }: Readonly - { - setConfirmPassword(e.target.value); - if (error) setError(null); - }} - placeholder="Confirm your password" +
+ { + setConfirmPassword(e.target.value); + if (error) setError(null); + }} + placeholder="Confirm your password" + disabled={isLoading || isSuccess} + required + /> + setIsConfirmPasswordVisible(visible => !visible)} disabled={isLoading || isSuccess} - required - /> + /> +
+ )} + + {showForm && ( +
+ {optionsLoading && ( +
+ Loading meta models… +
+ )} + {optionsError && ( +
{optionsError}
+ )} + +
Source Meta Model
+ + +
Target Meta Model
+ + +
Reactions File
+ setReactionFile(e.target.files?.[0] ?? null)} + /> + + + {linkError && ( +
{linkError}
+ )} + +
+ + +
+
+ )} + + ); +}; diff --git a/src/components/ui/VsumDetailsModal.tsx b/src/components/ui/VsumDetailsModal.tsx index 8e06e067..c2ca299e 100644 --- a/src/components/ui/VsumDetailsModal.tsx +++ b/src/components/ui/VsumDetailsModal.tsx @@ -3,6 +3,7 @@ import ReactDOM from 'react-dom'; import { apiService } from '../../services/api'; import { VsumDetails } from '../../types'; import { VsumUsersTab } from './VsumUsersTab'; +import { LinkMetaModelsPanel } from './LinkMetaModelsPanel'; interface Props { isOpen: boolean; @@ -662,23 +663,26 @@ export const VsumDetailsModal: React.FC = ({ isOpen, vsumId, onClose, onS }; }, [isOpen]); + const reloadDetails = async () => { + if (!vsumId) return; + setLoading(true); + setError(''); + try { + const res = await apiService.getVsumDetails(vsumId); + const d = res.data; + setDetails(d); + setName(d.name ?? ''); + } catch (e: any) { + setError(e?.message || 'Failed to load details'); + } finally { + setLoading(false); + } + }; + useEffect(() => { if (!isOpen || !vsumId) return; - const load = async () => { - setLoading(true); - setError(''); - try { - const res = await apiService.getVsumDetails(vsumId); - const d = res.data; - setDetails(d); - setName(d.name ?? ''); - } catch (e: any) { - setError(e?.message || 'Failed to load details'); - } finally { - setLoading(false); - } - }; - load(); + reloadDetails(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [isOpen, vsumId]); useEffect(() => { @@ -792,10 +796,19 @@ export const VsumDetailsModal: React.FC = ({ isOpen, vsumId, onClose, onS ))} ) : ( -
+
No meta models linked.
)} + + {vsumId && ( + + )} ); }; From 4d68fa60c225472923cfe4898db930996560b9a4 Mon Sep 17 00:00:00 2001 From: Shoyib Hassan <63136794+C0dE-l3eAkeR@users.noreply.github.com> Date: Wed, 15 Jul 2026 18:25:53 +0200 Subject: [PATCH 25/60] Match existing meta models/relations by their catalog id, not the VSUM-scoped clone id existingMetaModels[].id is the id of the VSUM-scoped MetaModel clone created when a metamodel is linked to a VSUM, not the catalog id used everywhere else (the select options, sync-changes requests, and -- after vitruv-tools/methodologistUI-backend#268 -- the relation's own sourceId/targetId). Adding a relation on top of any existing relation was failing with a 404 "MetaModel Ids not found in this VSUM" because of this mismatch. Use sourceId (the catalog id, already present on VsumMetaModelRef) instead of id when merging with the new selection and when resolving names for display. --- src/components/ui/LinkMetaModelsPanel.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/ui/LinkMetaModelsPanel.tsx b/src/components/ui/LinkMetaModelsPanel.tsx index 6b856827..df11dfc3 100644 --- a/src/components/ui/LinkMetaModelsPanel.tsx +++ b/src/components/ui/LinkMetaModelsPanel.tsx @@ -119,8 +119,12 @@ export const LinkMetaModelsPanel: React.FC = ({ }; }, [showForm]); + // existingMetaModels[].id is the VSUM-scoped clone id created when the metamodel was linked + // (see VsumMetaModelService#create on the backend); relations and the catalog (findMetaModels, + // the select options below) all speak in terms of the original metamodel's id, exposed here as + // sourceId. Matching must go through sourceId, not id. const nameFor = (id: number): string => - existingMetaModels.find((m) => m.id === id)?.name ?? `#${id}`; + existingMetaModels.find((m) => m.sourceId === id)?.name ?? `#${id}`; const resetForm = () => { setSourceId(''); @@ -157,8 +161,10 @@ export const LinkMetaModelsPanel: React.FC = ({ throw new Error('Reaction file upload did not return a valid file id.'); } + // sync-changes expects catalog metamodel ids (the same ones the select options above use), + // not the VSUM-scoped clone ids in existingMetaModels[].id -- see the note on nameFor above. const metaModelIds = Array.from( - new Set([...existingMetaModels.map((m) => m.id), sourceId, targetId]) + new Set([...existingMetaModels.map((m) => m.sourceId), sourceId, targetId]) ); const metaModelRelationRequests = [ ...existingRelations.map((r) => ({ From f67013b0d4f2bccb4e3727fc5b6da94f8b0e7377 Mon Sep 17 00:00:00 2001 From: Shoyib Hassan <63136794+C0dE-l3eAkeR@users.noreply.github.com> Date: Wed, 15 Jul 2026 19:31:44 +0200 Subject: [PATCH 26/60] Add tests for LinkMetaModelsPanel Covers: rendering existing relations resolved through sourceId, opening the form and loading the catalog meta model list on demand, both validation errors, the happy path (verifying the new relation is correctly merged with existing ones rather than replacing them), a failed sync-changes call surfacing an error without calling onLinked, and Cancel resetting the form. 93% statement coverage on the component. --- .../ui/LinkMetaModelsPanel.test.tsx | 255 ++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx diff --git a/src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx b/src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx new file mode 100644 index 00000000..4f50bc89 --- /dev/null +++ b/src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx @@ -0,0 +1,255 @@ +import React from 'react'; +import { render, screen, fireEvent, waitFor } from '@testing-library/react'; +import { LinkMetaModelsPanel } from '../../../components/ui/LinkMetaModelsPanel'; +import { VsumMetaModelRef, VsumMetaModelRelation } from '../../../types'; + +jest.mock('../../../services/api', () => ({ + apiService: { + findMetaModels: jest.fn(), + uploadFile: jest.fn(), + syncVsumChanges: jest.fn(), + }, +})); + +const { apiService } = require('../../../services/api') as { + apiService: { + findMetaModels: jest.Mock; + uploadFile: jest.Mock; + syncVsumChanges: jest.Mock; + }; +}; + +const existingMetaModels: VsumMetaModelRef[] = [ + { + id: 101, + sourceId: 2, + name: 'System Infrastructure Demo', + description: '', + domain: 'Infrastructure', + keyword: [], + createdAt: '', + updatedAt: '', + ecoreFileId: 1, + genModelFileId: 2, + }, + { + id: 102, + sourceId: 5, + name: 'Vitruv CLI Model2', + description: '', + domain: 'Entities', + keyword: [], + createdAt: '', + updatedAt: '', + ecoreFileId: 3, + genModelFileId: 4, + }, +]; + +const existingRelations: VsumMetaModelRelation[] = [ + { id: 1, sourceId: 2, targetId: 5, reactionFileStorageId: 35 }, +]; + +const catalogMetaModels = [ + { id: 2, name: 'System Infrastructure Demo' }, + { id: 5, name: 'Vitruv CLI Model2' }, + { id: 4, name: 'Vitruv CLI Model' }, +]; + +const reactionsFile = new File(['reactions: x in reaction to changes in a execute actions in b'], 'x.reactions'); + +const waitForOptionsLoaded = async () => { + await waitFor(() => { + const [sourceSelect] = screen.getAllByRole('combobox'); + expect(sourceSelect.querySelectorAll('option').length).toBeGreaterThan(1); + }); +}; + +describe('LinkMetaModelsPanel', () => { + beforeEach(() => { + jest.clearAllMocks(); + apiService.findMetaModels.mockResolvedValue({ data: catalogMetaModels, message: null }); + }); + + it('renders existing relations resolved through sourceId, not the vsum-scoped clone id', () => { + render( + , + ); + + expect(screen.getByText('System Infrastructure Demo')).toBeInTheDocument(); + expect(screen.getByText('Vitruv CLI Model2')).toBeInTheDocument(); + expect(screen.getByText('reactions linked')).toBeInTheDocument(); + }); + + it('renders nothing extra when there are no existing relations', () => { + render( + , + ); + + expect(screen.queryByText('Meta Model Relations')).not.toBeInTheDocument(); + expect(screen.getByRole('button', { name: '+ Link Meta Models' })).toBeInTheDocument(); + }); + + it('opens the form and loads catalog meta models on demand', async () => { + render( + , + ); + + expect(apiService.findMetaModels).not.toHaveBeenCalled(); + + fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); + + await waitFor(() => expect(apiService.findMetaModels).toHaveBeenCalled()); + await waitForOptionsLoaded(); + }); + + it('shows a validation error when submitting without selecting both meta models', async () => { + render( + , + ); + + fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); + await waitForOptionsLoaded(); + + fireEvent.click(screen.getByRole('button', { name: 'Link' })); + + expect( + await screen.findByText('Please select both a source and a target meta model.'), + ).toBeInTheDocument(); + expect(apiService.uploadFile).not.toHaveBeenCalled(); + }); + + it('shows a validation error when source and target are the same meta model', async () => { + render( + , + ); + + fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); + await waitForOptionsLoaded(); + + const [sourceSelect, targetSelect] = screen.getAllByRole('combobox'); + fireEvent.change(sourceSelect, { target: { value: '4' } }); + fireEvent.change(targetSelect, { target: { value: '4' } }); + + fireEvent.click(screen.getByRole('button', { name: 'Link' })); + + expect( + await screen.findByText('Source and target meta models must be different.'), + ).toBeInTheDocument(); + expect(apiService.uploadFile).not.toHaveBeenCalled(); + }); + + it('uploads the reactions file and merges the new relation with the existing ones on submit', async () => { + apiService.uploadFile.mockResolvedValue({ data: { id: 99 }, message: 'ok' }); + apiService.syncVsumChanges.mockResolvedValue({ data: null, message: 'ok' }); + const onLinked = jest.fn(); + + render( + , + ); + + fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); + await waitForOptionsLoaded(); + + const [sourceSelect, targetSelect] = screen.getAllByRole('combobox'); + fireEvent.change(sourceSelect, { target: { value: '2' } }); + fireEvent.change(targetSelect, { target: { value: '4' } }); + + const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement; + fireEvent.change(fileInput, { target: { files: [reactionsFile] } }); + + fireEvent.click(screen.getByRole('button', { name: 'Link' })); + + await waitFor(() => expect(onLinked).toHaveBeenCalled()); + + expect(apiService.uploadFile).toHaveBeenCalledWith(reactionsFile, 'REACTION'); + expect(apiService.syncVsumChanges).toHaveBeenCalledWith(1, { + metaModelIds: [2, 5, 4], + metaModelRelationRequests: [ + { sourceId: 2, targetId: 5, reactionFileId: 35 }, + { sourceId: 2, targetId: 4, reactionFileId: 99 }, + ], + }); + }); + + it('surfaces an error and does not call onLinked when the sync request fails', async () => { + apiService.uploadFile.mockResolvedValue({ data: { id: 99 }, message: 'ok' }); + apiService.syncVsumChanges.mockRejectedValue(new Error('MetaModel Ids not found in this VSUM')); + const onLinked = jest.fn(); + + render( + , + ); + + fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); + await waitForOptionsLoaded(); + + const [sourceSelect, targetSelect] = screen.getAllByRole('combobox'); + fireEvent.change(sourceSelect, { target: { value: '2' } }); + fireEvent.change(targetSelect, { target: { value: '4' } }); + + const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement; + fireEvent.change(fileInput, { target: { files: [reactionsFile] } }); + + fireEvent.click(screen.getByRole('button', { name: 'Link' })); + + expect( + await screen.findByText('MetaModel Ids not found in this VSUM'), + ).toBeInTheDocument(); + expect(onLinked).not.toHaveBeenCalled(); + }); + + it('cancel hides the form and resets its state', async () => { + render( + , + ); + + fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); + await waitForOptionsLoaded(); + + fireEvent.click(screen.getByRole('button', { name: 'Cancel' })); + + expect(screen.queryByRole('button', { name: 'Link' })).not.toBeInTheDocument(); + expect(screen.getByRole('button', { name: '+ Link Meta Models' })).toBeInTheDocument(); + }); +}); From 3c48dfd514c11161a6212fadc1c1e15efe423d13 Mon Sep 17 00:00:00 2001 From: TsotneMikadze <85770343+TsotneMikadze@users.noreply.github.com> Date: Fri, 17 Jul 2026 23:07:59 +0200 Subject: [PATCH 27/60] Revert "Add UI to link meta models and a reaction file to a project" --- .../ui/LinkMetaModelsPanel.test.tsx | 255 -------------- src/components/ui/LinkMetaModelsPanel.tsx | 316 ------------------ src/components/ui/VsumDetailsModal.tsx | 45 +-- 3 files changed, 16 insertions(+), 600 deletions(-) delete mode 100644 src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx delete mode 100644 src/components/ui/LinkMetaModelsPanel.tsx diff --git a/src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx b/src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx deleted file mode 100644 index 4f50bc89..00000000 --- a/src/__tests__/components/ui/LinkMetaModelsPanel.test.tsx +++ /dev/null @@ -1,255 +0,0 @@ -import React from 'react'; -import { render, screen, fireEvent, waitFor } from '@testing-library/react'; -import { LinkMetaModelsPanel } from '../../../components/ui/LinkMetaModelsPanel'; -import { VsumMetaModelRef, VsumMetaModelRelation } from '../../../types'; - -jest.mock('../../../services/api', () => ({ - apiService: { - findMetaModels: jest.fn(), - uploadFile: jest.fn(), - syncVsumChanges: jest.fn(), - }, -})); - -const { apiService } = require('../../../services/api') as { - apiService: { - findMetaModels: jest.Mock; - uploadFile: jest.Mock; - syncVsumChanges: jest.Mock; - }; -}; - -const existingMetaModels: VsumMetaModelRef[] = [ - { - id: 101, - sourceId: 2, - name: 'System Infrastructure Demo', - description: '', - domain: 'Infrastructure', - keyword: [], - createdAt: '', - updatedAt: '', - ecoreFileId: 1, - genModelFileId: 2, - }, - { - id: 102, - sourceId: 5, - name: 'Vitruv CLI Model2', - description: '', - domain: 'Entities', - keyword: [], - createdAt: '', - updatedAt: '', - ecoreFileId: 3, - genModelFileId: 4, - }, -]; - -const existingRelations: VsumMetaModelRelation[] = [ - { id: 1, sourceId: 2, targetId: 5, reactionFileStorageId: 35 }, -]; - -const catalogMetaModels = [ - { id: 2, name: 'System Infrastructure Demo' }, - { id: 5, name: 'Vitruv CLI Model2' }, - { id: 4, name: 'Vitruv CLI Model' }, -]; - -const reactionsFile = new File(['reactions: x in reaction to changes in a execute actions in b'], 'x.reactions'); - -const waitForOptionsLoaded = async () => { - await waitFor(() => { - const [sourceSelect] = screen.getAllByRole('combobox'); - expect(sourceSelect.querySelectorAll('option').length).toBeGreaterThan(1); - }); -}; - -describe('LinkMetaModelsPanel', () => { - beforeEach(() => { - jest.clearAllMocks(); - apiService.findMetaModels.mockResolvedValue({ data: catalogMetaModels, message: null }); - }); - - it('renders existing relations resolved through sourceId, not the vsum-scoped clone id', () => { - render( - , - ); - - expect(screen.getByText('System Infrastructure Demo')).toBeInTheDocument(); - expect(screen.getByText('Vitruv CLI Model2')).toBeInTheDocument(); - expect(screen.getByText('reactions linked')).toBeInTheDocument(); - }); - - it('renders nothing extra when there are no existing relations', () => { - render( - , - ); - - expect(screen.queryByText('Meta Model Relations')).not.toBeInTheDocument(); - expect(screen.getByRole('button', { name: '+ Link Meta Models' })).toBeInTheDocument(); - }); - - it('opens the form and loads catalog meta models on demand', async () => { - render( - , - ); - - expect(apiService.findMetaModels).not.toHaveBeenCalled(); - - fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); - - await waitFor(() => expect(apiService.findMetaModels).toHaveBeenCalled()); - await waitForOptionsLoaded(); - }); - - it('shows a validation error when submitting without selecting both meta models', async () => { - render( - , - ); - - fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); - await waitForOptionsLoaded(); - - fireEvent.click(screen.getByRole('button', { name: 'Link' })); - - expect( - await screen.findByText('Please select both a source and a target meta model.'), - ).toBeInTheDocument(); - expect(apiService.uploadFile).not.toHaveBeenCalled(); - }); - - it('shows a validation error when source and target are the same meta model', async () => { - render( - , - ); - - fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); - await waitForOptionsLoaded(); - - const [sourceSelect, targetSelect] = screen.getAllByRole('combobox'); - fireEvent.change(sourceSelect, { target: { value: '4' } }); - fireEvent.change(targetSelect, { target: { value: '4' } }); - - fireEvent.click(screen.getByRole('button', { name: 'Link' })); - - expect( - await screen.findByText('Source and target meta models must be different.'), - ).toBeInTheDocument(); - expect(apiService.uploadFile).not.toHaveBeenCalled(); - }); - - it('uploads the reactions file and merges the new relation with the existing ones on submit', async () => { - apiService.uploadFile.mockResolvedValue({ data: { id: 99 }, message: 'ok' }); - apiService.syncVsumChanges.mockResolvedValue({ data: null, message: 'ok' }); - const onLinked = jest.fn(); - - render( - , - ); - - fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); - await waitForOptionsLoaded(); - - const [sourceSelect, targetSelect] = screen.getAllByRole('combobox'); - fireEvent.change(sourceSelect, { target: { value: '2' } }); - fireEvent.change(targetSelect, { target: { value: '4' } }); - - const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement; - fireEvent.change(fileInput, { target: { files: [reactionsFile] } }); - - fireEvent.click(screen.getByRole('button', { name: 'Link' })); - - await waitFor(() => expect(onLinked).toHaveBeenCalled()); - - expect(apiService.uploadFile).toHaveBeenCalledWith(reactionsFile, 'REACTION'); - expect(apiService.syncVsumChanges).toHaveBeenCalledWith(1, { - metaModelIds: [2, 5, 4], - metaModelRelationRequests: [ - { sourceId: 2, targetId: 5, reactionFileId: 35 }, - { sourceId: 2, targetId: 4, reactionFileId: 99 }, - ], - }); - }); - - it('surfaces an error and does not call onLinked when the sync request fails', async () => { - apiService.uploadFile.mockResolvedValue({ data: { id: 99 }, message: 'ok' }); - apiService.syncVsumChanges.mockRejectedValue(new Error('MetaModel Ids not found in this VSUM')); - const onLinked = jest.fn(); - - render( - , - ); - - fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); - await waitForOptionsLoaded(); - - const [sourceSelect, targetSelect] = screen.getAllByRole('combobox'); - fireEvent.change(sourceSelect, { target: { value: '2' } }); - fireEvent.change(targetSelect, { target: { value: '4' } }); - - const fileInput = document.querySelector('input[type="file"]') as HTMLInputElement; - fireEvent.change(fileInput, { target: { files: [reactionsFile] } }); - - fireEvent.click(screen.getByRole('button', { name: 'Link' })); - - expect( - await screen.findByText('MetaModel Ids not found in this VSUM'), - ).toBeInTheDocument(); - expect(onLinked).not.toHaveBeenCalled(); - }); - - it('cancel hides the form and resets its state', async () => { - render( - , - ); - - fireEvent.click(screen.getByRole('button', { name: '+ Link Meta Models' })); - await waitForOptionsLoaded(); - - fireEvent.click(screen.getByRole('button', { name: 'Cancel' })); - - expect(screen.queryByRole('button', { name: 'Link' })).not.toBeInTheDocument(); - expect(screen.getByRole('button', { name: '+ Link Meta Models' })).toBeInTheDocument(); - }); -}); diff --git a/src/components/ui/LinkMetaModelsPanel.tsx b/src/components/ui/LinkMetaModelsPanel.tsx deleted file mode 100644 index df11dfc3..00000000 --- a/src/components/ui/LinkMetaModelsPanel.tsx +++ /dev/null @@ -1,316 +0,0 @@ -import React, { useEffect, useRef, useState } from 'react'; -import { apiService } from '../../services/api'; -import { VsumMetaModelRef, VsumMetaModelRelation } from '../../types'; - -interface MetaModelOption { - id: number; - name: string; -} - -interface Props { - vsumId: number; - existingMetaModels: VsumMetaModelRef[]; - existingRelations: VsumMetaModelRelation[]; - onLinked: () => void; -} - -const sectionLabel: React.CSSProperties = { - fontSize: 13, - fontWeight: 700, - color: '#2c3e50', - marginTop: 16, - marginBottom: 8, - fontFamily: 'Georgia, serif', - letterSpacing: '0.01em', -}; - -const relationRow: React.CSSProperties = { - display: 'flex', - alignItems: 'center', - gap: 8, - padding: '8px 12px', - borderRadius: 8, - border: '1px solid #e9ecef', - background: '#f8f9fa', - fontSize: 13, - marginBottom: 6, -}; - -const addButton: React.CSSProperties = { - padding: '8px 16px', - borderRadius: 8, - border: '1px dashed #049484', - background: '#f0faf8', - color: '#049484', - fontWeight: 600, - fontSize: 13, - cursor: 'pointer', - fontFamily: 'Georgia, serif', -}; - -const formBox: React.CSSProperties = { - marginTop: 12, - padding: 16, - borderRadius: 10, - border: '2px dashed #049484', - background: '#f8fcff', -}; - -const selectStyle: React.CSSProperties = { - width: '100%', - padding: '10px 12px', - border: '2px solid #e9ecef', - borderRadius: 8, - fontSize: 14, - fontFamily: 'Georgia, serif', - background: '#fff', - marginBottom: 12, -}; - -const fileButton: React.CSSProperties = { - padding: '10px 14px', - border: '2px solid #049484', - borderRadius: 8, - background: '#fff', - color: '#2c3e50', - fontSize: 13, - fontWeight: 600, - cursor: 'pointer', - fontFamily: 'Georgia, serif', -}; - -export const LinkMetaModelsPanel: React.FC = ({ - vsumId, - existingMetaModels, - existingRelations, - onLinked, -}) => { - const [showForm, setShowForm] = useState(false); - const [options, setOptions] = useState([]); - const [optionsLoading, setOptionsLoading] = useState(false); - const [optionsError, setOptionsError] = useState(''); - const [sourceId, setSourceId] = useState(''); - const [targetId, setTargetId] = useState(''); - const [reactionFile, setReactionFile] = useState(null); - const [linking, setLinking] = useState(false); - const [linkError, setLinkError] = useState(''); - const fileInputRef = useRef(null); - - useEffect(() => { - if (!showForm) return; - let cancelled = false; - const load = async () => { - setOptionsLoading(true); - setOptionsError(''); - try { - const res = await apiService.findMetaModels({ pageSize: 200 }); - if (!cancelled) { - setOptions((res.data || []).map((m: any) => ({ id: m.id, name: m.name }))); - } - } catch (e: any) { - if (!cancelled) setOptionsError(e?.message || 'Failed to load meta models'); - } finally { - if (!cancelled) setOptionsLoading(false); - } - }; - load(); - return () => { - cancelled = true; - }; - }, [showForm]); - - // existingMetaModels[].id is the VSUM-scoped clone id created when the metamodel was linked - // (see VsumMetaModelService#create on the backend); relations and the catalog (findMetaModels, - // the select options below) all speak in terms of the original metamodel's id, exposed here as - // sourceId. Matching must go through sourceId, not id. - const nameFor = (id: number): string => - existingMetaModels.find((m) => m.sourceId === id)?.name ?? `#${id}`; - - const resetForm = () => { - setSourceId(''); - setTargetId(''); - setReactionFile(null); - setLinkError(''); - if (fileInputRef.current) fileInputRef.current.value = ''; - }; - - const handleLink = async () => { - if (!sourceId || !targetId) { - setLinkError('Please select both a source and a target meta model.'); - return; - } - if (sourceId === targetId) { - setLinkError('Source and target meta models must be different.'); - return; - } - if (!reactionFile) { - setLinkError('Please upload a .reactions file.'); - return; - } - - setLinking(true); - setLinkError(''); - try { - const uploadRes = await apiService.uploadFile(reactionFile, 'REACTION'); - const rawData: any = uploadRes.data; - const reactionFileId = - rawData && typeof rawData === 'object' && 'id' in rawData - ? Number(rawData.id) - : Number(rawData); - if (!Number.isFinite(reactionFileId)) { - throw new Error('Reaction file upload did not return a valid file id.'); - } - - // sync-changes expects catalog metamodel ids (the same ones the select options above use), - // not the VSUM-scoped clone ids in existingMetaModels[].id -- see the note on nameFor above. - const metaModelIds = Array.from( - new Set([...existingMetaModels.map((m) => m.sourceId), sourceId, targetId]) - ); - const metaModelRelationRequests = [ - ...existingRelations.map((r) => ({ - sourceId: r.sourceId, - targetId: r.targetId, - reactionFileId: (r.reactionFileId ?? r.reactionFileStorageId) as number, - })), - { sourceId, targetId, reactionFileId }, - ]; - - await apiService.syncVsumChanges(vsumId, { metaModelIds, metaModelRelationRequests }); - - resetForm(); - setShowForm(false); - onLinked(); - } catch (e: any) { - setLinkError(e?.response?.data?.message || e?.message || 'Failed to link meta models'); - } finally { - setLinking(false); - } - }; - - return ( -
- {existingRelations.length > 0 && ( - <> -
Meta Model Relations
- {existingRelations.map((r) => ( -
- {nameFor(r.sourceId)} - → - {nameFor(r.targetId)} - {(r.reactionFileId ?? r.reactionFileStorageId) && ( - - reactions linked - - )} -
- ))} - - )} - - {!showForm && ( - - )} - - {showForm && ( -
- {optionsLoading && ( -
- Loading meta models… -
- )} - {optionsError && ( -
{optionsError}
- )} - -
Source Meta Model
- - -
Target Meta Model
- - -
Reactions File
- setReactionFile(e.target.files?.[0] ?? null)} - /> - - - {linkError && ( -
{linkError}
- )} - -
- - -
-
- )} -
- ); -}; diff --git a/src/components/ui/VsumDetailsModal.tsx b/src/components/ui/VsumDetailsModal.tsx index c2ca299e..8e06e067 100644 --- a/src/components/ui/VsumDetailsModal.tsx +++ b/src/components/ui/VsumDetailsModal.tsx @@ -3,7 +3,6 @@ import ReactDOM from 'react-dom'; import { apiService } from '../../services/api'; import { VsumDetails } from '../../types'; import { VsumUsersTab } from './VsumUsersTab'; -import { LinkMetaModelsPanel } from './LinkMetaModelsPanel'; interface Props { isOpen: boolean; @@ -663,26 +662,23 @@ export const VsumDetailsModal: React.FC = ({ isOpen, vsumId, onClose, onS }; }, [isOpen]); - const reloadDetails = async () => { - if (!vsumId) return; - setLoading(true); - setError(''); - try { - const res = await apiService.getVsumDetails(vsumId); - const d = res.data; - setDetails(d); - setName(d.name ?? ''); - } catch (e: any) { - setError(e?.message || 'Failed to load details'); - } finally { - setLoading(false); - } - }; - useEffect(() => { if (!isOpen || !vsumId) return; - reloadDetails(); - // eslint-disable-next-line react-hooks/exhaustive-deps + const load = async () => { + setLoading(true); + setError(''); + try { + const res = await apiService.getVsumDetails(vsumId); + const d = res.data; + setDetails(d); + setName(d.name ?? ''); + } catch (e: any) { + setError(e?.message || 'Failed to load details'); + } finally { + setLoading(false); + } + }; + load(); }, [isOpen, vsumId]); useEffect(() => { @@ -796,19 +792,10 @@ export const VsumDetailsModal: React.FC = ({ isOpen, vsumId, onClose, onS ))} ) : ( -
+
No meta models linked.
)} - - {vsumId && ( - - )} ); }; From 795928fbb2fba90cf12aa6a65c3735d38cdd8ba0 Mon Sep 17 00:00:00 2001 From: Ahmed Hamouda <105105189+a77med-Ibrahim@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:23:37 +0200 Subject: [PATCH 28/60] Revert "376 add showhide password controls to the sign upsing in forms" --- package-lock.json | 10 --- package.json | 1 - src/__tests__/components/auth/SignIn.test.tsx | 37 ++--------- src/__tests__/components/auth/SignUp.test.tsx | 33 +--------- src/components/auth/Auth.css | 43 ------------ .../auth/PasswordVisibilityToggle.tsx | 39 ----------- src/components/auth/SignIn.tsx | 31 +++------ src/components/auth/SignUp.tsx | 65 +++++++------------ 8 files changed, 37 insertions(+), 222 deletions(-) delete mode 100644 src/components/auth/PasswordVisibilityToggle.tsx diff --git a/package-lock.json b/package-lock.json index 2ec8d323..6f99e7ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "@types/node": "^16.18.126", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", - "lucide-react": "^1.24.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.5.0", "react": "^19.1.0", @@ -12318,15 +12317,6 @@ "yallist": "^3.0.2" } }, - "node_modules/lucide-react": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.24.0.tgz", - "integrity": "sha512-YT6mBD8lGKkg4nM39enlm94/sfJIiW0YKUT60fBy4YK8tai31ylg1VhGNWxkpSKHo9UagfnZqwIff3HTDQwXeA==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/lz-string": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", diff --git a/package.json b/package.json index 1147fde7..d85c2e2a 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "@types/node": "^16.18.126", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", - "lucide-react": "^1.24.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.5.0", "react": "^19.1.0", diff --git a/src/__tests__/components/auth/SignIn.test.tsx b/src/__tests__/components/auth/SignIn.test.tsx index d88ed213..813fbeef 100644 --- a/src/__tests__/components/auth/SignIn.test.tsx +++ b/src/__tests__/components/auth/SignIn.test.tsx @@ -33,40 +33,10 @@ describe('SignIn component', () => { ); expect(screen.getByLabelText(/Username or Email/i)).toBeInTheDocument(); - expect(screen.getByLabelText(/^Password$/i)).toBeInTheDocument(); + expect(screen.getByLabelText(/Password/i)).toBeInTheDocument(); expect(screen.getByRole('button', { name: /Sign In/i })).toBeInTheDocument(); }); - it('toggles password visibility without changing the password value', async () => { - render( - , - ); - - const passwordInput = screen.getByLabelText(/^Password$/i); - await userEvent.type(passwordInput, 'password123!'); - - expect(passwordInput).toHaveAttribute('type', 'password'); - expect( - screen.getByRole('button', { name: 'Show password' }), - ).toBeInTheDocument(); - - await userEvent.click(screen.getByRole('button', { name: 'Show password' })); - - expect(passwordInput).toHaveAttribute('type', 'text'); - expect(passwordInput).toHaveValue('password123!'); - expect( - screen.getByRole('button', { name: 'Hide password' }), - ).toBeInTheDocument(); - - await userEvent.click(screen.getByRole('button', { name: 'Hide password' })); - - expect(passwordInput).toHaveAttribute('type', 'password'); - expect(passwordInput).toHaveValue('password123!'); - }); - it('shows validation error when submitting with empty fields', async () => { render( { screen.getByLabelText(/Username or Email/i), 'john@example.com', ); - await userEvent.type(screen.getByLabelText(/^Password$/i), 'password123!'); + await userEvent.type(screen.getByLabelText(/Password/i), 'password123!'); await userEvent.click(screen.getByRole('button', { name: /Sign In/i })); await waitFor(() => { @@ -124,7 +94,7 @@ describe('SignIn component', () => { screen.getByLabelText(/Username or Email/i), 'john@example.com', ); - await userEvent.type(screen.getByLabelText(/^Password$/i), 'wrong'); + await userEvent.type(screen.getByLabelText(/Password/i), 'wrong'); await userEvent.click(screen.getByRole('button', { name: /Sign In/i })); expect( @@ -175,3 +145,4 @@ describe('SignIn component', () => { }); }); }); + diff --git a/src/__tests__/components/auth/SignUp.test.tsx b/src/__tests__/components/auth/SignUp.test.tsx index d23fe8e6..a9e2e2f4 100644 --- a/src/__tests__/components/auth/SignUp.test.tsx +++ b/src/__tests__/components/auth/SignUp.test.tsx @@ -40,38 +40,6 @@ describe('SignUp component', () => { ).toBeInTheDocument(); }); - it('toggles sign-up password fields independently', async () => { - render( - , - ); - - const passwordInput = screen.getByLabelText(/^Password \*$/i); - const confirmPasswordInput = screen.getByLabelText(/^Confirm Password \*$/i); - - expect(passwordInput).toHaveAttribute('type', 'password'); - expect(confirmPasswordInput).toHaveAttribute('type', 'password'); - - await userEvent.click(screen.getByRole('button', { name: 'Show password' })); - - expect(passwordInput).toHaveAttribute('type', 'text'); - expect(confirmPasswordInput).toHaveAttribute('type', 'password'); - expect( - screen.getByRole('button', { name: 'Hide password' }), - ).toBeInTheDocument(); - - await userEvent.click( - screen.getByRole('button', { name: 'Show confirm password' }), - ); - - expect(confirmPasswordInput).toHaveAttribute('type', 'text'); - expect( - screen.getByRole('button', { name: 'Hide confirm password' }), - ).toBeInTheDocument(); - }); - it('shows validation error for too short first name', async () => { render( { expect(onSignUpSuccess).toHaveBeenCalled(); }); }); + diff --git a/src/components/auth/Auth.css b/src/components/auth/Auth.css index d1cfadb5..cd11cde1 100644 --- a/src/components/auth/Auth.css +++ b/src/components/auth/Auth.css @@ -118,45 +118,6 @@ font-weight: 400; } -.password-input-wrapper { - position: relative; -} - -.password-input-wrapper input { - padding-right: 3.5rem; -} - -.password-visibility-toggle { - position: absolute; - top: 50%; - right: 2px; - width: 44px; - height: 44px; - padding: 0; - border: none; - background: transparent; - color: #047857; - cursor: pointer; - display: inline-flex; - align-items: center; - justify-content: center; - transform: translateY(-50%); -} - -.password-visibility-toggle:hover:not(:disabled) { - color: #065f46; -} - -.password-visibility-toggle:focus-visible { - outline: 2px solid #06b5a0; - outline-offset: -2px; -} - -.password-visibility-toggle:disabled { - color: #64748b; - cursor: not-allowed; -} - .auth-button { width: 100%; padding: 14px; @@ -457,10 +418,6 @@ padding: 11px 13px; font-size: 14px; } - - .password-input-wrapper input { - padding-right: 3.25rem; - } .auth-button { padding: 13px; diff --git a/src/components/auth/PasswordVisibilityToggle.tsx b/src/components/auth/PasswordVisibilityToggle.tsx deleted file mode 100644 index d9417650..00000000 --- a/src/components/auth/PasswordVisibilityToggle.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import { Eye, EyeOff } from 'lucide-react'; - -interface PasswordVisibilityToggleProps { - inputId: string; - fieldLabel: string; - isVisible: boolean; - onToggle: () => void; - disabled?: boolean; -} - -export function PasswordVisibilityToggle({ - inputId, - fieldLabel, - isVisible, - onToggle, - disabled = false, -}: Readonly) { - const action = isVisible ? 'Hide' : 'Show'; - const accessibleLabel = `${action} ${fieldLabel}`; - - return ( - - ); -} diff --git a/src/components/auth/SignIn.tsx b/src/components/auth/SignIn.tsx index c22f6a8f..75ebdc78 100644 --- a/src/components/auth/SignIn.tsx +++ b/src/components/auth/SignIn.tsx @@ -2,7 +2,6 @@ import React, { useState } from 'react'; import { SignInCredentials } from '../../services/auth'; import { useAuth } from '../../contexts/AuthContext'; import { apiService } from '../../services/api'; -import { PasswordVisibilityToggle } from './PasswordVisibilityToggle'; import './Auth.css'; interface SignInProps { @@ -18,7 +17,6 @@ export function SignIn({ onSignInSuccess, onSwitchToSignUp }: Readonly(null); - const [isPasswordVisible, setIsPasswordVisible] = useState(false); // Forgot password states const [isForgotPasswordOpen, setIsForgotPasswordOpen] = useState(false); @@ -127,25 +125,16 @@ export function SignIn({ onSignInSuccess, onSwitchToSignUp }: Readonly -
- - setIsPasswordVisible(visible => !visible)} - disabled={isLoading} - /> -
+
(null); const [isSuccess, setIsSuccess] = useState(false); @@ -405,25 +402,16 @@ export function SignUp({ onSignUpSuccess, onSwitchToSignIn }: Readonly -
- - setIsPasswordVisible(visible => !visible)} + -
+ required + /> {/* PASSWORD STRENGTH METER + REQUIREMENTS */} {formData.password && ( @@ -472,28 +460,19 @@ export function SignUp({ onSignUpSuccess, onSwitchToSignIn }: Readonly -
- { - setConfirmPassword(e.target.value); - if (error) setError(null); - }} - placeholder="Confirm your password" - disabled={isLoading || isSuccess} - required - /> - setIsConfirmPasswordVisible(visible => !visible)} + { + setConfirmPassword(e.target.value); + if (error) setError(null); + }} + placeholder="Confirm your password" disabled={isLoading || isSuccess} - /> -
+ required + />
); -} +} \ No newline at end of file From 462fdf825ad3875575db4c5f9d51cf92b4ab4637 Mon Sep 17 00:00:00 2001 From: Max Oesterle Date: Mon, 3 Aug 2026 12:27:21 +0200 Subject: [PATCH 29/60] fixed the mini OCL coding window on canvas page, \n was no triggering charakter --- .claude/launch.json | 11 ----- src/components/flow/CodeEditorModal.tsx | 2 + src/hooks/useOclLsp.ts | 54 ++++++++++++++++++++----- tatus | 34 ++++++++++++++++ 4 files changed, 81 insertions(+), 20 deletions(-) delete mode 100644 .claude/launch.json create mode 100644 tatus diff --git a/.claude/launch.json b/.claude/launch.json deleted file mode 100644 index 801d186b..00000000 --- a/.claude/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.0.1", - "configurations": [ - { - "name": "vitruv-ui", - "runtimeExecutable": "npm", - "runtimeArgs": ["run", "start"], - "port": 3000 - } - ] -} diff --git a/src/components/flow/CodeEditorModal.tsx b/src/components/flow/CodeEditorModal.tsx index be3eba37..e7056de6 100644 --- a/src/components/flow/CodeEditorModal.tsx +++ b/src/components/flow/CodeEditorModal.tsx @@ -205,6 +205,8 @@ export function CodeEditorModal({ const doClose = () => { closeWebSocket(); + completionProviderRef.current?.dispose(); + completionProviderRef.current = null; setSaveErrorMessage(null); setSaveSuccess(false); pendingCloseRef.current = false; diff --git a/src/hooks/useOclLsp.ts b/src/hooks/useOclLsp.ts index 92379fca..9780af09 100644 --- a/src/hooks/useOclLsp.ts +++ b/src/hooks/useOclLsp.ts @@ -30,6 +30,9 @@ function resolveCompletionItems( position: monaco.Position, ): Promise { if (!ctx.initialized.current || ctx.wsRef.current?.readyState !== WebSocket.OPEN) { + console.warn( + `🧩 [mini] Completion skipped: initialized=${ctx.initialized.current} wsState=${ctx.wsRef.current?.readyState}` + ); return Promise.resolve({ suggestions: [] }); } return new Promise(resolve => { @@ -39,10 +42,21 @@ function resolveCompletionItems( startColumn: wordInfo.startColumn, endColumn: wordInfo.endColumn, }; const id = nextLspRequestId(); - const timeout = setTimeout(() => { ctx.pendingRequests.current.delete(id); resolve({ suggestions: [] }); }, 2000); - ctx.pendingRequests.current.set(id, msg => { clearTimeout(timeout); resolve(buildCompletionItems(msg, range, monacoInstance)); }); + const uri = ctx.getDocUri(); + const timeout = setTimeout(() => { + ctx.pendingRequests.current.delete(id); + console.warn(`🧩 [mini] Completion request ${id} timed out after 2s. uri=${uri}`); + resolve({ suggestions: [] }); + }, 2000); + ctx.pendingRequests.current.set(id, msg => { + clearTimeout(timeout); + const result = buildCompletionItems(msg, range, monacoInstance); + console.log(`🧩 [mini] Completion response for request ${id}:`, msg.result, '→', result.suggestions.length, 'suggestions'); + resolve(result); + }); + console.log(`🧩 [mini] Sending completion request ${id} for uri=${uri}`); ctx.sendLsp({ jsonrpc: '2.0', id, method: 'textDocument/completion', - params: { textDocument: { uri: ctx.getDocUri() }, position: { line: position.lineNumber - 1, character: position.column - 1 } } }); + params: { textDocument: { uri }, position: { line: position.lineNumber - 1, character: position.column - 1 }, context: { triggerKind: 1 } } }); }); } @@ -83,7 +97,7 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp const pendingRequests = useRef void>>(new Map()); const getDocUri = useCallback( - () => workspaceUri.current ? `${workspaceUri.current}ocl-${documentId}.ocl` : null, + () => workspaceUri.current ? `${workspaceUri.current}${documentId}.ocl` : null, [documentId] ); @@ -109,18 +123,23 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp }, [getDocUri, sendLsp]); const connect = useCallback((monacoInstance: Monaco) => { - if (!vsumId) return; + if (!vsumId) { console.error('❌ [mini] No vsumId available – aborting LSP connection'); return; } disconnect(); const rawUser = localStorage.getItem('auth.user'); const userId = rawUser ? JSON.parse(rawUser).id : null; - if (!userId) return; + if (!userId) { console.error('❌ [mini] No userId available – aborting LSP connection'); return; } const apiBase = process.env.REACT_APP_API_BASE_URL || 'http://localhost:9811'; const wsBase = apiBase.replace('https://', 'wss://').replace('http://', 'ws://'); - const ws = new WebSocket(`${wsBase}/ocl-lsp?userId=${encodeURIComponent(userId)}&vsumId=${encodeURIComponent(vsumId)}`); + const wsUrl = `${wsBase}/ocl-lsp?userId=${encodeURIComponent(userId)}&vsumId=${encodeURIComponent(vsumId)}`; + console.log('🔌 [mini] Connecting to LSP at:', wsUrl); + const ws = new WebSocket(wsUrl); wsRef.current = ws; + ws.onopen = () => console.log('✅ [mini] LSP WebSocket open:', wsUrl); + ws.onerror = (event) => console.error('💥 [mini] LSP WebSocket error for', wsUrl, event); + ws.onmessage = (event) => { try { const msg = JSON.parse(event.data); @@ -132,6 +151,7 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp } if (msg.type === 'workspaceReady') { + console.log('📁 [mini] workspaceReady received, rootUri:', msg.rootUri); workspaceUri.current = msg.rootUri; ws.send(JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize', @@ -139,13 +159,27 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp processId: null, rootUri: msg.rootUri, workspaceFolders: [{ uri: msg.rootUri, name: 'OclProject' }], - capabilities: { textDocument: { completion: { completionItem: { snippetSupport: true } }, publishDiagnostics: {} } }, + capabilities: { + textDocument: { + completion: { + completionItem: { snippetSupport: true, documentationFormat: ['markdown', 'plaintext'] }, + contextSupport: true, + }, + hover: { contentFormat: ['markdown', 'plaintext'] }, + signatureHelp: {}, + definition: {}, + references: {}, + documentSymbol: {}, + publishDiagnostics: {}, + }, + }, }, })); return; } if (msg.id === 1 && msg.result) { + console.log('🚀 [mini] LSP initialize response received, sending initialized + didOpen'); ws.send(JSON.stringify({ jsonrpc: '2.0', method: 'initialized', params: {} })); initialized.current = true; const uri = getDocUri(); @@ -154,6 +188,8 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp jsonrpc: '2.0', method: 'textDocument/didOpen', params: { textDocument: { uri, languageId, version: 1, text: getCode() } }, })); + } else { + console.error('❌ [mini] getDocUri() returned null at didOpen time'); } return; } @@ -179,7 +215,7 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp // Register completion provider (dispose old one first) completionDisposable.current?.dispose(); completionDisposable.current = monacoInstance.languages.registerCompletionItemProvider(languageId, { - triggerCharacters: ['.', ' ', ':'], + triggerCharacters: ['.', ' ', ':', '\n'], provideCompletionItems: (model, position) => resolveCompletionItems(monacoInstance, { initialized, wsRef, pendingRequests, sendLsp, getDocUri }, model, position), }); diff --git a/tatus b/tatus new file mode 100644 index 00000000..311cdb31 --- /dev/null +++ b/tatus @@ -0,0 +1,34 @@ + add-arrow-to-reaction-relation + adding-tests + backup-language-server-uptodate + circle-uml-bug + connect-metamodels-together-with-suitable-tools + connect-reaction-to-backend + develop + display_error_message_better + enhancement/new-user-interface + feature/new-frontend + fix-code-editor-window + fix-lsp-connection-nginx + fix-severity-bug-in-constraint-view +* fix/ocl-lsp-completion-uri-debug + fix_video_background + fix_visual_bugs + homepage_and_more_fixes + language-server-uptodate + lsp-cleanup-improvements + main + move-arrow-line-by-hand + neoJoin-language-server-test + reaction-language-Server + reactions-relations-in-both-directions + refactoring-frontend + render-VSUM-ellipse-overlay-243 + rework-coding-window-for-lsp-integration + solve_some_issues2 + test-web-changes + try_to_fix_metamodel_uploading + utils-and-hooks-test + viewtype-hover-creation + vitruvOCL + workspace-just-show-a-metamodel From b6e2132cb934aedad14c8e8605a1943bb971c562 Mon Sep 17 00:00:00 2001 From: Max Oesterle Date: Mon, 3 Aug 2026 12:35:52 +0200 Subject: [PATCH 30/60] deleted unused log statement --- src/hooks/useOclLsp.ts | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/src/hooks/useOclLsp.ts b/src/hooks/useOclLsp.ts index 9780af09..b24b4070 100644 --- a/src/hooks/useOclLsp.ts +++ b/src/hooks/useOclLsp.ts @@ -30,9 +30,6 @@ function resolveCompletionItems( position: monaco.Position, ): Promise { if (!ctx.initialized.current || ctx.wsRef.current?.readyState !== WebSocket.OPEN) { - console.warn( - `🧩 [mini] Completion skipped: initialized=${ctx.initialized.current} wsState=${ctx.wsRef.current?.readyState}` - ); return Promise.resolve({ suggestions: [] }); } return new Promise(resolve => { @@ -45,16 +42,12 @@ function resolveCompletionItems( const uri = ctx.getDocUri(); const timeout = setTimeout(() => { ctx.pendingRequests.current.delete(id); - console.warn(`🧩 [mini] Completion request ${id} timed out after 2s. uri=${uri}`); resolve({ suggestions: [] }); }, 2000); ctx.pendingRequests.current.set(id, msg => { clearTimeout(timeout); - const result = buildCompletionItems(msg, range, monacoInstance); - console.log(`🧩 [mini] Completion response for request ${id}:`, msg.result, '→', result.suggestions.length, 'suggestions'); - resolve(result); + resolve(buildCompletionItems(msg, range, monacoInstance)); }); - console.log(`🧩 [mini] Sending completion request ${id} for uri=${uri}`); ctx.sendLsp({ jsonrpc: '2.0', id, method: 'textDocument/completion', params: { textDocument: { uri }, position: { line: position.lineNumber - 1, character: position.column - 1 }, context: { triggerKind: 1 } } }); }); @@ -123,23 +116,18 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp }, [getDocUri, sendLsp]); const connect = useCallback((monacoInstance: Monaco) => { - if (!vsumId) { console.error('❌ [mini] No vsumId available – aborting LSP connection'); return; } + if (!vsumId) return; disconnect(); const rawUser = localStorage.getItem('auth.user'); const userId = rawUser ? JSON.parse(rawUser).id : null; - if (!userId) { console.error('❌ [mini] No userId available – aborting LSP connection'); return; } + if (!userId) return; const apiBase = process.env.REACT_APP_API_BASE_URL || 'http://localhost:9811'; const wsBase = apiBase.replace('https://', 'wss://').replace('http://', 'ws://'); - const wsUrl = `${wsBase}/ocl-lsp?userId=${encodeURIComponent(userId)}&vsumId=${encodeURIComponent(vsumId)}`; - console.log('🔌 [mini] Connecting to LSP at:', wsUrl); - const ws = new WebSocket(wsUrl); + const ws = new WebSocket(`${wsBase}/ocl-lsp?userId=${encodeURIComponent(userId)}&vsumId=${encodeURIComponent(vsumId)}`); wsRef.current = ws; - ws.onopen = () => console.log('✅ [mini] LSP WebSocket open:', wsUrl); - ws.onerror = (event) => console.error('💥 [mini] LSP WebSocket error for', wsUrl, event); - ws.onmessage = (event) => { try { const msg = JSON.parse(event.data); @@ -151,7 +139,6 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp } if (msg.type === 'workspaceReady') { - console.log('📁 [mini] workspaceReady received, rootUri:', msg.rootUri); workspaceUri.current = msg.rootUri; ws.send(JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize', @@ -179,7 +166,6 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp } if (msg.id === 1 && msg.result) { - console.log('🚀 [mini] LSP initialize response received, sending initialized + didOpen'); ws.send(JSON.stringify({ jsonrpc: '2.0', method: 'initialized', params: {} })); initialized.current = true; const uri = getDocUri(); @@ -188,8 +174,6 @@ export function useOclLsp({ vsumId, documentId, languageId, getCode }: UseOclLsp jsonrpc: '2.0', method: 'textDocument/didOpen', params: { textDocument: { uri, languageId, version: 1, text: getCode() } }, })); - } else { - console.error('❌ [mini] getDocUri() returned null at didOpen time'); } return; } From 4e15762ef7ffe331a4a34d63bf61e6ce68896e42 Mon Sep 17 00:00:00 2001 From: Arne Lange <118437561+arlange@users.noreply.github.com> Date: Wed, 26 Aug 2026 13:38:26 +0200 Subject: [PATCH 31/60] Configure SonarCloud to disable TypeScript analysis Add argument to disable TypeScript for SonarCloud scan --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76ab802f..91e7e661 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,3 +70,7 @@ jobs: uses: SonarSource/sonarqube-scan-action@v8 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.javascript.internal.js.ts.disabled=true + From 80aba674401d2053923b02a44e6087201bcda209 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Aug 2026 11:41:24 +0000 Subject: [PATCH 32/60] Bump lodash from 4.17.21 to 4.18.1 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.18.1. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.18.1) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.18.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94576207..d7635f11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12803,9 +12803,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash-es": { From d0943881caefb5647c0ef10b9c2af0339f802eca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 08:55:07 +0000 Subject: [PATCH 33/60] Bump websocket-driver from 0.7.4 to 0.7.5 Bumps [websocket-driver](https://github.com/faye/websocket-driver-node) from 0.7.4 to 0.7.5. - [Changelog](https://github.com/faye/websocket-driver-node/blob/main/CHANGELOG.md) - [Commits](https://github.com/faye/websocket-driver-node/compare/0.7.4...0.7.5) --- updated-dependencies: - dependency-name: websocket-driver dependency-version: 0.7.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94576207..3b77ee8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18951,9 +18951,9 @@ } }, "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.5.tgz", + "integrity": "sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==", "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", From 3036531492c82c7aa8d798f1ff4028b866ca7ce3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 09:03:39 +0000 Subject: [PATCH 34/60] Bump flatted from 3.3.3 to 3.4.4 Bumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.4. - [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.4) --- updated-dependencies: - dependency-name: flatted dependency-version: 3.4.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3738f930..6818e54b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9719,9 +9719,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", "license": "ISC" }, "node_modules/follow-redirects": { From f47f4ed14247eafb95998ebd8180f52b69ee7235 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 09:17:43 +0000 Subject: [PATCH 35/60] Bump form-data from 3.0.4 to 3.0.5 Bumps [form-data](https://github.com/form-data/form-data) from 3.0.4 to 3.0.5. - [Changelog](https://github.com/form-data/form-data/blob/master/CHANGELOG.md) - [Commits](https://github.com/form-data/form-data/compare/v3.0.4...v3.0.5) --- updated-dependencies: - dependency-name: form-data dependency-version: 3.0.5 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6818e54b..a702877b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9885,15 +9885,15 @@ } }, "node_modules/form-data": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", - "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.5.tgz", + "integrity": "sha512-j23EibVLnp4zNXGW7LjryXYa2X6U/M96yoOX+ybZxwkYajdxRNEqYY3zhh7y0i6kfISKS2jr+EJq1YTUDEv5+w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", + "hasown": "^2.0.4", "mime-types": "^2.1.35" }, "engines": { @@ -10369,9 +10369,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" From 96b1030979ba780c2cdf9613190ff65e2b4f6350 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 09:23:49 +0000 Subject: [PATCH 36/60] Bump @babel/plugin-transform-modules-systemjs from 7.27.1 to 7.29.8 Bumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.27.1 to 7.29.8. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.29.8/packages/babel-plugin-transform-modules-systemjs) --- updated-dependencies: - dependency-name: "@babel/plugin-transform-modules-systemjs" dependency-version: 7.29.8 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 126 +++++++++++++++++++++++----------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index a702877b..01488806 100644 --- a/package-lock.json +++ b/package-lock.json @@ -84,12 +84,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -182,13 +182,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -307,9 +307,9 @@ } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -329,27 +329,27 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -371,9 +371,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -427,18 +427,18 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -481,12 +481,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.0" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -1385,15 +1385,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.8" }, "engines": { "node": ">=6.9.0" @@ -2077,31 +2077,31 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -2109,13 +2109,13 @@ } }, "node_modules/@babel/types": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", - "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" From 8db959bb1d2dda0e4fd0a158139f05fb14af6785 Mon Sep 17 00:00:00 2001 From: Arne Lange <118437561+arlange@users.noreply.github.com> Date: Thu, 27 Aug 2026 11:32:15 +0200 Subject: [PATCH 37/60] Add SonarQube project key and organization to CI --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75c0b03e..afc575b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,5 +72,7 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} with: args: > + -Dsonar.projectKey=vitruv-tools_Vitruv-UI-Methodologist + -Dsonar.organization=vitruv-tools -Dsonar.javascript.internal.js.ts.disabled=true From 28de5650f4ff325c43887f28dacba6e12f262079 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 09:43:20 +0000 Subject: [PATCH 38/60] Bump node-forge from 1.3.1 to 1.4.0 Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.3.1 to 1.4.0. - [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md) - [Commits](https://github.com/digitalbazaar/forge/compare/v1.3.1...v1.4.0) --- updated-dependencies: - dependency-name: node-forge dependency-version: 1.4.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b217330..96d890f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13597,9 +13597,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" From fcdf0b6916d72cd241a98b1f49a4f01a9c1217a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 10:27:02 +0000 Subject: [PATCH 39/60] Bump shell-quote from 1.8.4 to 1.10.0 Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.4 to 1.10.0. - [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.4...v1.10.0) --- updated-dependencies: - dependency-name: shell-quote dependency-version: 1.10.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 96d890f6..5fe3e3e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17089,9 +17089,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz", - "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz", + "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==", "license": "MIT", "engines": { "node": ">= 0.4" From 818ae81e5c5ead60f2d21014c7d0680b19d8cb5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Aug 2026 10:28:42 +0000 Subject: [PATCH 40/60] Bump @remix-run/router and react-router-dom Bumps [@remix-run/router](https://github.com/remix-run/react-router/tree/HEAD/packages/router) to 1.23.4 and updates ancestor dependency [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom). These dependencies need to be updated together. Updates `@remix-run/router` from 1.23.0 to 1.23.4 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/@remix-run/router@1.23.4/packages/router/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/@remix-run/router@1.23.4/packages/router) Updates `react-router-dom` from 6.30.1 to 6.30.6 - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@6.30.6/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.30.6/packages/react-router-dom) --- updated-dependencies: - dependency-name: "@remix-run/router" dependency-version: 1.23.4 dependency-type: indirect - dependency-name: react-router-dom dependency-version: 6.30.6 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 26 +++++++++++++------------- package.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 96d890f6..db5e6953 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "^19.1.0", - "react-router-dom": "6.30.1", + "react-router-dom": "6.30.6", "react-scripts": "5.0.1", "reactflow": "^11.11.4", "typescript": "^4.9.5", @@ -3752,9 +3752,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", - "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", + "version": "1.23.4", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.4.tgz", + "integrity": "sha512-q7j5geK7xs3UJSdm9/iytUNclBnLmYx1EnSeCFXHPeutdqgIMeFeHtUZgS3EhlKxdBEAu8OwtJCwmLrEzpSs7Q==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -16027,12 +16027,12 @@ } }, "node_modules/react-router": { - "version": "6.30.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", - "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", + "version": "6.30.6", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.6.tgz", + "integrity": "sha512-5HfK7k5im7LTOB0EqCQmfvy4C13G92Ssj1VTmouTK3AJvyjKTnFuCV0vcMAD/JS+JC4DvDIBRrlAeJIFjh5VWg==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.0" + "@remix-run/router": "1.23.4" }, "engines": { "node": ">=14.0.0" @@ -16042,13 +16042,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.30.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", - "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", + "version": "6.30.6", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.6.tgz", + "integrity": "sha512-0RHKZz7wwffvkU+2MFVT2NnjK44ssLEV+m0CAJaS2Ksmorrwj7WxH00jO0SOCW26/tINUnJHToXblDs33I38YQ==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.23.0", - "react-router": "6.30.1" + "@remix-run/router": "1.23.4", + "react-router": "6.30.6" }, "engines": { "node": ">=14.0.0" diff --git a/package.json b/package.json index dfc82cdd..95417f21 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "^19.1.0", - "react-router-dom": "6.30.1", + "react-router-dom": "6.30.6", "react-scripts": "5.0.1", "reactflow": "^11.11.4", "typescript": "^4.9.5", From 7d8f83cf352a1334533b50eac8168e06ff86cf40 Mon Sep 17 00:00:00 2001 From: Arne Lange <118437561+arlange@users.noreply.github.com> Date: Fri, 11 Sep 2026 09:29:39 +0200 Subject: [PATCH 41/60] Add CODEOWNERS file for repository maintainers --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000..b9772318 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @vitruv-tools/maintainers From a3620acc0bfaf0a1a2a437350761e4847caf6f8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 11:27:26 +0000 Subject: [PATCH 42/60] Bump brace-expansion from 1.1.12 to 1.1.18 Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.18. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.18) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.18 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2bf61137..81c7816a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6472,9 +6472,9 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -9854,9 +9854,9 @@ } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -17709,9 +17709,9 @@ } }, "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -18764,9 +18764,9 @@ } }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" From f0269a2a396e298d55d4d083629e356ef0c4c235 Mon Sep 17 00:00:00 2001 From: Arne Lange <118437561+arlange@users.noreply.github.com> Date: Thu, 17 Sep 2026 08:59:36 +0200 Subject: [PATCH 43/60] Update CI workflow with manual and scheduled triggers Added workflow dispatch and scheduled jobs to CI configuration. --- .github/workflows/ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ca24e2f..ac4d66c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,11 +6,16 @@ on: branches: - main - develop + # manually + workflow_dispatch: pull_request: branches: - main - develop - workflow_dispatch: + # nightly + schedule: + - cron: "0 2 * * *" + jobs: build-and-test: @@ -53,6 +58,9 @@ jobs: name: SonarCloud Analysis runs-on: ubuntu-latest needs: build-and-test + if: github.event_name == 'schedule' || (github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]') + strategy: + fail-fast: true steps: - name: Checkout repository uses: actions/checkout@v7 From 669c48b43e58007f25549907c602325c515eb402 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 18:05:57 +0000 Subject: [PATCH 44/60] Bump @types/node from 16.18.126 to 26.6.1 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 16.18.126 to 26.6.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 26.6.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 19 ++++++++++++++----- package.json | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81c7816a..02728b02 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^30.0.0", - "@types/node": "^16.18.126", + "@types/node": "^26.6.1", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "mermaid": "^11.15.0", @@ -4918,10 +4918,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "16.18.126", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", - "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", - "license": "MIT" + "version": "26.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.1.tgz", + "integrity": "sha512-VqGJBMCtdhqkBUCcBLvywI0NJ+KLuVzgNnlBUNFOQjqVxzo2lxLUNg1DSey8+u2u6ktswSAxg+s68QLzWHNOuA==", + "license": "MIT", + "dependencies": { + "undici-types": "~8.9.0" + } }, "node_modules/@types/node-forge": { "version": "1.3.12", @@ -18511,6 +18514,12 @@ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "license": "MIT" }, + "node_modules/undici-types": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", + "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", diff --git a/package.json b/package.json index 95417f21..19a07d23 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^30.0.0", - "@types/node": "^16.18.126", + "@types/node": "^26.6.1", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "mermaid": "^11.15.0", From 85a0e010def43c49f9e3c7b4d3a8fca1770f28b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 18:06:38 +0000 Subject: [PATCH 45/60] Bump @testing-library/dom from 10.4.0 to 10.4.2 Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 10.4.0 to 10.4.2. - [Release notes](https://github.com/testing-library/dom-testing-library/releases) - [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/dom-testing-library/compare/v10.4.0...v10.4.2) --- updated-dependencies: - dependency-name: "@testing-library/dom" dependency-version: 10.4.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81c7816a..dc56c725 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "dependencies": { "@monaco-editor/react": "^4.7.0", - "@testing-library/dom": "^10.4.0", + "@testing-library/dom": "^10.4.2", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", @@ -4109,18 +4109,18 @@ } }, "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.2.tgz", + "integrity": "sha512-yzr2S9HyAIdhz2/6qHgbs665Q7PKVcDF05vsOlHPxG1mo36gKVesdYVeDLnXgfjJ03CrKRk08knc6+E/9m8v2Q==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", - "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { diff --git a/package.json b/package.json index 95417f21..d5c3abdc 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@monaco-editor/react": "^4.7.0", - "@testing-library/dom": "^10.4.0", + "@testing-library/dom": "^10.4.2", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^13.5.0", From 4a55fb8a3d790a043f6a259304674a300c9df452 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Sep 2026 18:04:43 +0000 Subject: [PATCH 46/60] Bump mermaid from 11.15.0 to 12.0.0 Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 11.15.0 to 12.0.0. - [Release notes](https://github.com/mermaid-js/mermaid/releases) - [Commits](https://github.com/mermaid-js/mermaid/compare/mermaid@11.15.0...mermaid@12.0.0) --- updated-dependencies: - dependency-name: mermaid dependency-version: 12.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 128 ++++++++++++++++++++++++++++++++++++++-------- package.json | 2 +- 2 files changed, 109 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 137d0bed..f02c275b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@types/node": "^26.6.1", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", - "mermaid": "^11.15.0", + "mermaid": "^12.0.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.5.0", "react": "^19.1.0", @@ -2133,12 +2133,57 @@ "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", "license": "MIT" }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", + "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.1.2", + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/cst-dts-gen/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/@chevrotain/gast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", + "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/gast/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", + "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", + "license": "Apache-2.0" + }, "node_modules/@chevrotain/types": { "version": "11.1.2", "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", "license": "Apache-2.0" }, + "node_modules/@chevrotain/utils": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", + "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "license": "Apache-2.0" + }, "node_modules/@codingame/monaco-vscode-api": { "version": "24.3.0", "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-24.3.0.tgz", @@ -3476,12 +3521,15 @@ "license": "MIT" }, "node_modules/@mermaid-js/parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.1.1.tgz", - "integrity": "sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.0.tgz", + "integrity": "sha512-K8BeapFUfrfxbRAUQAG5oBOCwo1+bNWzaVnPxTCutkfrTBn6T/j91FIhqxWJ32SUeQ9T3iy1zcmPZ5ROZEvDrg==", "license": "MIT", "dependencies": { - "@chevrotain/types": "~11.1.1" + "@chevrotain/types": "~11.1.2" + }, + "engines": { + "node": ">=22.12.0" } }, "node_modules/@monaco-editor/loader": { @@ -6729,6 +6777,26 @@ "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", "license": "MIT" }, + "node_modules/chevrotain": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", + "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.1.2", + "@chevrotain/gast": "11.1.2", + "@chevrotain/regexp-to-ast": "11.1.2", + "@chevrotain/types": "11.1.2", + "@chevrotain/utils": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/chevrotain/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -7579,9 +7647,9 @@ "license": "MIT" }, "node_modules/cytoscape": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.3.tgz", - "integrity": "sha512-Gej7U+OKR+LZ8kvX7rb2HhCYJ0IhvEFsnkud4SB1PR+BUY/TsSO0dmOW59WEVLu51b1Rm+gQRKoz4bLYxGSZ2g==", + "version": "3.34.3", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.34.3.tgz", + "integrity": "sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==", "license": "MIT", "engines": { "node": ">=0.10" @@ -8158,9 +8226,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", - "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "version": "1.11.23", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.23.tgz", + "integrity": "sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==", "license": "MIT" }, "node_modules/debug": { @@ -8602,6 +8670,12 @@ "integrity": "sha512-+ISMj8OIQ+0qEeDj14Rt8WwcTOiqHyAB+5bnK1K7xNNLjBJ4hRCQfUkw8RWtcLbfBzDwc15ZnKH0c7SNOfwiyA==", "license": "ISC" }, + "node_modules/elkjs": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", + "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", + "license": "EPL-2.0" + }, "node_modules/emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -13255,32 +13329,46 @@ } }, "node_modules/mermaid": { - "version": "11.15.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.15.0.tgz", - "integrity": "sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-12.0.0.tgz", + "integrity": "sha512-/wQXC9iBxoGV8p3erbvaXs9h77VyLDBH6GdayVjj3hEcSQhFU4N1WUhUppotCEqlIxI2pRMwjwBSwTB1MfZBgQ==", "license": "MIT", "dependencies": { - "@braintree/sanitize-url": "^7.1.1", + "@braintree/sanitize-url": "^7.1.2", "@iconify/utils": "^3.0.2", - "@mermaid-js/parser": "^1.1.1", + "@mermaid-js/parser": "^2.0.0", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", - "cytoscape": "^3.33.1", + "chevrotain": "~11.1.2", + "cytoscape": "^3.34.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", - "dayjs": "^1.11.19", - "dompurify": "^3.3.1", + "dayjs": "^1.11.21", + "dompurify": "^3.4.12", + "elkjs": "^0.9.3", "es-toolkit": "^1.45.1", - "katex": "^0.16.25", + "katex": "^0.16.47", "khroma": "^2.1.0", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/mermaid/node_modules/dompurify": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.15.tgz", + "integrity": "sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" } }, "node_modules/mermaid/node_modules/marked": { diff --git a/package.json b/package.json index 7f865528..1c3b12a8 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@types/node": "^26.6.1", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", - "mermaid": "^11.15.0", + "mermaid": "^12.0.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.5.0", "react": "^19.1.0", From d9170bcfa3f9f1cc1c95d00a62d83968e4425f5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Sep 2026 18:04:55 +0000 Subject: [PATCH 47/60] Bump monaco-languageclient from 10.5.0 to 10.7.0 Bumps [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient/tree/HEAD/packages/client) from 10.5.0 to 10.7.0. - [Changelog](https://github.com/TypeFox/monaco-languageclient/blob/main/packages/client/CHANGELOG.md) - [Commits](https://github.com/TypeFox/monaco-languageclient/commits/mlc-10.7.0/packages/client) --- updated-dependencies: - dependency-name: monaco-languageclient dependency-version: 10.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 488 ++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 238 insertions(+), 252 deletions(-) diff --git a/package-lock.json b/package-lock.json index 137d0bed..4836a357 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@types/react-dom": "^19.1.6", "mermaid": "^11.15.0", "monaco-editor": "^0.55.1", - "monaco-languageclient": "^10.5.0", + "monaco-languageclient": "^10.7.0", "react": "^19.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", @@ -2140,18 +2140,18 @@ "license": "Apache-2.0" }, "node_modules/@codingame/monaco-vscode-api": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-24.3.0.tgz", - "integrity": "sha512-9FWZsr5HDh/hLQ3E1KtsfCiURzf5k5q3xWwOGojryal+qDmkGtuqkDP14Nf4OykAYki5ZuTwZ5TyxIfrI2bfqQ==", - "license": "MIT", - "dependencies": { - "@codingame/monaco-vscode-base-service-override": "24.3.0", - "@codingame/monaco-vscode-environment-service-override": "24.3.0", - "@codingame/monaco-vscode-extensions-service-override": "24.3.0", - "@codingame/monaco-vscode-files-service-override": "24.3.0", - "@codingame/monaco-vscode-host-service-override": "24.3.0", - "@codingame/monaco-vscode-layout-service-override": "24.3.0", - "@codingame/monaco-vscode-quickaccess-service-override": "24.3.0", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-25.1.2.tgz", + "integrity": "sha512-K04QcQA+Zb0KXucBAK/BGCT5dldiwIqdUbBQq7yuLvBLbof3cP1WSUuxasMHGYwM0MWyzIAsDtyAYMS7is8ZuA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-base-service-override": "25.1.2", + "@codingame/monaco-vscode-environment-service-override": "25.1.2", + "@codingame/monaco-vscode-extensions-service-override": "25.1.2", + "@codingame/monaco-vscode-files-service-override": "25.1.2", + "@codingame/monaco-vscode-host-service-override": "25.1.2", + "@codingame/monaco-vscode-layout-service-override": "25.1.2", + "@codingame/monaco-vscode-quickaccess-service-override": "25.1.2", "@vscode/iconv-lite-umd": "0.7.1", "dompurify": "3.3.1", "jschardet": "3.1.4", @@ -2159,393 +2159,391 @@ } }, "node_modules/@codingame/monaco-vscode-base-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-base-service-override/-/monaco-vscode-base-service-override-24.3.0.tgz", - "integrity": "sha512-xBPslzTyOq+wRurZhRwzhK3VMpv/0swqEKFGgC9N4qDgH57T/5EHko96ZCg9i7A6DIBNXZ+RxM0c9U2YWES0JA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-base-service-override/-/monaco-vscode-base-service-override-25.1.2.tgz", + "integrity": "sha512-OwYs6h1ATUAeMmX+Q1c8esTG7GLMqniBs+fLEr1/9b/ciY485ArKo5UvrUxVPDtRNy/7F06vRW9IUCq9iKP14w==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-bulk-edit-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-bulk-edit-service-override/-/monaco-vscode-bulk-edit-service-override-24.3.0.tgz", - "integrity": "sha512-0NZH2vZDQC0csPQtoLDf6VUErBMEYnr4tepM1fvSq4KDLGGsMo5D0RdY3C4jG5qHk+Bm5yZtB4KwwkTjPF3oQw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-bulk-edit-service-override/-/monaco-vscode-bulk-edit-service-override-25.1.2.tgz", + "integrity": "sha512-+EfSzjiFakCf0IIJKPZrHVGioq5N8GBsp51bXuKBR5J/B58cUaJY0Dc12PNTSpgAusAGOppUIOSBqUk4F/7IaQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-configuration-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-configuration-service-override/-/monaco-vscode-configuration-service-override-24.3.0.tgz", - "integrity": "sha512-AB5FcygqtjEOPzBRbvxrYnIKzKLAy1F2Fo/iF7wV7n4+bgCv8Qtx3IJuJR5zdkgQ6vVo0hW5FKHebcpMqBV+OQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-configuration-service-override/-/monaco-vscode-configuration-service-override-25.1.2.tgz", + "integrity": "sha512-oeoZ3WtM42zHA1IWHrx9UGEfE+TixE+G8Bl9M9bjgFj1EROnkB5yOfELwRYPo4WOEtcK1C5nvIvWIj/hL9MaLg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-files-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-files-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-editor-api": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-api/-/monaco-vscode-editor-api-24.3.0.tgz", - "integrity": "sha512-W+jguLUI4exsIRe8iQ3i+SNhHsCgO9NvY0zFsxOhTiMhAADK7hEehd0CLnKbfoZt8XEbr/XQ0S3wISRFlQQlOQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-api/-/monaco-vscode-editor-api-25.1.2.tgz", + "integrity": "sha512-dVXoBLRN8vyFHsLY6iYISaNetZ3ispXLut0qL+jvN0e0CEFkUv1F/3EAE7myptrJSS/N1AptrRIxATT3lwFP+Q==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-editor-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-service-override/-/monaco-vscode-editor-service-override-24.3.0.tgz", - "integrity": "sha512-loBoJMUqjKUv0PTMGFsINYfu01PeulUq00MKy6Gu7+Jdox3FrUNzQm25VvbWPFLLyQI6/v0VDkjgzoz39YfTQQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-service-override/-/monaco-vscode-editor-service-override-25.1.2.tgz", + "integrity": "sha512-EadvDCyWdgxOPmaIvbcVVDNjTUYuKdjYWwKbPbbcTs9t4z1/DjdE7mV3ZdT6aGh5m6zkEEUOi143l27Y5eRt+Q==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-environment-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-environment-service-override/-/monaco-vscode-environment-service-override-24.3.0.tgz", - "integrity": "sha512-wyfzk/ciIpFQw87TCLYe6grTRFTtK8YNJC/8vrQ40sJ5/hz3R36hr9wBFhA7V/DVnAiUhASJQeEWwJFmUzl9nw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-environment-service-override/-/monaco-vscode-environment-service-override-25.1.2.tgz", + "integrity": "sha512-8GoD3lk0CN0dIMZOrZNS/i8RCaF1YSQ6nmrf+rqneOSHG9S382EnsZZD69d4+i7JnoeyttO7Kr9KH8WOhRV6OA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-extension-api": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extension-api/-/monaco-vscode-extension-api-24.3.0.tgz", - "integrity": "sha512-RykrxXwwngF7xR0dtiUhqRTKqLOnDwCKvcLvh7lLIYT1CertvzhRojoyAX/klR1z3klInLL6ycrQJ88Ykd3w+A==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extension-api/-/monaco-vscode-extension-api-25.1.2.tgz", + "integrity": "sha512-SJW/YOhjo+9MXEyzMwQMUWdJVR3Llc6pTq5JQqs6Y30v73gTrpLqtzbd9FNdCuQR8S6bUk5ScH8GL4QrVuL5FA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-extensions-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-extensions-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-extensions-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extensions-service-override/-/monaco-vscode-extensions-service-override-24.3.0.tgz", - "integrity": "sha512-kzrpvI1cOEKRZLjAuG9unmoqZGEKwTSFn7S1AIbnAXt20wdOPNCSgSYwKQ5zMHAXVmr0+AMymUnNh6bdD+HOuA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extensions-service-override/-/monaco-vscode-extensions-service-override-25.1.2.tgz", + "integrity": "sha512-rTTZW2biPxcg+JumhVf2L+38C5ptvNNxiJlwz39VfXFEh6qOHtAsIMy7vIXa0uGg5/y8DNp0SnOQJP/RKhLYZA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-files-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-files-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-files-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-files-service-override/-/monaco-vscode-files-service-override-24.3.0.tgz", - "integrity": "sha512-+tSghOY4HSJBdR6S/xlO4bcavzjSOSyqlzBVq8dzVbheOhA6dGs7OP9DKpb+BaKHUlDtOx2t2LBvWpMg9QA5LA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-files-service-override/-/monaco-vscode-files-service-override-25.1.2.tgz", + "integrity": "sha512-TenLLAFIwY7keZFF8e3beUn7OVfnNINR5Noi4PVrjeeTcy6FuNH6Jghdul2JwpRAkvyJLdFMvomE2jlT6F03jQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-host-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-host-service-override/-/monaco-vscode-host-service-override-24.3.0.tgz", - "integrity": "sha512-kOzAGwtkPAUAkTT02fUnkeaXspsTqoRqJFAHSBkgVN7aJk0+DMpmpQWntb1GgxlHKff0qaGz3Fla2WDmmYnWTw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-host-service-override/-/monaco-vscode-host-service-override-25.1.2.tgz", + "integrity": "sha512-lgaalpA9CUQW7i0bBwgBOK0DQNDvOo3QO3p6Rz6yVsHpgA4iMqq2d11dBDUKvuQSwIHPRu8CMHCqhQk/BQN/YA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-keybindings-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-keybindings-service-override/-/monaco-vscode-keybindings-service-override-24.3.0.tgz", - "integrity": "sha512-QPBn92XQCMnRw8R9WZrOSbp6y4IGT34J26mZjPO8EscehBXKfr6joxUphHFTcjOVnY8bXBuF38BcKCu/QbK/mg==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-keybindings-service-override/-/monaco-vscode-keybindings-service-override-25.1.2.tgz", + "integrity": "sha512-cp/gGyTvCTAzCYnQm0HJykXJRB0Huz8Lvq60lj5LutgWcb8S3w6dOB2Houm8dHoeUm/jOko8SQNIP8hzWN92Zw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-files-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-files-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-cs": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-cs/-/monaco-vscode-language-pack-cs-24.3.0.tgz", - "integrity": "sha512-l1xSq6qKVVXVRzw1i5d99O1W7c5mW6pApIJXWnliXlFSDPcWoCeWtQTiFzbbJBZJut1bE0YmArjtrXCeXcnYyA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-cs/-/monaco-vscode-language-pack-cs-25.1.2.tgz", + "integrity": "sha512-v0cB2uAOCwj135aGIf0arGV+DNW32lbWh04bv8ctTxcWRt1Pr2kTQ1pjfE8ynKgxabPfAk8E25/CerKSYOmZ+A==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-de": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-de/-/monaco-vscode-language-pack-de-24.3.0.tgz", - "integrity": "sha512-ZXBK3byQyIdJu9iXjeMBhA+neMuEwd4ineQ+Gxsx1EYib/P3jC38SxUNuuzZAXWnUwBD/7pkLVVIgd25r3a84g==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-de/-/monaco-vscode-language-pack-de-25.1.2.tgz", + "integrity": "sha512-xA3WOt1w5jlAOnyx4PBwx+qV3vx8C8/zie29qjYbgJMxGKDkb0HfpuKUwywDA2uUMI2wJZS+PnNG00zPDoLIrw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-es": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-es/-/monaco-vscode-language-pack-es-24.3.0.tgz", - "integrity": "sha512-5m70g/VwIOSr0BZhpyW8JTtIdD5AZZoEjUvE8FPImMR/VlN2/p5+nxnYnXnIQQgDCOM9OWczP/jGa0B9vNBL9g==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-es/-/monaco-vscode-language-pack-es-25.1.2.tgz", + "integrity": "sha512-1/upuO9lRJilZ3sRr0QLTpz55KYRaBWDe8wtPvghOFYOHyWgW8A4VhUQxa6L9SJgY1JkypUAm0U8WcMX2G4LnQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-fr": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-fr/-/monaco-vscode-language-pack-fr-24.3.0.tgz", - "integrity": "sha512-bgFE9dxiD6Gqd2i+nUw6LudWZk25th9PtmS3WkSeSrGNm7Gtc6vXgKQkQUXx+tUiQFjqpAQg5pBRLBcnKh6UNA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-fr/-/monaco-vscode-language-pack-fr-25.1.2.tgz", + "integrity": "sha512-iq+xx+tv1QIMmFD0eBhFRMF4xMAsVf/HyA1WogqBofteCWeAvRE9HUjZ5JzHz7jXBPe3dLP1LOM0r0GrJZs4fQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-it": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-it/-/monaco-vscode-language-pack-it-24.3.0.tgz", - "integrity": "sha512-rafY2uwHXRgMHP0Rje7eubJzi2DPwTGI1JeP5GTRUCENWSjQ/O+UdglZBjqEEr2/crEBAcMZcprGMnOHd2T8AA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-it/-/monaco-vscode-language-pack-it-25.1.2.tgz", + "integrity": "sha512-FajWCML9OR8ppLnJ0mcg+sFHEhYJl8zhb3/DHnd+pNysw8dLfetXoSWjaPnwPPpwiQgkNN1UsToZHOU9czVifQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-ja": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ja/-/monaco-vscode-language-pack-ja-24.3.0.tgz", - "integrity": "sha512-84kB22nV+EwiLBadPumQpg1F6QlRH2JVtuVzFPVdxx4ibp9968CUChu5SqWYpYxdLUTqBKtWs13lEczjyxoXzw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ja/-/monaco-vscode-language-pack-ja-25.1.2.tgz", + "integrity": "sha512-NwKh0BnPgUrJkxsm0X6vY4ftnd9DjxkcnQqK+bohta6UOzm09J1EjZ6QD42fjWngxrp/xiegtrYQ9NA2q6VpoA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-ko": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ko/-/monaco-vscode-language-pack-ko-24.3.0.tgz", - "integrity": "sha512-5dKA4yanQKY1d1xkdjfF8t322VRLDXJ/3Pw+5BVyVPlYFIcU8qCDo/52Bu3kf6Rby5B6VWZz1d/aabQCnlz9ZA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ko/-/monaco-vscode-language-pack-ko-25.1.2.tgz", + "integrity": "sha512-fvaisgfcg8YaAwnyPcGmQDLwkwqzamLQUyx9HmnwDpXw0YANzd058Kwn6bz+Vfn9MjwuMNT0nllD0qQMnpdyew==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-pl": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pl/-/monaco-vscode-language-pack-pl-24.3.0.tgz", - "integrity": "sha512-r70/eBKdxvBjxtmM3U+Y2u/SgMubUfw7t5ys0Tt88moJLeVrAjwghc14wp0OWoIkjhal7o5xbZzIh+ZizDRlKg==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pl/-/monaco-vscode-language-pack-pl-25.1.2.tgz", + "integrity": "sha512-9hDRyzFJkDia5rO9QE262JgxwP/cnalFisLFo7FQcw57ZhqzqXIdQIuwcKaHuAgzeQ6W2+A3KOLfTr3m7VZrXw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-pt-br": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pt-br/-/monaco-vscode-language-pack-pt-br-24.3.0.tgz", - "integrity": "sha512-A/P44wWdafWoTiVkttJslrrdugBwRZRaemykKhEznXGbL0yyRv9vkjVcpS7YdQOSjOMe4bMG+GTRJ+1gFs2aeQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-pt-br/-/monaco-vscode-language-pack-pt-br-25.1.2.tgz", + "integrity": "sha512-7fFnqOTAJGb5RuJ4uwh9sh0JmXALuHPGOl7iL9rZkcgIuVP5y6wVDUDXq5qjiRTNSFDs7Bzh463Ir5m5D6mJbA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-qps-ploc": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-qps-ploc/-/monaco-vscode-language-pack-qps-ploc-24.3.0.tgz", - "integrity": "sha512-KwLZqXdM+gu4HF3wWltAHdQ+jeYOhf7GkFqJ5mnEMWya3HTEMkOiG0b8xzBTPi9s9ZP+pbCaO5eNC7iwbGCLhw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-qps-ploc/-/monaco-vscode-language-pack-qps-ploc-25.1.2.tgz", + "integrity": "sha512-IFjoqrSuPtIFWb+KlPT6PFWKszzNX+TCD9drgCV6AigvBO/xfGL3QwHB68l/DLbmDbohOz4Xdkutv20wuENAeA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-ru": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ru/-/monaco-vscode-language-pack-ru-24.3.0.tgz", - "integrity": "sha512-A5khhV/JgHGRWcKXkLLdSWIcD+8sEnbaG97yIc4FUff9XBUVYv6D+IDmocgudiX6jCCC/AhintMnJjh3Ifc7nw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-ru/-/monaco-vscode-language-pack-ru-25.1.2.tgz", + "integrity": "sha512-0uDAeXO+GllKUPhJzP893rlDhlFV1IwCu/515rBdcyegt48iGm/xAgj26V90hNz8hmB6EuM/7d8MFeklbiIpYA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-tr": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-tr/-/monaco-vscode-language-pack-tr-24.3.0.tgz", - "integrity": "sha512-ZeZgy3BDOWDU319mj8g42YfG6L08rM1INSo0VzAS+3x+tHQXDaZC9BKjSg0nSQJapr0FNiVRIBAqFP/eYWaX2g==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-tr/-/monaco-vscode-language-pack-tr-25.1.2.tgz", + "integrity": "sha512-MJhHxDyJEiuVLQ9+jb8MnnN9lsbJOjJjMswVCeJ7v/Q/msAhq25QYUfn0DbOIzESJE1f7crffRb5e38XP8sYWA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-zh-hans": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hans/-/monaco-vscode-language-pack-zh-hans-24.3.0.tgz", - "integrity": "sha512-NZZJE0pOUQaii0FS+jRlxfB4tXp0aQWxdZRd1e+jLmLf6O0bex1FxE8V2QqoAM4iMa2/6ynIiN7bAP2K5965tQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hans/-/monaco-vscode-language-pack-zh-hans-25.1.2.tgz", + "integrity": "sha512-c7MMrhnSLb59NxpAa8nVy9aIbxy4gVYrCpDMq8W380LOaXTYb7nueTrw8QJ5QbJBNi2P2KZoGkn2BlONuBtJJg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-language-pack-zh-hant": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hant/-/monaco-vscode-language-pack-zh-hant-24.3.0.tgz", - "integrity": "sha512-lAWrrymQyih/iln+rWPwx4QMt87XKE3Qz9xzmAfJR/ysXAbboJXmIRKhkWaG3ZEXdrYtO844J8IDiq/nsFGibg==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-language-pack-zh-hant/-/monaco-vscode-language-pack-zh-hant-25.1.2.tgz", + "integrity": "sha512-ARedFTM6JCluoPLJqkBcTJaQFdJNcN86OX6B8/NMApIPrnSIAfanMndpyilt8XjzUG6IH22cypR+DAlEjf48cA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-languages-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-languages-service-override/-/monaco-vscode-languages-service-override-24.3.0.tgz", - "integrity": "sha512-yixGNCRPJwACiBCfDlcHIlzF6/XypsZhuJ0Bs7zTEt5ksq4TJIe8HAT79246me5xqhfuing5vYuIKYwCKrayGQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-languages-service-override/-/monaco-vscode-languages-service-override-25.1.2.tgz", + "integrity": "sha512-ipuS1V3NgXDkNrj0vBcgMBFnqo+19HVsZjjFGfPFH3x0uptP9aiWWK42wtDK3Qbu4teSjHL7WnSLrmw94rplWw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-files-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-files-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-layout-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-layout-service-override/-/monaco-vscode-layout-service-override-24.3.0.tgz", - "integrity": "sha512-fTapVvu7tgxcfS/Fou1ukVpPDtrLM+DtH1smDU+KZmq3hsyw7eupvetmgYREqjHuEpni+KVEHtFotj31PqJwfg==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-layout-service-override/-/monaco-vscode-layout-service-override-25.1.2.tgz", + "integrity": "sha512-SxBGcMK3RgkGtUn7ZDl7dCoyNW0CWFQ/bfSRYUY06A0IA4JNS5jq1lhof57d0WXewm+5l8w1Spr/vMsfx1c9ig==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-localization-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-localization-service-override/-/monaco-vscode-localization-service-override-24.3.0.tgz", - "integrity": "sha512-oxKdItcYZTgBTKkp0C1NkXNClQ5NZtAedxprbgxDDO814kc66kjXClOEfK978IRpPCn65pkK1RWwhbwopjeTPQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-localization-service-override/-/monaco-vscode-localization-service-override-25.1.2.tgz", + "integrity": "sha512-QLj62A8XDOIQW3KjsZlNxs+sfsNNHYxWMjQMwZu/y2Vw3IIHGly2Lpn4t4SFbeaBHJQJy4i5s7NpzlbF9MbEzQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-log-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-log-service-override/-/monaco-vscode-log-service-override-24.3.0.tgz", - "integrity": "sha512-KkALZd3gjvDuvs9O+YDIxAdbwgVCIqB+UTioQ9gnhjGFXer/+I3z2KHWYG97BrRqYTaEhSqCZnXTM2RyOZK3lA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-log-service-override/-/monaco-vscode-log-service-override-25.1.2.tgz", + "integrity": "sha512-OoileAUtPAJ0j3RW31DFSxtOipy0EcFq+iIXEdGvoRlsQPZJ3o9ayjf1JvCXpxUjJ3QkmvQVhXsWNUFREjEFLg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-environment-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-environment-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-model-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-model-service-override/-/monaco-vscode-model-service-override-24.3.0.tgz", - "integrity": "sha512-pauLEX5zgBZxaQk0308zf0KwOEWUGfr6bGzmzSvlKIhqA2tKiyrf01mhyuzHVQ860peEPZSUFoUgiwjEqu4hnQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-model-service-override/-/monaco-vscode-model-service-override-25.1.2.tgz", + "integrity": "sha512-MGz/eV1CxibLvnl6WzK6idUHJCXJOVepJvKM6Trkv5050vRe+f/o1TjCiG8PaznAypYqZvnwkTG0B7/OTizCpQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-monarch-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-monarch-service-override/-/monaco-vscode-monarch-service-override-24.3.0.tgz", - "integrity": "sha512-5XQI+3AJgyDfTGzj09ACO5lOE+mBAhwuthCdhX3O9v2egWGP784l6z2Y+eWFMett5dpe3+mbLTd4ZlbJq/fhaw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-monarch-service-override/-/monaco-vscode-monarch-service-override-25.1.2.tgz", + "integrity": "sha512-akyNHOJQRS7YHyk6kf0Encnkt+shlR+bIB84UJRUHFgSeF8s5gkDkQuFJph0YeUDWJWat+yBLUSZx2nHomdbHQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-quickaccess-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-quickaccess-service-override/-/monaco-vscode-quickaccess-service-override-24.3.0.tgz", - "integrity": "sha512-TbgF3gmoW+Rp0UENVUBvNMKrnIH+7nKqVdJrNaredHkF/3jul2pSZLRYoXgRfeyxQNWgzeb1jTNbPmwGLS0dvA==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-quickaccess-service-override/-/monaco-vscode-quickaccess-service-override-25.1.2.tgz", + "integrity": "sha512-7IIrXnwHiF3w9d9p9kspEUz/LCibMLUztmRpGdZQfFtWBJw043q7rk8V1O42KdXr1hVg9IR5vfffwjy9nbiiUg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-textmate-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-textmate-service-override/-/monaco-vscode-textmate-service-override-24.3.0.tgz", - "integrity": "sha512-wIi1LxjCy9JFrKeHmgYbpPg9zg9ySAiQhSPLE9dKeHjcRICQkCKcHj1jCD+McAsJYrVMC+w9FqFEBQQrDeYESQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-textmate-service-override/-/monaco-vscode-textmate-service-override-25.1.2.tgz", + "integrity": "sha512-AL0FtSQBW+1vtoXYQvUqB2hfWojpK73Kq/n6KuNXxjLF/XBJ5FpeeZDfrBfwhWPPoHuBTsaFUCQy4L8xQgbVlA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-files-service-override": "24.3.0", - "vscode-oniguruma": "1.7.0", - "vscode-textmate": "9.2.1" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-files-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-theme-defaults-default-extension": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-defaults-default-extension/-/monaco-vscode-theme-defaults-default-extension-24.3.0.tgz", - "integrity": "sha512-L9zFIpBLvUEKMdr7ze0u6oodNFlKy6sHnvhBGqDisSsrII2Uq8OAhkof6bi8a9rZh/2Ytre3iV7wiWS/mVjjKw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-defaults-default-extension/-/monaco-vscode-theme-defaults-default-extension-25.1.2.tgz", + "integrity": "sha512-0vTMFiC89YSDSmjFckuQBUKwRuFNtsILNO3k0PBiSLN/MW+VDItjJpiVLXC42+rUWlGgY2lYxOneGVa5slCV1w==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-theme-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-service-override/-/monaco-vscode-theme-service-override-24.3.0.tgz", - "integrity": "sha512-jmKWOha76dqi5xkbSwfM6zlhz9gprGolm8FfstpUBOXmBJhmlH/0SEs9Eh9bX/Iwy7g4QO9Kv29eFUDZATi5Tw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-theme-service-override/-/monaco-vscode-theme-service-override-25.1.2.tgz", + "integrity": "sha512-hsTwl6YYTiheFuQMmCmiEGLIdIdgYaf8Z85XWyxe6YgPtDaYGnp0fGSOXKA9/bf0JtuynzoLKtUUfDupK/A7Tw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-files-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-files-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-view-banner-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-banner-service-override/-/monaco-vscode-view-banner-service-override-24.3.0.tgz", - "integrity": "sha512-8kWRqaghmSWGrddZAQ1u90KLriThOxL+e1w5GG/H4MlIuMdEShDzD/VK5smPkmbSRgPVZaaDRAakiYSUTkjIAw==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-banner-service-override/-/monaco-vscode-view-banner-service-override-25.1.2.tgz", + "integrity": "sha512-zhujHd1PQ6rRXsC2OQGrx/282G2v3lpPFl9heDFGKzpdj5119SgcW+B9p/MwJ1qF3LJpuRRgefNiQtqC/KT1eA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-view-common-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-common-service-override/-/monaco-vscode-view-common-service-override-24.3.0.tgz", - "integrity": "sha512-pVdqTBTajkXcB1xw+KciILfeRkKDQsEiiZV7abA1ND6awbQMcrmlDE+csEcyO6pHcPalWZw3AD9scNqWab5OQg==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-common-service-override/-/monaco-vscode-view-common-service-override-25.1.2.tgz", + "integrity": "sha512-4Po/YaHUvVf4VmhVCZmM2lc/flOptiWSM140bIRNpMcfH0VwihYg15CcDeu1Oc+6DaauzsG3u59GtEvlMmJ9Zw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-bulk-edit-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-bulk-edit-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-view-status-bar-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-status-bar-service-override/-/monaco-vscode-view-status-bar-service-override-24.3.0.tgz", - "integrity": "sha512-fr9xOSHMjza01rT7vDpARq5iWA2gMdQwIUFZNsEytnVHOvbgNsLeLzb5cdlIw2swyA6aM4CMGnn6qm5+/eZ3lQ==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-status-bar-service-override/-/monaco-vscode-view-status-bar-service-override-25.1.2.tgz", + "integrity": "sha512-Jp9ytLaWZ6evabTPtG3Mu3dFx+7WTIPz69BsGpl9PnU0kiSWUqQhPSob0Jz7E2qmMj0ZcNv2Wqvm6bMBu5OyrA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-view-title-bar-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-title-bar-service-override/-/monaco-vscode-view-title-bar-service-override-24.3.0.tgz", - "integrity": "sha512-6ldfOX516hGG/mNjqXYXpa/0eWW9XZh0aytQDKyqa/7FSfVE/yCsrH4fycZmRwOkA3sbYGP4agX9IbNi7bel0Q==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-view-title-bar-service-override/-/monaco-vscode-view-title-bar-service-override-25.1.2.tgz", + "integrity": "sha512-NVYtTAFR35NV/Fx7tSlbASicvpAjK5A14fmxF7/LJJN8ZmzhA/P3Y+UzhqOQl6/VcPV4pAMU0Z7Sicgwbn37dw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-views-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-views-service-override/-/monaco-vscode-views-service-override-24.3.0.tgz", - "integrity": "sha512-PlJGhq5BL4KG4NrQ4KdqawicdfQS7Ne3blK8mptYOZ9j7RDV71EE4La5OSYVxT0r2+vZMRCLgzKm0eYgTG2E8g==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-views-service-override/-/monaco-vscode-views-service-override-25.1.2.tgz", + "integrity": "sha512-LfzlztsvobdP5L5EvJ/rqSEgy5fEVmrkMqRteuhEtNGd4hnmdBoX8W7BNMBPff6d4NfCK74pGHJF57RyT4Iixg==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-keybindings-service-override": "24.3.0", - "@codingame/monaco-vscode-layout-service-override": "24.3.0", - "@codingame/monaco-vscode-quickaccess-service-override": "24.3.0", - "@codingame/monaco-vscode-view-common-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-keybindings-service-override": "25.1.2", + "@codingame/monaco-vscode-layout-service-override": "25.1.2", + "@codingame/monaco-vscode-quickaccess-service-override": "25.1.2", + "@codingame/monaco-vscode-view-common-service-override": "25.1.2" } }, "node_modules/@codingame/monaco-vscode-workbench-service-override": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-workbench-service-override/-/monaco-vscode-workbench-service-override-24.3.0.tgz", - "integrity": "sha512-azz4CUtYy5indpkSp/tzrhCST2/UYPwnYE1A32i5EwppTbyR3Y11etAqirzcZUKBBTVkIpzby9tBFqxAE8ILVg==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-workbench-service-override/-/monaco-vscode-workbench-service-override-25.1.2.tgz", + "integrity": "sha512-2LMHr+na03FhOAaXpIGmamq9hf7e4wt2kULn8NqNZRd3i+0v1tx/TSSjGhsA5EkrNrFD7CMSoXayBq8tgpCq/A==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-keybindings-service-override": "24.3.0", - "@codingame/monaco-vscode-quickaccess-service-override": "24.3.0", - "@codingame/monaco-vscode-view-banner-service-override": "24.3.0", - "@codingame/monaco-vscode-view-common-service-override": "24.3.0", - "@codingame/monaco-vscode-view-status-bar-service-override": "24.3.0", - "@codingame/monaco-vscode-view-title-bar-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-keybindings-service-override": "25.1.2", + "@codingame/monaco-vscode-quickaccess-service-override": "25.1.2", + "@codingame/monaco-vscode-view-banner-service-override": "25.1.2", + "@codingame/monaco-vscode-view-common-service-override": "25.1.2", + "@codingame/monaco-vscode-view-status-bar-service-override": "25.1.2", + "@codingame/monaco-vscode-view-title-bar-service-override": "25.1.2" } }, "node_modules/@csstools/normalize.css": { @@ -13469,42 +13467,42 @@ } }, "node_modules/monaco-languageclient": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/monaco-languageclient/-/monaco-languageclient-10.5.0.tgz", - "integrity": "sha512-stKCyDc/Nw4aZ2oP1M+7fye+rFi8PB0rciWzqJq5qFaDJnj9GQMCyE2oVeo1BqGy5v2p2G/gYkt8v00kuXvZkQ==", - "license": "MIT", - "dependencies": { - "@codingame/monaco-vscode-api": "^24.2.0", - "@codingame/monaco-vscode-configuration-service-override": "^24.2.0", - "@codingame/monaco-vscode-editor-api": "^24.2.0", - "@codingame/monaco-vscode-editor-service-override": "^24.2.0", - "@codingame/monaco-vscode-extension-api": "^24.2.0", - "@codingame/monaco-vscode-extensions-service-override": "^24.2.0", - "@codingame/monaco-vscode-language-pack-cs": "^24.2.0", - "@codingame/monaco-vscode-language-pack-de": "^24.2.0", - "@codingame/monaco-vscode-language-pack-es": "^24.2.0", - "@codingame/monaco-vscode-language-pack-fr": "^24.2.0", - "@codingame/monaco-vscode-language-pack-it": "^24.2.0", - "@codingame/monaco-vscode-language-pack-ja": "^24.2.0", - "@codingame/monaco-vscode-language-pack-ko": "^24.2.0", - "@codingame/monaco-vscode-language-pack-pl": "^24.2.0", - "@codingame/monaco-vscode-language-pack-pt-br": "^24.2.0", - "@codingame/monaco-vscode-language-pack-qps-ploc": "^24.2.0", - "@codingame/monaco-vscode-language-pack-ru": "^24.2.0", - "@codingame/monaco-vscode-language-pack-tr": "^24.2.0", - "@codingame/monaco-vscode-language-pack-zh-hans": "^24.2.0", - "@codingame/monaco-vscode-language-pack-zh-hant": "^24.2.0", - "@codingame/monaco-vscode-languages-service-override": "^24.2.0", - "@codingame/monaco-vscode-localization-service-override": "^24.2.0", - "@codingame/monaco-vscode-log-service-override": "^24.2.0", - "@codingame/monaco-vscode-model-service-override": "^24.2.0", - "@codingame/monaco-vscode-monarch-service-override": "^24.2.0", - "@codingame/monaco-vscode-textmate-service-override": "^24.2.0", - "@codingame/monaco-vscode-theme-defaults-default-extension": "^24.2.0", - "@codingame/monaco-vscode-theme-service-override": "^24.2.0", - "@codingame/monaco-vscode-views-service-override": "^24.2.0", - "@codingame/monaco-vscode-workbench-service-override": "^24.2.0", - "vscode": "npm:@codingame/monaco-vscode-extension-api@^24.2.0", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/monaco-languageclient/-/monaco-languageclient-10.7.0.tgz", + "integrity": "sha512-oA5cOFixkF4bspVL2zMSn48LvlNR/Cu3vJ8MCVam3PdjobSULGgHtOASuZIi3FgWK42X1z8/6hrG0LCjvNu1Hw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "^25.1.2", + "@codingame/monaco-vscode-configuration-service-override": "^25.1.2", + "@codingame/monaco-vscode-editor-api": "^25.1.2", + "@codingame/monaco-vscode-editor-service-override": "^25.1.2", + "@codingame/monaco-vscode-extension-api": "^25.1.2", + "@codingame/monaco-vscode-extensions-service-override": "^25.1.2", + "@codingame/monaco-vscode-language-pack-cs": "^25.1.2", + "@codingame/monaco-vscode-language-pack-de": "^25.1.2", + "@codingame/monaco-vscode-language-pack-es": "^25.1.2", + "@codingame/monaco-vscode-language-pack-fr": "^25.1.2", + "@codingame/monaco-vscode-language-pack-it": "^25.1.2", + "@codingame/monaco-vscode-language-pack-ja": "^25.1.2", + "@codingame/monaco-vscode-language-pack-ko": "^25.1.2", + "@codingame/monaco-vscode-language-pack-pl": "^25.1.2", + "@codingame/monaco-vscode-language-pack-pt-br": "^25.1.2", + "@codingame/monaco-vscode-language-pack-qps-ploc": "^25.1.2", + "@codingame/monaco-vscode-language-pack-ru": "^25.1.2", + "@codingame/monaco-vscode-language-pack-tr": "^25.1.2", + "@codingame/monaco-vscode-language-pack-zh-hans": "^25.1.2", + "@codingame/monaco-vscode-language-pack-zh-hant": "^25.1.2", + "@codingame/monaco-vscode-languages-service-override": "^25.1.2", + "@codingame/monaco-vscode-localization-service-override": "^25.1.2", + "@codingame/monaco-vscode-log-service-override": "^25.1.2", + "@codingame/monaco-vscode-model-service-override": "^25.1.2", + "@codingame/monaco-vscode-monarch-service-override": "^25.1.2", + "@codingame/monaco-vscode-textmate-service-override": "^25.1.2", + "@codingame/monaco-vscode-theme-defaults-default-extension": "^25.1.2", + "@codingame/monaco-vscode-theme-service-override": "^25.1.2", + "@codingame/monaco-vscode-views-service-override": "^25.1.2", + "@codingame/monaco-vscode-workbench-service-override": "^25.1.2", + "vscode": "npm:@codingame/monaco-vscode-extension-api@^25.1.2", "vscode-languageclient": "~9.0.1", "vscode-languageserver-protocol": "~3.17.5", "vscode-ws-jsonrpc": "~3.5.0" @@ -18740,13 +18738,13 @@ }, "node_modules/vscode": { "name": "@codingame/monaco-vscode-extension-api", - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extension-api/-/monaco-vscode-extension-api-24.3.0.tgz", - "integrity": "sha512-RykrxXwwngF7xR0dtiUhqRTKqLOnDwCKvcLvh7lLIYT1CertvzhRojoyAX/klR1z3klInLL6ycrQJ88Ykd3w+A==", + "version": "25.1.2", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extension-api/-/monaco-vscode-extension-api-25.1.2.tgz", + "integrity": "sha512-SJW/YOhjo+9MXEyzMwQMUWdJVR3Llc6pTq5JQqs6Y30v73gTrpLqtzbd9FNdCuQR8S6bUk5ScH8GL4QrVuL5FA==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-api": "24.3.0", - "@codingame/monaco-vscode-extensions-service-override": "24.3.0" + "@codingame/monaco-vscode-api": "25.1.2", + "@codingame/monaco-vscode-extensions-service-override": "25.1.2" } }, "node_modules/vscode-jsonrpc": { @@ -18821,18 +18819,6 @@ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", "license": "MIT" }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "license": "MIT" - }, - "node_modules/vscode-textmate": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.2.1.tgz", - "integrity": "sha512-eXiUi2yYFv9bdvgrYtJynA7UemCEkpVNE50S9iBBA08LYG5t9+/TB+8IRS/YoYOubCez2OkSyZ1Q12eQMwzbrw==", - "license": "MIT" - }, "node_modules/vscode-ws-jsonrpc": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/vscode-ws-jsonrpc/-/vscode-ws-jsonrpc-3.5.0.tgz", diff --git a/package.json b/package.json index 7f865528..06284b82 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "@types/react-dom": "^19.1.6", "mermaid": "^11.15.0", "monaco-editor": "^0.55.1", - "monaco-languageclient": "^10.5.0", + "monaco-languageclient": "^10.7.0", "react": "^19.1.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", From 83f3f9af876284db5f9c7b824edf785dbf3d989a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Sep 2026 18:04:00 +0000 Subject: [PATCH 48/60] Bump ws from 8.19.0 to 8.21.3 Bumps [ws](https://github.com/websockets/ws) from 8.19.0 to 8.21.3. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.19.0...8.21.3) --- updated-dependencies: - dependency-name: ws dependency-version: 8.21.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3c3d34c4..00131e26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "vscode-languageserver-protocol": "^3.17.5", "vscode-ws-jsonrpc": "^3.5.0", "web-vitals": "^2.1.4", - "ws": "^8.19.0" + "ws": "^8.21.3" }, "devDependencies": { "env-cmd": "^11.0.0" @@ -19752,9 +19752,9 @@ } }, "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index 0d411ad2..dd08c8c7 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "vscode-languageserver-protocol": "^3.17.5", "vscode-ws-jsonrpc": "^3.5.0", "web-vitals": "^2.1.4", - "ws": "^8.19.0" + "ws": "^8.21.3" }, "scripts": { "start": "react-scripts start", From 430c4e458f982654d76ac3cabf4f07e45edbebc6 Mon Sep 17 00:00:00 2001 From: Max Oesterle Date: Tue, 6 Oct 2026 16:10:02 +0200 Subject: [PATCH 49/60] derive fast-login redirect URI from current origin --- .env.production | 5 ++++- src/__tests__/config/fastLogin.test.ts | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.env.production b/.env.production index 0f51b419..3d3b2037 100644 --- a/.env.production +++ b/.env.production @@ -7,4 +7,7 @@ REACT_APP_API_BASE_URL=https://mwa.sdq.kastel.kit.edu # Environment identifier REACT_APP_ENV=production -REACT_APP_FAST_LOGIN_REDIRECT_URL=https://mwa.sdq.kastel.kit.edu/login/callback \ No newline at end of file +# Intentionally NOT setting REACT_APP_FAST_LOGIN_REDIRECT_URL: the fast-login redirect URI +# is derived from window.location.origin so that login stays on the host the user came from +# (mwa.sdq.kastel.kit.edu or the IPv6 address). Every origin used must be registered as a +# valid redirect URI in the Keycloak client. \ No newline at end of file diff --git a/src/__tests__/config/fastLogin.test.ts b/src/__tests__/config/fastLogin.test.ts index 7f564171..f98ed22a 100644 --- a/src/__tests__/config/fastLogin.test.ts +++ b/src/__tests__/config/fastLogin.test.ts @@ -28,6 +28,26 @@ describe('fastLogin config', () => { ); }); + it.each([ + ['https://mwa.sdq.kastel.kit.edu'], + ['https://[2001:7c0:2313:1:f816:3eff:fe18:4ccf]'], + ['http://127.0.0.1:3000'], + ])('derives the redirect URI from the current origin %s', (origin) => { + const originalLocation = globalThis.location; + Object.defineProperty(globalThis, 'location', { + configurable: true, + value: { origin }, + }); + try { + expect(getFastLoginRedirectUri()).toBe(`${origin}${FAST_LOGIN_CALLBACK_PATH}`); + } finally { + Object.defineProperty(globalThis, 'location', { + configurable: true, + value: originalLocation, + }); + } + }); + // ── saveFastLoginRedirectUri / getSavedFastLoginRedirectUri ────────────── it('saves and retrieves redirect URI from sessionStorage', () => { From a3f345c741bdd84f978cf1fcb4e0d6f5af021038 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Oct 2026 12:22:05 +0000 Subject: [PATCH 50/60] Bump shell-quote from 1.10.0 to 1.12.0 Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.10.0 to 1.12.0. - [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/shell-quote/compare/v1.10.0...v1.12.0) --- updated-dependencies: - dependency-name: shell-quote dependency-version: 1.12.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f5e9ee1..4c918811 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17858,9 +17858,9 @@ } }, "node_modules/shell-quote": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.10.0.tgz", - "integrity": "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.12.0.tgz", + "integrity": "sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==", "license": "MIT", "engines": { "node": ">= 0.4" From acb2df8cff2ab6b99d2e861234d343a2fdfb9b9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 10:23:35 +0000 Subject: [PATCH 51/60] Bump proxy-addr from 2.0.7 to 2.0.8 Bumps [proxy-addr](https://github.com/jshttp/proxy-addr) from 2.0.7 to 2.0.8. - [Release notes](https://github.com/jshttp/proxy-addr/releases) - [Changelog](https://github.com/jshttp/proxy-addr/blob/master/HISTORY.md) - [Commits](https://github.com/jshttp/proxy-addr/compare/v2.0.7...v2.0.8) --- updated-dependencies: - dependency-name: proxy-addr dependency-version: 2.0.8 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c918811..d7e43dd2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16428,9 +16428,9 @@ "license": "MIT" }, "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz", + "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", "license": "MIT", "dependencies": { "forwarded": "0.2.0", @@ -16438,6 +16438,10 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/proxy-addr/node_modules/ipaddr.js": { From 01706087e37bb1fc87f06a486cdce242a920f063 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 10:33:21 +0000 Subject: [PATCH 52/60] Bump js-yaml Bumps and [js-yaml](https://github.com/nodeca/js-yaml). These dependencies needed to be updated together. Updates `js-yaml` from 3.14.1 to 3.15.2 - [Changelog](https://github.com/nodeca/js-yaml/blob/3.15.2/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.15.2) Updates `js-yaml` from 4.1.0 to 4.3.2 - [Changelog](https://github.com/nodeca/js-yaml/blob/3.15.2/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.15.2) --- updated-dependencies: - dependency-name: js-yaml dependency-version: 3.15.2 dependency-type: indirect - dependency-name: js-yaml dependency-version: 4.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index d7e43dd2..e57ed08c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3113,9 +3113,19 @@ "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -10170,9 +10180,19 @@ } }, "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -13431,9 +13451,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz", + "integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==", "license": "MIT", "dependencies": { "argparse": "^1.0.7", From f954611d92ed7f1480babd00c66d1609a50d2117 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 10:40:21 +0000 Subject: [PATCH 53/60] Bump lodash-es and mermaid Bumps [lodash-es](https://github.com/lodash/lodash) to 4.18.1 and updates ancestor dependency [mermaid](https://github.com/mermaid-js/mermaid). These dependencies need to be updated together. Updates `lodash-es` from 4.17.23 to 4.18.1 - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1) Updates `mermaid` from 12.0.0 to 12.2.0 - [Release notes](https://github.com/mermaid-js/mermaid/releases) - [Commits](https://github.com/mermaid-js/mermaid/compare/mermaid@12.0.0...mermaid@12.2.0) --- updated-dependencies: - dependency-name: lodash-es dependency-version: 4.18.1 dependency-type: indirect - dependency-name: mermaid dependency-version: 12.2.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package-lock.json | 115 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 54 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index e57ed08c..f353625c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "ecore-ts": "^0.14.0", - "mermaid": "^12.0.0", + "mermaid": "^12.2.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.7.0", "react": "^19.1.0", @@ -2140,54 +2140,40 @@ "license": "MIT" }, "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", - "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-13.2.0.tgz", + "integrity": "sha512-bA9dvWlhAUcHkNwU+8w9yiUxJPlj/Lm3VqS7MD+NbIR/7LmpNLuK/AWNFdCo/T3SK5ND0/UHf3IJvl/Jn/i6yg==", "license": "Apache-2.0", "dependencies": { - "@chevrotain/gast": "11.1.2", - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" + "@chevrotain/gast": "13.2.0", + "@chevrotain/types": "13.2.0" } }, - "node_modules/@chevrotain/cst-dts-gen/node_modules/lodash-es": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", - "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", - "license": "MIT" - }, "node_modules/@chevrotain/gast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", - "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-13.2.0.tgz", + "integrity": "sha512-bCARdAsG+eEbOveSXcOAC7pVxA04I1ionzeMOwIYf5NX7SaS7zgn4Dgug2BSqoL+iyKeMNSorQjsFSHJHsCNwg==", "license": "Apache-2.0", "dependencies": { - "@chevrotain/types": "11.1.2", - "lodash-es": "4.17.23" + "@chevrotain/types": "13.2.0" } }, - "node_modules/@chevrotain/gast/node_modules/lodash-es": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", - "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", - "license": "MIT" - }, "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", - "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-13.2.0.tgz", + "integrity": "sha512-kxpUkLtiaK09ph+dib+Yvm+3sWSnuwlo25gqfKRgTPNmF6H7uW4gVkMjaRdtnN783S9sM6vUNWh9CsxYX4QwKw==", "license": "Apache-2.0" }, "node_modules/@chevrotain/types": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", - "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-13.2.0.tgz", + "integrity": "sha512-7qrYHRlKfWf2AvBfJi5eVOrKAkbxvMFsy/iIHTGIiApNcEecCaVIdR+mIQhyCBsTDJxBz4JWXHMo6krbhR9hVg==", "license": "Apache-2.0" }, "node_modules/@chevrotain/utils": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", - "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-13.2.0.tgz", + "integrity": "sha512-SzKYY68rseOrb9KILVzPsl6SjkQtdWw01SRGB5aCVI5kFcHltQsOYV3JB0Ffst72DgkvHCyDQ0NLwxtmCCf97Q==", "license": "Apache-2.0" }, "node_modules/@codingame/monaco-vscode-api": { @@ -3708,12 +3694,12 @@ "license": "MIT" }, "node_modules/@mermaid-js/parser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.0.tgz", - "integrity": "sha512-K8BeapFUfrfxbRAUQAG5oBOCwo1+bNWzaVnPxTCutkfrTBn6T/j91FIhqxWJ32SUeQ9T3iy1zcmPZ5ROZEvDrg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.1.tgz", + "integrity": "sha512-j37dj/h6p6pots1L7pLPPNuABEEu9WP4OYg9pW1g+nYG331j0+3canE9OagtYdytYvdSAMG+2fKU5cxep6LgjA==", "license": "MIT", "dependencies": { - "@chevrotain/types": "~11.1.2" + "@chevrotain/types": "~13.2.0" }, "engines": { "node": ">=22.12.0" @@ -7403,25 +7389,21 @@ "license": "MIT" }, "node_modules/chevrotain": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", - "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-13.2.0.tgz", + "integrity": "sha512-GTouk5YzgBxlTPCaDn5q0q2EJKkrYmnPF+HmF8v0Qo4r3iyPG7HJivkN1wthCXZcm3sIcZFpGTRovLPNdJNRCA==", "license": "Apache-2.0", "dependencies": { - "@chevrotain/cst-dts-gen": "11.1.2", - "@chevrotain/gast": "11.1.2", - "@chevrotain/regexp-to-ast": "11.1.2", - "@chevrotain/types": "11.1.2", - "@chevrotain/utils": "11.1.2", - "lodash-es": "4.17.23" + "@chevrotain/cst-dts-gen": "13.2.0", + "@chevrotain/gast": "13.2.0", + "@chevrotain/regexp-to-ast": "13.2.0", + "@chevrotain/types": "13.2.0", + "@chevrotain/utils": "13.2.0" + }, + "engines": { + "node": ">=22.0.0" } }, - "node_modules/chevrotain/node_modules/lodash-es": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", - "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", - "license": "MIT" - }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -13653,21 +13635,30 @@ } }, "node_modules/katex": { - "version": "0.16.47", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", - "integrity": "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==", + "version": "0.18.10", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.18.10.tgz", + "integrity": "sha512-/B6p9eY9DX7aHBfpkHdpirDTZ5QH9xTwL9y837PWuzuv41O5jFdqNQwVQEQsimY0/iVNkwBY4+4hMfhQ7d4Dbw==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], "license": "MIT", "dependencies": { - "commander": "^8.3.0" + "commander": "^15.0.0" }, "bin": { "katex": "cli.js" } }, + "node_modules/katex/node_modules/commander": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", + "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -14011,17 +14002,17 @@ } }, "node_modules/mermaid": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-12.0.0.tgz", - "integrity": "sha512-/wQXC9iBxoGV8p3erbvaXs9h77VyLDBH6GdayVjj3hEcSQhFU4N1WUhUppotCEqlIxI2pRMwjwBSwTB1MfZBgQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-12.2.0.tgz", + "integrity": "sha512-w7nr/SFrLO7BaVTs3dQTvYSV6nYSBj0Yy9DjBhsIJtAcHqRzXSq4Pg32ujHZ/AdWsAMNEvvhbm5dt9E2tOiHzw==", "license": "MIT", "dependencies": { "@braintree/sanitize-url": "^7.1.2", "@iconify/utils": "^3.0.2", - "@mermaid-js/parser": "^2.0.0", + "@mermaid-js/parser": "^2.0.1", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", - "chevrotain": "~11.1.2", + "chevrotain": "~13.2.0", "cytoscape": "^3.34.0", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", @@ -14032,7 +14023,7 @@ "dompurify": "^3.4.12", "elkjs": "^0.9.3", "es-toolkit": "^1.45.1", - "katex": "^0.16.47", + "katex": "^0.18.0", "khroma": "^2.1.0", "marked": "^16.3.0", "roughjs": "^4.6.6", diff --git a/package.json b/package.json index 64eaa529..84e06ea4 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@types/node": "^26.6.1", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", - "mermaid": "^12.0.0", + "mermaid": "^12.2.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.7.0", "react": "^19.1.0", From 50773ce518bcdd1b2c15594c924498c8bfa08890 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 10:51:12 +0000 Subject: [PATCH 54/60] Bump source-map-js from 1.2.1 to 1.2.2 Bumps [source-map-js](https://github.com/7rulnik/source-map-js) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/7rulnik/source-map-js/releases) - [Changelog](https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2) --- updated-dependencies: - dependency-name: source-map-js dependency-version: 1.2.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f353625c..a71f8a84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18004,9 +18004,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" From e139adcdc3d1a6a175f32d918782d9ad0c4b5a41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 10:56:42 +0000 Subject: [PATCH 55/60] Bump picomatch Bumps and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together. Updates `picomatch` from 2.3.1 to 2.3.2 - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2) Updates `picomatch` from 4.0.3 to 4.0.7 - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2) --- updated-dependencies: - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect - dependency-name: picomatch dependency-version: 4.0.7 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a71f8a84..5e51dc60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5512,9 +5512,9 @@ } }, "node_modules/@types/jest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "license": "MIT", "engines": { "node": ">=12" @@ -14903,9 +14903,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" From 509922095c467842a32cb0c3f535f9c1c7810a77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 11:02:41 +0000 Subject: [PATCH 56/60] Bump launch-editor from 2.10.0 to 2.14.2 Bumps [launch-editor](https://github.com/vitejs/launch-editor) from 2.10.0 to 2.14.2. - [Commits](https://github.com/vitejs/launch-editor/compare/v2.10.0...v2.14.2) --- updated-dependencies: - dependency-name: launch-editor dependency-version: 2.14.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a30a32c..e107c019 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@types/react": "^19.1.8", "@types/react-dom": "^19.2.2", "ecore-ts": "^0.14.0", - "mermaid": "^12.2.0", + "mermaid": "^12.0.0", "monaco-editor": "^0.55.1", "monaco-languageclient": "^10.7.0", "react": "^19.1.0", @@ -13719,13 +13719,13 @@ } }, "node_modules/launch-editor": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", - "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.14.2.tgz", + "integrity": "sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==", "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "picocolors": "^1.1.1", + "shell-quote": "^1.10.0" } }, "node_modules/layout-base": { From cef61fcae896a9e681e7639b96bcf009c6b65004 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 11:28:38 +0000 Subject: [PATCH 57/60] Bump fast-uri from 3.0.6 to 3.1.9 Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.0.6 to 3.1.9. - [Release notes](https://github.com/fastify/fast-uri/releases) - [Commits](https://github.com/fastify/fast-uri/compare/v3.0.6...v3.1.9) --- updated-dependencies: - dependency-name: fast-uri dependency-version: 3.1.9 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e107c019..50c0541a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10484,9 +10484,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz", + "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==", "funding": [ { "type": "github", From f6719e062a4253639c3e3f4b6309dad799efad98 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 11:36:43 +0000 Subject: [PATCH 58/60] Bump nanoid from 3.3.11 to 3.3.20 Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.11 to 3.3.20. - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/3.3.11...3.3.20) --- updated-dependencies: - dependency-name: nanoid dependency-version: 3.3.20 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 50c0541a..0416166d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14306,9 +14306,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.20", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", + "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==", "funding": [ { "type": "github", From 300e75b7c399e3aa7a6d44b93ff7bd32b312489b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 12:10:03 +0000 Subject: [PATCH 59/60] Bump brace-expansion from 1.1.18 to 1.1.21 Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.18 to 1.1.21. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.18...v1.1.21) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.21 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0416166d..c3ba237f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7134,9 +7134,9 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", - "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -10589,9 +10589,9 @@ } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", - "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -18493,9 +18493,9 @@ } }, "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", - "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -19554,9 +19554,9 @@ } }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", - "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" From 1d294d6b6b728e394cfccb00466f83366ac6e84a Mon Sep 17 00:00:00 2001 From: davit Date: Thu, 22 Oct 2026 20:00:27 +0200 Subject: [PATCH 60/60] removed console logs --- src/components/flow/CodeEditorModal.tsx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/components/flow/CodeEditorModal.tsx b/src/components/flow/CodeEditorModal.tsx index e7056de6..3885e589 100644 --- a/src/components/flow/CodeEditorModal.tsx +++ b/src/components/flow/CodeEditorModal.tsx @@ -314,17 +314,14 @@ export function CodeEditorModal({ pendingRequests.current.set(requestId, (message) => { clearTimeout(timeoutId); const suggestions = processCompletionResponse(message, range, monacoInstance); - console.log(`🧩 Completion response for request ${requestId}:`, message.result, '→', suggestions.length, 'suggestions'); resolve({ suggestions }); }); - console.log(`🧩 Sending completion request ${requestId} for uri=${getDocumentUri()}`); webSocketRef.current.send(JSON.stringify(request)); }); }; const handleEditorDidMount: OnMount = (editor, monacoInstance) => { - console.log('🎯 handleEditorDidMount called'); editorRef.current = editor; const grammar = monarchGrammar || reactionsMonarch; @@ -388,8 +385,6 @@ export function CodeEditorModal({ try { const rawUser = localStorage.getItem('auth.user'); const userId = rawUser ? JSON.parse(rawUser).id : null; - console.log('🔑 rawUser:', rawUser); - console.log('🔑 vsumId:', vsumId); if (!userId) { console.error('❌ No userId available – aborting LSP connection'); return; @@ -403,13 +398,11 @@ export function CodeEditorModal({ const wsBaseUrl = apiBaseUrl.replace('https://', 'wss://').replace('http://', 'ws://'); const wsUrl = `${wsBaseUrl}${lspEndpoint}?userId=${encodeURIComponent(userId)}&vsumId=${encodeURIComponent(vsumId)}`; - console.log('🔌 Connecting to LSP at:', wsUrl); const webSocket = new WebSocket(wsUrl); webSocketRef.current = webSocket; webSocket.onopen = () => { - console.log('✅ LSP WebSocket open:', wsUrl); setLspConnected(true); setLspError(null); }; @@ -430,7 +423,6 @@ export function CodeEditorModal({ if (message.type === 'workspaceReady') { const rootUri = message.rootUri; - console.log('📁 workspaceReady received, rootUri:', rootUri); if (!rootUri) { console.error('❌ workspaceReady message contains no rootUri'); return; @@ -457,7 +449,6 @@ export function CodeEditorModal({ } if (message.id === 1 && message.result) { - console.log('🚀 LSP initialize response received, sending initialized + didOpen'); lspInitialized.current = true; webSocket.send(JSON.stringify({ jsonrpc: '2.0', method: 'initialized', params: {} }));