From f7ef9a039887571cc318630a67c3853b885a07a3 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Wed, 2 Apr 2025 22:03:25 +0200 Subject: [PATCH 01/49] update submodule and packages --- package-lock.json | 68 ++++++++++++++++++++++++++++++++--------------- package.json | 6 +++-- recipe | 2 +- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 045fc97..ed71a7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,10 +12,12 @@ "@codingame/monaco-vscode-keybindings-service-override": "~3.2.3", "chalk": "~5.3.0", "commander": "~11.0.0", - "langium": "~3.2.0", + "langium": "^3.4.0", "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", "monaco-editor-wrapper": "~4.0.2", "monaco-languageclient": "~8.1.1", + "typir": "^0.2.0", + "typir-langium": "^0.2.0", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, @@ -32,7 +34,7 @@ "esbuild": "^0.20.2", "eslint": "~8.57.0", "http-server": "~14.1.1", - "langium-cli": "~3.2.0", + "langium-cli": "^3.4.0", "typescript": "~5.1.6", "vite": "~5.4.14", "vitest": "~1.4.0", @@ -44,9 +46,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "dev": true, "license": "MIT", "dependencies": { @@ -3112,9 +3114,9 @@ } }, "node_modules/langium": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.2.1.tgz", - "integrity": "sha512-Dnew3MLir8lzrSBFbtjBh/thxu0eU9EqBE58sbi6lBw/FHarYkbuZ8N9azMb0cWqkfCbV6J6EMnUOOhX4ZRxhA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.4.0.tgz", + "integrity": "sha512-7xufsaF5jYGFMXHOTka8bN48b9FHn2vZGL2R+PGgyi+JY/xgimUFDKYcz/h4gm5m8p3sSRtZDh+sK2U63K0MNg==", "license": "MIT", "dependencies": { "chevrotain": "~11.0.3", @@ -3124,13 +3126,13 @@ "vscode-uri": "~3.0.8" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, "node_modules/langium-cli": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.2.0.tgz", - "integrity": "sha512-4JWeCMuTHyFO+GCnOVT8+jygdob4KnU0uh/26cMxgZ1FlenAk8zrOnrXbuUzIm0FAIetCqrR6GUXqeko+Vg5og==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.4.0.tgz", + "integrity": "sha512-7dU5kPlfzwzPLkaaMcBCc0tfnVPHOcxcgMW/l2xRDy9Y/cljTCXSV8y3lJUlHASQa3LZDF0+8bGZX3Noxa+GLw==", "dev": true, "license": "MIT", "dependencies": { @@ -3138,25 +3140,25 @@ "commander": "~11.0.0", "fs-extra": "~11.1.1", "jsonschema": "~1.4.1", - "langium": "~3.2.0", - "langium-railroad": "~3.2.0", + "langium": "~3.4.0", + "langium-railroad": "~3.4.0", "lodash": "~4.17.21" }, "bin": { "langium": "bin/langium.js" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, "node_modules/langium-railroad": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.2.0.tgz", - "integrity": "sha512-8wJqRid1udSH9PKo8AkRrJCUNHQ6Xu9tGi+//bLdHGDdlK9gpps1AwO71ufE864/so77K4ZmqBuLnBnxPcGs/Q==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.4.0.tgz", + "integrity": "sha512-dTSTm4+UI2byf+kMnjXBJgcif6XjpvFrFv4HhRONV6ZzQIVWweAycg40q7Wm8D/iagtZa/eFa1l5yCxQf896eA==", "dev": true, "license": "MIT", "dependencies": { - "langium": "~3.2.0", + "langium": "~3.4.0", "railroad-diagrams": "~1.0.0" } }, @@ -4341,6 +4343,28 @@ "node": ">=14.17" } }, + "node_modules/typir": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/typir/-/typir-0.2.0.tgz", + "integrity": "sha512-V/7Mx5PlXMce9GOwKnzeFQKQ+cwosMW12oibN42HMSAx7Adbj2g6TcXVmudRQAkQ17n1/mNi4o1KF1LBD50Cvg==", + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + } + }, + "node_modules/typir-langium": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/typir-langium/-/typir-langium-0.2.0.tgz", + "integrity": "sha512-u1XpI+r5bd1A95G3Z2bjEfPq7jIJRvM7aDBxnIuBIoVw9OV/ggNVhI19Yz23OSJCoMyOGwK3b79/sSuCqwzNSw==", + "license": "MIT", + "dependencies": { + "langium": "~3.4.0", + "typir": "~0.2.0" + }, + "engines": { + "node": ">= 18.0.0" + } + }, "node_modules/ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", @@ -4395,9 +4419,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz", - "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==", + "version": "5.4.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.16.tgz", + "integrity": "sha512-Y5gnfp4NemVfgOTDQAunSD4346fal44L9mszGGY/e+qxsRT5y1sMlS/8tiQ8AFAp+MFgYNSINdfEchJiPm41vQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 59d276d..816c2ad 100644 --- a/package.json +++ b/package.json @@ -48,10 +48,12 @@ "@codingame/monaco-vscode-keybindings-service-override": "~3.2.3", "chalk": "~5.3.0", "commander": "~11.0.0", - "langium": "~3.2.0", + "langium": "^3.4.0", "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", "monaco-editor-wrapper": "~4.0.2", "monaco-languageclient": "~8.1.1", + "typir": "^0.2.0", + "typir-langium": "^0.2.0", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, @@ -65,7 +67,7 @@ "esbuild": "^0.20.2", "eslint": "~8.57.0", "http-server": "~14.1.1", - "langium-cli": "~3.2.0", + "langium-cli": "^3.4.0", "typescript": "~5.1.6", "vite": "~5.4.14", "vitest": "~1.4.0", diff --git a/recipe b/recipe index 9bcb498..662ec3a 160000 --- a/recipe +++ b/recipe @@ -1 +1 @@ -Subproject commit 9bcb498878585a30a2f0f63121133ca32c7c9344 +Subproject commit 662ec3a6f4e9fe636319bb2376a134626f5c50f8 From bc670733575e53878097ec306f62e679eb3d1c2e Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:27:45 +0200 Subject: [PATCH 02/49] update packages and remove unused typir package --- package-lock.json | 741 ++++++++++++++++++++++++++-------------------- package.json | 13 +- 2 files changed, 421 insertions(+), 333 deletions(-) diff --git a/package-lock.json b/package-lock.json index ed71a7d..7aefff5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,13 +11,12 @@ "@codingame/monaco-vscode-editor-service-override": "~3.2.3", "@codingame/monaco-vscode-keybindings-service-override": "~3.2.3", "chalk": "~5.3.0", - "commander": "~11.0.0", - "langium": "^3.4.0", + "commander": "~12.1.0", + "langium": "~3.4.0", "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", "monaco-editor-wrapper": "~4.0.2", "monaco-languageclient": "~8.1.1", - "typir": "^0.2.0", - "typir-langium": "^0.2.0", + "typir-langium": "~0.2.0", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, @@ -27,14 +26,14 @@ "devDependencies": { "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", "@types/node": "^18.0.0", - "@types/vscode": "~1.67.0", + "@types/vscode": "~1.94.0", "@typescript-eslint/eslint-plugin": "~7.3.1", "@typescript-eslint/parser": "~7.3.1", "concurrently": "~8.2.1", "esbuild": "^0.20.2", "eslint": "~8.57.0", "http-server": "~14.1.1", - "langium-cli": "^3.4.0", + "langium-cli": "~3.4.0", "typescript": "~5.1.6", "vite": "~5.4.14", "vitest": "~1.4.0", @@ -42,7 +41,7 @@ }, "engines": { "node": ">=18.0.0", - "vscode": "^1.75.0" + "vscode": "^1.94.0" } }, "node_modules/@babel/runtime": { @@ -98,9 +97,9 @@ "license": "Apache-2.0" }, "node_modules/@codingame/esbuild-import-meta-url-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@codingame/esbuild-import-meta-url-plugin/-/esbuild-import-meta-url-plugin-1.0.2.tgz", - "integrity": "sha512-b1PjH6DVdTQd0WLO2R+b9oMlO7REyiAVbcx8weN1ZYiBSROuAy9MJ/j2NI4sxmFv9GK0wM9HRrBg6J2CBZ1xzQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@codingame/esbuild-import-meta-url-plugin/-/esbuild-import-meta-url-plugin-1.0.3.tgz", + "integrity": "sha512-SAIOsWZteIWYAk04BCqQ+ugu8KiJm8EplQbMvxJl905uZv3r+21+XjtGg/zzrbxlVAY1cP+hGAG7z7sBPmy63w==", "dev": true, "license": "ISC", "dependencies": { @@ -638,9 +637,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", "dev": true, "license": "MIT", "dependencies": { @@ -845,9 +844,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.0.tgz", - "integrity": "sha512-e312hTjuM89YLqlcqEs7mSvwhxN5pgXqRobUob7Jsz1wDQlpAb2WTX4jzvrx5NrL1h2SE4fGdHSNyPxbLfzyeA==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz", + "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==", "cpu": [ "arm" ], @@ -859,9 +858,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.0.tgz", - "integrity": "sha512-cBUOny8GNXP++gN00Bo5L04I2oqUEFAU0OSDb+4hqp4/R/pZL/zlGzp7lJkhtPX52Rj+PIe0S8aOqhK4hztxHQ==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz", + "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==", "cpu": [ "arm64" ], @@ -873,9 +872,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.0.tgz", - "integrity": "sha512-aauK2M2ptFQQYdOqbKGYCg1LHlPbm6IxepSnHLLaMIGcd9YBiKRGl2+KtzQL/IkurP+b54EKBkvtZaWXijmzfQ==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz", + "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==", "cpu": [ "arm64" ], @@ -887,9 +886,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.0.tgz", - "integrity": "sha512-VAjOnHUwpvxf3XT33sMpsLGKq24Rz1sTQhLuUicYrV9pxB4TNi0w11qAGPOyR+dQu/iZf88DmEmG0+2Gaqa1gg==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz", + "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==", "cpu": [ "x64" ], @@ -901,9 +900,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.0.tgz", - "integrity": "sha512-I2eRlZG87gl6WxP6PvSB5bfFA1btE7tWnG6QAoEU/0Gr47f6KaxRwiRfBujHlzkuMPqtpTlSOW4aOEOyMtQqfg==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz", + "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==", "cpu": [ "arm64" ], @@ -915,9 +914,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.0.tgz", - "integrity": "sha512-G05JNYFdjikD/2hJTf1gHdD5KjI2TotjiDn17amHtB5JgwrRF1EA9hJ3TRGIvT3zGXilNWWlR71R/2TT1pXRDg==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz", + "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==", "cpu": [ "x64" ], @@ -929,9 +928,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.0.tgz", - "integrity": "sha512-FMXxMZ7qnMULwgdmGSFVlOduAhFyqDPoK1A2Q8HBkzGYX9SMFU3ITKfLdIiCzTaaj/pt1OiEbpF2szUw6Kh++Q==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz", + "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==", "cpu": [ "arm" ], @@ -943,9 +942,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.0.tgz", - "integrity": "sha512-0315TiPsJfOY+jAwEeqxcy9yVcAy/jg99GrMcd/L7CRESzi1vhyLPbnkDnz7giaEttSRf/d3llJYfoC+44Nl3A==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz", + "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==", "cpu": [ "arm" ], @@ -957,9 +956,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.0.tgz", - "integrity": "sha512-4zCKY5E9djPyHzvoCWIouFsuAvg+dk+rNia8lz1bjKpzKz02QvK4JPHyjcDT8CFR2J/aA98WccCirdDOy+VDWQ==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz", + "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==", "cpu": [ "arm64" ], @@ -971,9 +970,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.0.tgz", - "integrity": "sha512-6St9rrPSLbYBbbJAClpU4gmnO7cdZCMMzx2MT0UCIIIevoLAmsCDOAG6t3J/RgN4CPUpdaGr/UnPqQTHZ4oDwA==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz", + "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==", "cpu": [ "arm64" ], @@ -984,10 +983,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz", + "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.0.tgz", - "integrity": "sha512-dIBfp8NDrgvwUJxyqFv7501coIba+7xxBJy1gQEF0RGkIKa3Tq0Mh3sF9hmstDLtaMt7gL2aXsCNG9SCKyVVZg==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz", + "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==", "cpu": [ "ppc64" ], @@ -999,9 +1012,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.0.tgz", - "integrity": "sha512-Pu7xLHRy+5UjFCKR/vWsbFmiBYUC9993v99YoKWhAgK4VsdNuWHPs17NuCJEtVsZpYCNVPbRyBpQw58Ma8BmeA==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz", + "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz", + "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==", "cpu": [ "riscv64" ], @@ -1013,9 +1040,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.0.tgz", - "integrity": "sha512-2Q9qQnk/eWdvXzzHl22y7tpDHREppFUh7N6cCs70HZEbQSgB7wd/2S/B05SSiyAiIn5BL+fYiASLds5bz0IQFw==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz", + "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==", "cpu": [ "s390x" ], @@ -1027,9 +1054,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.0.tgz", - "integrity": "sha512-CNnqMZ4Yz0Ga0A75qux7DNChq0P9oAWn2S7yjZPRC+AaEF8Ysw5K/1lzT25/a3reJ4V2abcShIVG+tfZHb1UrQ==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz", + "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==", "cpu": [ "x64" ], @@ -1041,9 +1068,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.0.tgz", - "integrity": "sha512-dS1+eCbbao54XB+wLW6uuwRkChq4L0UfKhd3wvt6s+EN1rTIi24ee5Lk3HfRGq9J2jsRm12/AGKLA0kd82Sp/g==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz", + "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==", "cpu": [ "x64" ], @@ -1055,9 +1082,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.0.tgz", - "integrity": "sha512-VrYQHY5+Y71OU/uOSRE9lLhph16bbuWGrMwGwZDPxCUXUW5NgLA+K+q0kv7rafHRlnrsZSVcMOkZskzTNnR3ZQ==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz", + "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==", "cpu": [ "arm64" ], @@ -1069,9 +1096,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.0.tgz", - "integrity": "sha512-LCqk4Xi3e4GzLqaq+QDM7gP5DtJ/RgWMzV3U2brwp/vEz9RTA5YBgIDP69xYfrTXexes6xPsOIquy79+kLifiA==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz", + "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==", "cpu": [ "ia32" ], @@ -1083,9 +1110,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.0.tgz", - "integrity": "sha512-dj2ZolfViR3chLWwSHID2mBzLLwYvXFldIplR6BSkdACXqAsrcmItKTff4h7enYB3Ugoh0v41WbxijE9HJb1Hw==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz", + "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==", "cpu": [ "x64" ], @@ -1104,9 +1131,9 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, "license": "MIT" }, @@ -1118,9 +1145,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.64", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.64.tgz", - "integrity": "sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==", + "version": "18.19.86", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz", + "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1128,16 +1155,16 @@ } }, "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", "dev": true, "license": "MIT" }, "node_modules/@types/vscode": { - "version": "1.67.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.67.0.tgz", - "integrity": "sha512-GH8BDf8cw9AC9080uneJfulhSa7KHSMI2s/CyKePXoGNos9J486w2V4YKoeNUqIEkW4hKoEAWp6/cXTwyGj47g==", + "version": "1.94.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.94.0.tgz", + "integrity": "sha512-UyQOIUT0pb14XSqJskYnRwD2aG0QrPVefIfrW1djR+/J4KeFQ0i1+hjZoaAmeNf3Z2jleK+R2hv+EboG/m8ruw==", "dev": true, "license": "MIT" }, @@ -1340,9 +1367,9 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, "license": "ISC" }, @@ -1393,9 +1420,9 @@ } }, "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true, "license": "MIT", "engines": { @@ -1450,9 +1477,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "license": "MIT", "bin": { @@ -1553,14 +1580,11 @@ } }, "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } + "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", @@ -1613,18 +1637,29 @@ "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -1749,12 +1784,12 @@ "license": "MIT" }, "node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/concat-map": { @@ -1856,9 +1891,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -1888,9 +1923,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -1925,24 +1960,6 @@ "dev": true, "license": "MIT" }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -1979,6 +1996,21 @@ "node": ">=6.0.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1987,14 +2019,11 @@ "license": "MIT" }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -2009,6 +2038,19 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", @@ -2340,9 +2382,9 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { @@ -2350,7 +2392,7 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -2384,9 +2426,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -2452,9 +2494,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -2547,17 +2589,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -2566,6 +2613,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", @@ -2676,13 +2737,13 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2712,36 +2773,10 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -2910,9 +2945,9 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3040,9 +3075,9 @@ "license": "ISC" }, "node_modules/js-tokens": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", - "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", "dev": true, "license": "MIT" }, @@ -3151,6 +3186,16 @@ "node": ">=18.0.0" } }, + "node_modules/langium-cli/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/langium-railroad": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.4.0.tgz", @@ -3177,14 +3222,14 @@ } }, "node_modules/local-pkg": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", - "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", "dev": true, "license": "MIT", "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" }, "engines": { "node": ">=14" @@ -3240,15 +3285,25 @@ } }, "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3332,32 +3387,26 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/mlly": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.3.tgz", - "integrity": "sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.14.0", - "pathe": "^1.1.2", - "pkg-types": "^1.2.1", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", "ufo": "^1.5.4" } }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/monaco-editor": { "name": "@codingame/monaco-vscode-editor-api", "version": "3.2.3", @@ -3441,9 +3490,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -3496,9 +3545,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -3685,46 +3734,42 @@ } }, "node_modules/pkg-types": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", - "integrity": "sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", "dev": true, "license": "MIT", "dependencies": { "confbox": "^0.1.8", - "mlly": "^1.7.2", - "pathe": "^1.1.2" + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.35.tgz", + "integrity": "sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==", "dev": true, "license": "MIT", "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "async": "^3.2.6", + "debug": "^4.3.6" }, "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "node": ">= 10.12" } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -3742,7 +3787,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -3786,13 +3831,13 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -3871,9 +3916,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -3899,13 +3944,13 @@ } }, "node_modules/rollup": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.0.tgz", - "integrity": "sha512-nrOD/RrnAMssruS7bPa7MYpEuH6tUpOa43NLtxQiLKem0An8HZyXun5Ndig6JzbkJoIbaKkt85V67VCaQ59GyA==", + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz", + "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -3915,24 +3960,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.27.0", - "@rollup/rollup-android-arm64": "4.27.0", - "@rollup/rollup-darwin-arm64": "4.27.0", - "@rollup/rollup-darwin-x64": "4.27.0", - "@rollup/rollup-freebsd-arm64": "4.27.0", - "@rollup/rollup-freebsd-x64": "4.27.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.27.0", - "@rollup/rollup-linux-arm-musleabihf": "4.27.0", - "@rollup/rollup-linux-arm64-gnu": "4.27.0", - "@rollup/rollup-linux-arm64-musl": "4.27.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.27.0", - "@rollup/rollup-linux-riscv64-gnu": "4.27.0", - "@rollup/rollup-linux-s390x-gnu": "4.27.0", - "@rollup/rollup-linux-x64-gnu": "4.27.0", - "@rollup/rollup-linux-x64-musl": "4.27.0", - "@rollup/rollup-win32-arm64-msvc": "4.27.0", - "@rollup/rollup-win32-ia32-msvc": "4.27.0", - "@rollup/rollup-win32-x64-msvc": "4.27.0", + "@rollup/rollup-android-arm-eabi": "4.39.0", + "@rollup/rollup-android-arm64": "4.39.0", + "@rollup/rollup-darwin-arm64": "4.39.0", + "@rollup/rollup-darwin-x64": "4.39.0", + "@rollup/rollup-freebsd-arm64": "4.39.0", + "@rollup/rollup-freebsd-x64": "4.39.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.39.0", + "@rollup/rollup-linux-arm-musleabihf": "4.39.0", + "@rollup/rollup-linux-arm64-gnu": "4.39.0", + "@rollup/rollup-linux-arm64-musl": "4.39.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.39.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-musl": "4.39.0", + "@rollup/rollup-linux-s390x-gnu": "4.39.0", + "@rollup/rollup-linux-x64-gnu": "4.39.0", + "@rollup/rollup-linux-x64-musl": "4.39.0", + "@rollup/rollup-win32-arm64-msvc": "4.39.0", + "@rollup/rollup-win32-ia32-msvc": "4.39.0", + "@rollup/rollup-win32-x64-msvc": "4.39.0", "fsevents": "~2.3.2" } }, @@ -3961,9 +4008,9 @@ } }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3992,9 +4039,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4003,24 +4050,6 @@ "node": ">=10" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4045,26 +4074,86 @@ } }, "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -4127,9 +4216,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", + "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", "dev": true, "license": "MIT" }, @@ -4188,13 +4277,13 @@ } }, "node_modules/strip-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", - "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", + "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", "dev": true, "license": "MIT", "dependencies": { - "js-tokens": "^9.0.0" + "js-tokens": "^9.0.1" }, "funding": { "url": "https://github.com/sponsors/antfu" @@ -4274,9 +4363,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { @@ -4419,9 +4508,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.16", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.16.tgz", - "integrity": "sha512-Y5gnfp4NemVfgOTDQAunSD4346fal44L9mszGGY/e+qxsRT5y1sMlS/8tiQ8AFAp+MFgYNSINdfEchJiPm41vQ==", + "version": "5.4.17", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.17.tgz", + "integrity": "sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 816c2ad..8187cb2 100644 --- a/package.json +++ b/package.json @@ -47,27 +47,26 @@ "@codingame/monaco-vscode-editor-service-override": "~3.2.3", "@codingame/monaco-vscode-keybindings-service-override": "~3.2.3", "chalk": "~5.3.0", - "commander": "~11.0.0", - "langium": "^3.4.0", + "commander": "~12.1.0", + "langium": "~3.4.0", "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", "monaco-editor-wrapper": "~4.0.2", "monaco-languageclient": "~8.1.1", - "typir": "^0.2.0", - "typir-langium": "^0.2.0", + "typir-langium": "~0.2.0", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, "devDependencies": { "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", "@types/node": "^18.0.0", - "@types/vscode": "~1.67.0", + "@types/vscode": "~1.94.0", "@typescript-eslint/eslint-plugin": "~7.3.1", "@typescript-eslint/parser": "~7.3.1", "concurrently": "~8.2.1", "esbuild": "^0.20.2", "eslint": "~8.57.0", "http-server": "~14.1.1", - "langium-cli": "^3.4.0", + "langium-cli": "~3.4.0", "typescript": "~5.1.6", "vite": "~5.4.14", "vitest": "~1.4.0", @@ -79,7 +78,7 @@ }, "displayName": "rcheck", "engines": { - "vscode": "^1.75.0", + "vscode": "^1.94.0", "node": ">=18.0.0" }, "categories": [ From 956f3f19645ad235cf2ed8f4a26731db67d1b841 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:29:02 +0200 Subject: [PATCH 03/49] add typir minimal setup --- src/language/r-check-module.ts | 29 +++++++++++++++++---------- src/language/r-check-type-checking.ts | 9 +++++++++ 2 files changed, 27 insertions(+), 11 deletions(-) create mode 100644 src/language/r-check-type-checking.ts diff --git a/src/language/r-check-module.ts b/src/language/r-check-module.ts index 125c729..58f3836 100644 --- a/src/language/r-check-module.ts +++ b/src/language/r-check-module.ts @@ -1,10 +1,12 @@ -import type { AstNode, AstNodeDescription, LangiumDocument, Module, PrecomputedScopes, ReferenceInfo, Scope } from 'langium'; +import type { AstNode, AstNodeDescription, LangiumDocument, LangiumSharedCoreServices, Module, PrecomputedScopes, ReferenceInfo, Scope } from 'langium'; import { AstUtils, DefaultScopeComputation, DefaultScopeProvider, inject } from 'langium'; import { CancellationToken } from 'vscode-languageserver'; -import { Enum, Model, QualifiedRef, isEnum, isQualifiedRef, isPropVar, isCommand, Command} from './generated/ast.js'; +import { Enum, Model, QualifiedRef, isEnum, isQualifiedRef, isPropVar, isCommand, Command, RCheckAstType, reflection} from './generated/ast.js'; import { RCheckGeneratedModule, RCheckGeneratedSharedModule } from './generated/module.js'; import { RCheckValidator, registerValidationChecks } from './r-check-validator.js'; import { createDefaultModule, createDefaultSharedModule, DefaultSharedModuleContext, LangiumServices, LangiumSharedServices, PartialLangiumServices } from 'langium/lsp'; +import { createTypirLangiumServices, initializeLangiumTypirServices, TypirLangiumServices } from 'typir-langium'; +import { RCheckTypeSystem } from './r-check-type-checking.js'; export class RCheckScopeProvider extends DefaultScopeProvider { @@ -127,7 +129,8 @@ export class RCheckScopeComputation extends DefaultScopeComputation { export type RCheckAddedServices = { validation: { RCheckValidator: RCheckValidator - } + }, + typir: TypirLangiumServices, } /** @@ -141,13 +144,16 @@ export type RCheckServices = LangiumServices & RCheckAddedServices * declared custom services. The Langium defaults can be partially specified to override only * selected services, while the custom services must be fully specified. */ -export const RCheckModule: Module = { - validation: { - RCheckValidator: () => new RCheckValidator() - }, - references : { - ScopeComputation : (services) => new RCheckScopeComputation(services), - ScopeProvider: (services) => new RCheckScopeProvider(services) +export function createRCheckModule(shared: LangiumSharedCoreServices): Module { + return { + validation: { + RCheckValidator: () => new RCheckValidator(), + }, + typir: () => createTypirLangiumServices(shared, reflection, new RCheckTypeSystem(), { /* customize Typir services here */ }), + references: { + ScopeComputation: (services) => new RCheckScopeComputation(services), + ScopeProvider: (services) => new RCheckScopeProvider(services), + }, } }; @@ -177,9 +183,10 @@ export function createRCheckServices(context: DefaultSharedModuleContext): { const RCheck = inject( createDefaultModule({ shared }), RCheckGeneratedModule, - RCheckModule + createRCheckModule(shared), ); shared.ServiceRegistry.register(RCheck); + initializeLangiumTypirServices(RCheck, RCheck.typir); registerValidationChecks(RCheck); return { shared, RCheck }; } diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts new file mode 100644 index 0000000..71ac1a8 --- /dev/null +++ b/src/language/r-check-type-checking.ts @@ -0,0 +1,9 @@ +import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; +import { RCheckAstType } from "./generated/ast.js"; +import { AstNode } from "langium"; + +export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + onInitialize(typir: TypirLangiumServices): void {} + + onNewAstNode(languageNode: AstNode, typir: TypirLangiumServices): void {} +} From 2c2aec4da2cc3d08e229194573ae79821a33124c Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 3 Apr 2025 17:54:40 +0200 Subject: [PATCH 04/49] install typir dependency --- package-lock.json | 1 + package.json | 1 + 2 files changed, 2 insertions(+) diff --git a/package-lock.json b/package-lock.json index 7aefff5..6126279 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", "monaco-editor-wrapper": "~4.0.2", "monaco-languageclient": "~8.1.1", + "typir": "~0.2.0", "typir-langium": "~0.2.0", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" diff --git a/package.json b/package.json index 8187cb2..38713a6 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", "monaco-editor-wrapper": "~4.0.2", "monaco-languageclient": "~8.1.1", + "typir": "~0.2.0", "typir-langium": "~0.2.0", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" From ece8c4d956dd0d73d4a5683867c60fc44b14a07d Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Fri, 11 Apr 2025 15:48:49 +0200 Subject: [PATCH 05/49] Update recipe submodule --- recipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe b/recipe index 662ec3a..a70cfd7 160000 --- a/recipe +++ b/recipe @@ -1 +1 @@ -Subproject commit 662ec3a6f4e9fe636319bb2376a134626f5c50f8 +Subproject commit a70cfd7c6e7b27e7f3f41c74d93085842557827c From 13a41754418cf175240677b4aed7503486110426 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sat, 26 Apr 2025 16:09:44 +0200 Subject: [PATCH 06/49] add primitive types bool, int, location add binary and unary expressions add variable references --- package-lock.json | 216 +++++++++++++------------- src/language/r-check-type-checking.ts | 123 ++++++++++++++- src/language/r-check-validator.ts | 6 +- src/language/r-check.langium | 28 ++-- 4 files changed, 246 insertions(+), 127 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6126279..02c7a3d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -638,9 +638,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", - "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", "dev": true, "license": "MIT", "dependencies": { @@ -845,9 +845,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz", - "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", "cpu": [ "arm" ], @@ -859,9 +859,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz", - "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", "cpu": [ "arm64" ], @@ -873,9 +873,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz", - "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", "cpu": [ "arm64" ], @@ -887,9 +887,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz", - "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", "cpu": [ "x64" ], @@ -901,9 +901,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz", - "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", "cpu": [ "arm64" ], @@ -915,9 +915,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz", - "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", "cpu": [ "x64" ], @@ -929,9 +929,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz", - "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", "cpu": [ "arm" ], @@ -943,9 +943,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz", - "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", "cpu": [ "arm" ], @@ -957,9 +957,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz", - "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", "cpu": [ "arm64" ], @@ -971,9 +971,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz", - "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", "cpu": [ "arm64" ], @@ -985,9 +985,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz", - "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", "cpu": [ "loong64" ], @@ -999,9 +999,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz", - "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", "cpu": [ "ppc64" ], @@ -1013,9 +1013,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz", - "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", "cpu": [ "riscv64" ], @@ -1027,9 +1027,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz", - "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", "cpu": [ "riscv64" ], @@ -1041,9 +1041,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz", - "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", "cpu": [ "s390x" ], @@ -1055,9 +1055,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz", - "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", "cpu": [ "x64" ], @@ -1069,9 +1069,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz", - "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", "cpu": [ "x64" ], @@ -1083,9 +1083,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz", - "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", "cpu": [ "arm64" ], @@ -1097,9 +1097,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz", - "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", "cpu": [ "ia32" ], @@ -1111,9 +1111,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz", - "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", "cpu": [ "x64" ], @@ -1146,9 +1146,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.86", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz", - "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==", + "version": "18.19.87", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.87.tgz", + "integrity": "sha512-OIAAu6ypnVZHmsHCeJ+7CCSub38QNBS9uceMQeg7K5Ur0Jr+wG9wEOEvvMbhp09pxD5czIUy/jND7s7Tb6Nw7A==", "dev": true, "license": "MIT", "dependencies": { @@ -3754,9 +3754,9 @@ "license": "MIT" }, "node_modules/portfinder": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.35.tgz", - "integrity": "sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==", + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.36.tgz", + "integrity": "sha512-gMKUzCoP+feA7t45moaSx7UniU7PgGN3hA8acAB+3Qn7/js0/lJ07fYZlxt9riE9S3myyxDCyAFzSrLlta0c9g==", "dev": true, "license": "MIT", "dependencies": { @@ -3945,9 +3945,9 @@ } }, "node_modules/rollup": { - "version": "4.39.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz", - "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", "dev": true, "license": "MIT", "dependencies": { @@ -3961,26 +3961,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.39.0", - "@rollup/rollup-android-arm64": "4.39.0", - "@rollup/rollup-darwin-arm64": "4.39.0", - "@rollup/rollup-darwin-x64": "4.39.0", - "@rollup/rollup-freebsd-arm64": "4.39.0", - "@rollup/rollup-freebsd-x64": "4.39.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.39.0", - "@rollup/rollup-linux-arm-musleabihf": "4.39.0", - "@rollup/rollup-linux-arm64-gnu": "4.39.0", - "@rollup/rollup-linux-arm64-musl": "4.39.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.39.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0", - "@rollup/rollup-linux-riscv64-gnu": "4.39.0", - "@rollup/rollup-linux-riscv64-musl": "4.39.0", - "@rollup/rollup-linux-s390x-gnu": "4.39.0", - "@rollup/rollup-linux-x64-gnu": "4.39.0", - "@rollup/rollup-linux-x64-musl": "4.39.0", - "@rollup/rollup-win32-arm64-msvc": "4.39.0", - "@rollup/rollup-win32-ia32-msvc": "4.39.0", - "@rollup/rollup-win32-x64-msvc": "4.39.0", + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", "fsevents": "~2.3.2" } }, @@ -4217,9 +4217,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", - "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, "license": "MIT" }, @@ -4434,31 +4434,31 @@ } }, "node_modules/typir": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/typir/-/typir-0.2.0.tgz", - "integrity": "sha512-V/7Mx5PlXMce9GOwKnzeFQKQ+cwosMW12oibN42HMSAx7Adbj2g6TcXVmudRQAkQ17n1/mNi4o1KF1LBD50Cvg==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/typir/-/typir-0.2.1.tgz", + "integrity": "sha512-OkW/ZDKQmeOLyMcRCn/O/D45GhzWas148oRwxZmoQTw5N2+KkjtZqNL1h3RHSubLDTCMlOWnrlvXr2Pxsce0KQ==", "license": "MIT", "engines": { "node": ">= 18.0.0" } }, "node_modules/typir-langium": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/typir-langium/-/typir-langium-0.2.0.tgz", - "integrity": "sha512-u1XpI+r5bd1A95G3Z2bjEfPq7jIJRvM7aDBxnIuBIoVw9OV/ggNVhI19Yz23OSJCoMyOGwK3b79/sSuCqwzNSw==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/typir-langium/-/typir-langium-0.2.1.tgz", + "integrity": "sha512-Uu7eV+yu++g93eISWrzajCeqGNZvQZsPRdrV+g3lnFVrCmlvSmX9p2b18ysWNcCS4xTZNJfIIrmNY3z2d22ldQ==", "license": "MIT", "dependencies": { "langium": "~3.4.0", - "typir": "~0.2.0" + "typir": "~0.2.1" }, "engines": { "node": ">= 18.0.0" } }, "node_modules/ufo": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", "dev": true, "license": "MIT" }, @@ -4509,9 +4509,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.17", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.17.tgz", - "integrity": "sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg==", + "version": "5.4.18", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.18.tgz", + "integrity": "sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 71ac1a8..3bedb79 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,9 +1,128 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; -import { RCheckAstType } from "./generated/ast.js"; +import { + BinExpr, + isBinExpr, + isBoolLiteral, + isLocal, + isMsgStruct, + isMyself, + isNeg, + isNumberLiteral, + isParam, + isPropVar, + isUMinus, + Local, + MsgStruct, + Neg, + Param, + PropVar, + RCheckAstType, + SupplyLocationExpr, + UMinus, +} from "./generated/ast.js"; import { AstNode } from "langium"; +import { InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, InferenceRuleNotApplicable } from "typir"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { - onInitialize(typir: TypirLangiumServices): void {} + onInitialize(typir: TypirLangiumServices): void { + // Define the primitive types + const typeBool = typir.factory.Primitives.create({ primitiveName: "bool" }) + .inferenceRule({ filter: isBoolLiteral }) + .inferenceRule({ + languageKey: [Local, Param, MsgStruct, PropVar], + matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "bool", + }) + .finish(); + const typeInt = typir.factory.Primitives.create({ + primitiveName: "int", + }) + .inferenceRule({ filter: isNumberLiteral }) + .inferenceRule({ + languageKey: [Local, Param, MsgStruct, PropVar], + matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "int", + }) + .finish(); + const typeLocation = typir.factory.Primitives.create({ primitiveName: "location" }) + .inferenceRule({ + languageKey: [Local, Param, MsgStruct, PropVar], + matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "location", + }) + .inferenceRule({ filter: isMyself }) + .inferenceRule({ + languageKey: SupplyLocationExpr, + matching: (node: SupplyLocationExpr) => node.myself !== undefined || node.any !== undefined, + }) + .finish(); + + // Inference rules for binary and unary operators + const binaryInferenceRule: InferOperatorWithMultipleOperands = { + filter: isBinExpr, + matching: (node: BinExpr, name: string) => node.operator === name, + operands: (node: BinExpr, _name: string) => [node.left, node.right], + validateArgumentsOfCalls: true, + }; + type UnaryExpression = UMinus | Neg; + function isUnaryExpression(node: AstNode, _name: string): node is UnaryExpression { + return isUMinus(node) || isNeg(node); + } + const unaryInferenceRule: InferOperatorWithSingleOperand = { + filter: isUnaryExpression, + matching: (node: UnaryExpression, name: string) => node.operator === name, + operand: (node: UnaryExpression, _name: string) => node.expr, + validateArgumentsOfCalls: true, + }; + + // Binary operators + for (const operator of ["+", "-", "*", "/"]) { + typir.factory.Operators.createBinary({ + name: operator, + signature: { left: typeInt, right: typeInt, return: typeInt }, + }) + .inferenceRule(binaryInferenceRule) + .finish(); + } + for (const operator of ["<", "<=", ">", ">="]) { + typir.factory.Operators.createBinary({ + name: operator, + signature: { left: typeInt, right: typeInt, return: typeBool }, + }) + .inferenceRule(binaryInferenceRule) + .finish(); + } + // The syntax allows this only for numbers, but the type system allows it for all types + for (const operator of ["=", "!=", "=="]) { + typir.factory.Operators.createBinary({ + name: operator, + signatures: [ + { left: typeInt, right: typeInt, return: typeBool }, + { left: typeBool, right: typeBool, return: typeBool }, + { left: typeLocation, right: typeLocation, return: typeBool }, + ], + }) + .inferenceRule(binaryInferenceRule) + .finish(); + } + + // Unary operators + typir.factory.Operators.createUnary({ name: "-", signature: { operand: typeInt, return: typeInt } }) + .inferenceRule(unaryInferenceRule) + .finish(); + typir.factory.Operators.createUnary({ name: "!", signature: { operand: typeBool, return: typeBool } }) + .inferenceRule(unaryInferenceRule) + .finish(); + + // Handle variable references + typir.Inference.addInferenceRulesForAstNodes({ + Ref: (languageNode) => { + const ref = languageNode.variable.ref; + if (isLocal(ref) || isParam(ref) || isMsgStruct(ref) || isPropVar(ref)) { + return ref; + } else { + return InferenceRuleNotApplicable; + } + }, + }); + } onNewAstNode(languageNode: AstNode, typir: TypirLangiumServices): void {} } diff --git a/src/language/r-check-validator.ts b/src/language/r-check-validator.ts index 6ccd868..7041b82 100644 --- a/src/language/r-check-validator.ts +++ b/src/language/r-check-validator.ts @@ -1,5 +1,5 @@ import { AstNode, AstUtils, NamedAstNode, ValidationAcceptor, ValidationChecks, isAstNode, isNamed } from 'langium'; -import { Agent, Model, RCheckAstType, isAssign, isBox, isCompoundExpr, isDiamond, isExpr, isFinally, isGlobally, isLocal, isLtolQuant, isNext, isParam, isProcess } from './generated/ast.js'; +import { Agent, Model, RCheckAstType, isAssign, isBinExpr, isBox, isCompoundExpr, isDiamond, isFinally, isGlobally, isLocal, isLtolQuant, isNext, isParam, isProcess } from './generated/ast.js'; import type { RCheckServices } from './r-check-module.js'; /** @@ -20,11 +20,11 @@ function checkForLtol(node: AstNode, accept: ValidationAcceptor): void { if ( isDiamond(node) || isBox(node) || isFinally(node) || isGlobally(node) || isNext(node) - || (isCompoundExpr(node) && "RUW".indexOf(node.operator || " ") != -1) + || (isBinExpr(node) && "RUW".indexOf(node.operator || " ") != -1) ) { accept("error", "LTOL not allowed here", {node: node}) } - if (isExpr(node)) { + if (isCompoundExpr(node)) { AstUtils.streamContents(node).forEach(n => checkForLtol(n, accept)); } } diff --git a/src/language/r-check.langium b/src/language/r-check.langium index 952f2f6..69c7abf 100644 --- a/src/language/r-check.langium +++ b/src/language/r-check.langium @@ -91,30 +91,32 @@ Param: TypedDeclaration; MsgStruct: TypedDeclaration; PropVar: TypedDeclaration; - CompoundExpr: - left=Comparison ({infer CompoundExpr.left=current} operator=('&'|'|'|'->'|'U'|'R'|'W') right=Comparison)*; + AddSub; + +Logical infers CompoundExpr: + Comparison ({infer BinExpr.left=current} operator=('&'|'|'|'->'|'U'|'R'|'W') right=Comparison)*; -Comparison: - left=AddSub ({infer Comparison.left=current} operator=('<'|'<='|'>'|'>='|'='|'!='|'==') right=AddSub)?; +Comparison infers CompoundExpr: + BaseExpr ({infer BinExpr.left=current} operator=('<'|'<='|'>'|'>='|'='|'!='|'==') right=BaseExpr)?; -AddSub: +AddSub infers CompoundExpr: MulDiv ({infer BinExpr.left=current} operator=('+' | '-') right=MulDiv)*; -MulDiv: - BaseExpr ({infer BinExpr.left=current} operator=('*' | '/') right=BaseExpr)*; +MulDiv infers CompoundExpr: + Logical ({infer BinExpr.left=current} operator=('*' | '/') right=Logical)*; Qualifier : Instance | LtolQuant; -BaseExpr: - '(' CompoundExpr ')' +BaseExpr infers CompoundExpr: + '(' AddSub ')' | {infer AutomatonState} instance=[Instance] '-automaton-state' | {infer QualifiedRef} instance=[Qualifier] '-' variable=[Target] | {infer Ref} variable=[Target] | {infer PropVarRef} variable=[PropVar:PV] - | {infer UMinus} '-' expr=BaseExpr - | {infer Neg} '!' expr=BaseExpr - | {infer Ref} currentChannel='chan' + | {infer UMinus} operator='-' expr=BaseExpr + | {infer Neg} operator='!' expr=BaseExpr + | {infer ChannelRef} currentChannel='chan' | {infer Myself} myself='myself' | {infer Broadcast} value="*" | {infer NumberLiteral} value=INT @@ -124,8 +126,6 @@ BaseExpr: | {infer LtolBase} LtolBase ; -type Expr = BaseExpr | BinExpr | CompoundExpr | Comparison ; - Ltol: (quants+=LtolQuant)* expr=CompoundExpr; LtolQuant: op=('forall'|'exists') name=ID ':' (anyKind='Agent' | kinds+=[Agent] ('|' kinds+=[Agent])*) '.'; From e115daa7b59601553727038dcd7e9c65a27fabeb Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Mon, 5 May 2025 23:41:43 +0200 Subject: [PATCH 07/49] add user defined enum types (not working) --- src/language/r-check-type-checking.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 3bedb79..cbdbccc 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,8 +1,10 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; import { BinExpr, + Case, isBinExpr, isBoolLiteral, + isEnum, isLocal, isMsgStruct, isMyself, @@ -124,5 +126,19 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition): void {} + onNewAstNode(languageNode: AstNode, typir: TypirLangiumServices): void { + // TODO fix extension crashing + if (isEnum(languageNode)) { + typir.factory.Primitives.create({ primitiveName: languageNode.name }) + .inferenceRule({ + languageKey: [Local, Param, MsgStruct, PropVar], + matching: (node: Local | Param | MsgStruct | PropVar) => languageNode === node.customType?.ref, + }) + .inferenceRule({ + languageKey: [Case], + matching: (node: Case) => languageNode === node.$container, + }) + .finish(); + } + } } From c2279f3601651ce913088304b1a88c72835cd736 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Tue, 6 May 2025 23:24:12 +0200 Subject: [PATCH 08/49] add debugging messages and try checking for duplicate primitives --- src/language/r-check-type-checking.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index cbdbccc..50995f5 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -127,8 +127,13 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition): void { - // TODO fix extension crashing + console.log(`Encountered node type: ${languageNode.$type}`); if (isEnum(languageNode)) { + // Check for duplicate enum definitions. Remove the if statement to encounter language server crash + /* if (typir.factory.Primitives.get({ primitiveName: languageNode.name })) { + console.log(`Found duplicate enum definition with name ${languageNode.name} in this scope.`); + return; + } */ typir.factory.Primitives.create({ primitiveName: languageNode.name }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], From c4e96c07ac924758c37ad0d0385ad0fa4b566778 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Wed, 7 May 2025 23:20:36 +0200 Subject: [PATCH 09/49] fix enum definitions and update equality/inequality operator to work with any type --- src/language/r-check-type-checking.ts | 43 +++++++++++++++++---------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 50995f5..e8c4ad1 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -4,6 +4,7 @@ import { Case, isBinExpr, isBoolLiteral, + isCase, isEnum, isLocal, isMsgStruct, @@ -44,7 +45,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "int", }) .finish(); - const typeLocation = typir.factory.Primitives.create({ primitiveName: "location" }) + typir.factory.Primitives.create({ primitiveName: "location" }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "location", @@ -55,6 +56,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.myself !== undefined || node.any !== undefined, }) .finish(); + const anyType = typir.factory.Top.create({}).finish(); // Inference rules for binary and unary operators const binaryInferenceRule: InferOperatorWithMultipleOperands = { @@ -95,13 +97,20 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { const ref = languageNode.variable.ref; - if (isLocal(ref) || isParam(ref) || isMsgStruct(ref) || isPropVar(ref)) { + if (isLocal(ref) || isParam(ref) || isMsgStruct(ref) || isPropVar(ref) || isCase(ref)) { return ref; } else { return InferenceRuleNotApplicable; @@ -127,14 +136,18 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition): void { - console.log(`Encountered node type: ${languageNode.$type}`); if (isEnum(languageNode)) { - // Check for duplicate enum definitions. Remove the if statement to encounter language server crash - /* if (typir.factory.Primitives.get({ primitiveName: languageNode.name })) { - console.log(`Found duplicate enum definition with name ${languageNode.name} in this scope.`); - return; - } */ - typir.factory.Primitives.create({ primitiveName: languageNode.name }) + const documentUri = languageNode.$container.$document?.uri; + if (documentUri === undefined) { + throw new Error("Unable to determine document URI."); // TODO: is error correct solution here? + } + const enumName = `${documentUri}: ${languageNode.name}`; + + // Return early if a primitive with the same name already exists + if (typir.factory.Primitives.get({ primitiveName: enumName })) return; + + // Create new enum type + typir.factory.Primitives.create({ primitiveName: enumName }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], matching: (node: Local | Param | MsgStruct | PropVar) => languageNode === node.customType?.ref, From 70f4ef053dc413d48811ef6df6c6be4f312ddbb8 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 8 May 2025 14:06:35 +0200 Subject: [PATCH 10/49] add inference rules for chan and * keywords, type-check relabels, and add TODOs --- src/language/r-check-type-checking.ts | 42 ++++++++++++++++++++++++--- src/language/r-check.langium | 2 +- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index e8c4ad1..a54114b 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,7 +1,9 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; import { BinExpr, + Broadcast, Case, + ChannelRef, isBinExpr, isBoolLiteral, isCase, @@ -13,6 +15,7 @@ import { isNumberLiteral, isParam, isPropVar, + isRelabel, isUMinus, Local, MsgStruct, @@ -56,7 +59,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.myself !== undefined || node.any !== undefined, }) .finish(); - const anyType = typir.factory.Top.create({}).finish(); + const typeAny = typir.factory.Top.create({}).finish(); // Inference rules for binary and unary operators const binaryInferenceRule: InferOperatorWithMultipleOperands = { @@ -97,7 +100,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, + operands: (node) => [node.var.ref!, node.expr], // TODO: take care of "!", find out if this is an issue + validation: (node, _operatorName, _operatorType, accept, typir) => + typir.validation.Constraints.ensureNodeIsAssignable(node.expr, node.var.ref, accept, (actual, expected) => ({ + message: `Variable of type '${expected.name}' cannot be relabeled with expression of type '${actual.name}'.`, + languageNode: node, + languageProperty: "expr", + severity: "error", + })), + }) + .finish(); // Unary operators typir.factory.Operators.createUnary({ name: "-", signature: { operand: typeInt, return: typeInt } }) @@ -132,6 +152,14 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + const ref = languageNode.variable.ref; + if (isPropVar(ref)) { + return ref; + } else { + return InferenceRuleNotApplicable; + } + }, }); } @@ -141,7 +169,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition languageNode === node.customType?.ref, }) .inferenceRule({ - languageKey: [Case], + languageKey: Case, matching: (node: Case) => languageNode === node.$container, }) + // TODO: solve the case where no enum named "channel" exists + // (always create "channel" enum onInizialize and only extend it here) + .inferenceRule({ + languageKey: [ChannelRef, Broadcast], + matching: () => languageNode.name === "channel", + }) .finish(); } } diff --git a/src/language/r-check.langium b/src/language/r-check.langium index 69c7abf..d246438 100644 --- a/src/language/r-check.langium +++ b/src/language/r-check.langium @@ -35,7 +35,7 @@ Agent: 'repeat' ':' repeat=Choice ; -Relabel: var=[PropVar] '<-' CompoundExpr; +Relabel: var=[PropVar] '<-' expr=CompoundExpr; Choice: left=Sequence ({infer Choice.left=current} '+' right=Sequence)*; From 458984bc360ac66240163ee9ef416d937b7f044d Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 15 May 2025 14:22:16 +0200 Subject: [PATCH 11/49] updates to enums and initial agent definition --- src/language/r-check-type-checking.ts | 96 +++++++++++++++++++++++---- 1 file changed, 83 insertions(+), 13 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index a54114b..4f01159 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,32 +1,42 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; import { + Agent, BinExpr, - Broadcast, - Case, - ChannelRef, + Enum, + Instance, + isAgent, isBinExpr, isBoolLiteral, + isBroadcast, isCase, + isChannelRef, isEnum, + isGet, + isInstance, isLocal, + isLtolQuant, isMsgStruct, isMyself, isNeg, isNumberLiteral, isParam, isPropVar, + isReceive, isRelabel, + isSend, + isSupply, isUMinus, Local, MsgStruct, Neg, Param, PropVar, + QualifiedRef, RCheckAstType, SupplyLocationExpr, UMinus, } from "./generated/ast.js"; -import { AstNode } from "langium"; +import { assertUnreachable, AstNode } from "langium"; import { InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, InferenceRuleNotApplicable } from "typir"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { @@ -60,6 +70,18 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.customType?.ref?.name === "channel", + }) + .inferenceRule({ + languageKey: Enum, + matching: (node: Enum) => node.name === "channel", + }) + .finish(); // Inference rules for binary and unary operators const binaryInferenceRule: InferOperatorWithMultipleOperands = { @@ -146,10 +168,33 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { const ref = languageNode.variable.ref; - if (isLocal(ref) || isParam(ref) || isMsgStruct(ref) || isPropVar(ref) || isCase(ref)) { + if (isLocal(ref)) { return ref; - } else { + } else if (isCase(ref)) { + console.log( + `While inferring type for case ${ref.name} at position ${ref.$container.$cstNode?.text}, the type of ${ref.$cstNode?.text} was returned` + ); + return ref.$container; + } else if (isParam(ref)) { + return ref; + } else if (isMsgStruct(ref)) { + return ref; + } else if (isPropVar(ref)) { + return ref; + } else if (isSend(ref)) { + return InferenceRuleNotApplicable; + } else if (isReceive(ref)) { + return InferenceRuleNotApplicable; + } else if (isGet(ref)) { return InferenceRuleNotApplicable; + } else if (isSupply(ref)) { + return InferenceRuleNotApplicable; + } else if (isInstance(ref)) { + return ref; + } else if (ref === undefined) { + return InferenceRuleNotApplicable; + } else { + assertUnreachable(ref); } }, PropVarRef: (languageNode) => { @@ -165,6 +210,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition): void { if (isEnum(languageNode)) { + // Exclude channel enum here + if (languageNode.name === "channel") return; + const documentUri = languageNode.$container.$document?.uri; if (documentUri === undefined) { throw new Error("Unable to determine document URI."); // TODO: is error correct solution here? @@ -181,14 +229,36 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition languageNode === node.customType?.ref, }) .inferenceRule({ - languageKey: Case, - matching: (node: Case) => languageNode === node.$container, + languageKey: Enum, + matching: (node: Enum) => languageNode === node, }) - // TODO: solve the case where no enum named "channel" exists - // (always create "channel" enum onInizialize and only extend it here) - .inferenceRule({ - languageKey: [ChannelRef, Broadcast], - matching: () => languageNode.name === "channel", + .finish(); + } + + if (isAgent(languageNode)) { + const agentName = languageNode.name; + typir.factory.Classes.create({ + className: agentName, + fields: languageNode.locals.map((l) => ({ + name: l.name, + type: (l.builtinType ?? l.rangeType ?? l.customType?.ref)!, + })), + methods: [], + }) + .inferenceRuleForClassDeclaration({ languageKey: Agent, matching: (node: Agent) => languageNode === node }) + .inferenceRuleForClassLiterals({ + languageKey: Instance, + matching: (node: Instance) => isAgent(node.agent.ref) && node.agent.ref.name === agentName, + inputValuesForFields: (_node: Instance) => new Map(), + }) + .inferenceRuleForFieldAccess({ + languageKey: QualifiedRef, + matching: (node: QualifiedRef) => { + const qualifier = node.instance.ref; + if (isLtolQuant(qualifier)) return false; + return qualifier?.agent.ref?.name === agentName; + }, + field: (node: QualifiedRef) => node.variable.ref!, }) .finish(); } From 507ccab1e5f4df2bb750a3ad9b4ba412df459c47 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 15 May 2025 14:50:23 +0200 Subject: [PATCH 12/49] prevent document-scoped names from leaking into global scope and add TODOs --- src/language/r-check-module.ts | 20 +++++++++++--------- src/language/r-check-type-checking.ts | 10 ++++------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/language/r-check-module.ts b/src/language/r-check-module.ts index 58f3836..4819018 100644 --- a/src/language/r-check-module.ts +++ b/src/language/r-check-module.ts @@ -1,7 +1,7 @@ import type { AstNode, AstNodeDescription, LangiumDocument, LangiumSharedCoreServices, Module, PrecomputedScopes, ReferenceInfo, Scope } from 'langium'; import { AstUtils, DefaultScopeComputation, DefaultScopeProvider, inject } from 'langium'; import { CancellationToken } from 'vscode-languageserver'; -import { Enum, Model, QualifiedRef, isEnum, isQualifiedRef, isPropVar, isCommand, Command, RCheckAstType, reflection} from './generated/ast.js'; +import { Model, QualifiedRef, isEnum, isQualifiedRef, isPropVar, isCommand, Command, RCheckAstType, reflection} from './generated/ast.js'; import { RCheckGeneratedModule, RCheckGeneratedSharedModule } from './generated/module.js'; import { RCheckValidator, registerValidationChecks } from './r-check-validator.js'; import { createDefaultModule, createDefaultSharedModule, DefaultSharedModuleContext, LangiumServices, LangiumSharedServices, PartialLangiumServices } from 'langium/lsp'; @@ -11,23 +11,25 @@ import { RCheckTypeSystem } from './r-check-type-checking.js'; export class RCheckScopeProvider extends DefaultScopeProvider { override getScope(context: ReferenceInfo): Scope { - const superScope: Scope = super.getScope(context); - const globalDescriptions: AstNodeDescription[] = superScope.getAllElements().toArray(); - const document: LangiumDocument = AstUtils.getDocument(context.container); + const superScope = super.getScope(context); // This is the GLOBAL scope + const document = AstUtils.getDocument(context.container); + + const documentDescriptions: AstNodeDescription[] = []; for (const childNode of AstUtils.streamAllContents(document.parseResult.value)) { // Export enum cases globally (but limited to current file) if (isEnum(childNode)) { - const enumNode: Enum = childNode as Enum; - for(const caseNode of enumNode.cases){ - globalDescriptions.push(this.descriptions.createDescription(caseNode, caseNode.name, document)); + for(const caseNode of childNode.cases){ + documentDescriptions.push(this.descriptions.createDescription(caseNode, caseNode.name, document)); } } // Export @-prefixed names for property variables if (isPropVar(childNode)) { - globalDescriptions.push(this.descriptions.createDescription(childNode, "@" + childNode.name, document)) + documentDescriptions.push(this.descriptions.createDescription(childNode, "@" + childNode.name, document)) } } - return this.createScope(globalDescriptions); + + // Add local names visible only in this document, layered above global scope. + return this.createScope(documentDescriptions, superScope); } } diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 4f01159..f46acdc 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -69,7 +69,6 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.myself !== undefined || node.any !== undefined, }) .finish(); - const typeAny = typir.factory.Top.create({}).finish(); typir.factory.Primitives.create({ primitiveName: "channel" }) .inferenceRule({ filter: isChannelRef }) .inferenceRule({ filter: isBroadcast }) @@ -82,6 +81,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.name === "channel", }) .finish(); + const typeAny = typir.factory.Top.create({}).finish(); // Inference rules for binary and unary operators const binaryInferenceRule: InferOperatorWithMultipleOperands = { @@ -171,9 +171,6 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ name: l.name, - type: (l.builtinType ?? l.rangeType ?? l.customType?.ref)!, + type: l, })), methods: [], }) @@ -251,6 +248,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition isAgent(node.agent.ref) && node.agent.ref.name === agentName, inputValuesForFields: (_node: Instance) => new Map(), }) + // TODO: field access for repeats (also define them as fields) .inferenceRuleForFieldAccess({ languageKey: QualifiedRef, matching: (node: QualifiedRef) => { @@ -258,7 +256,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.variable.ref!, + field: (node: QualifiedRef) => node.variable.ref!, // TODO: can I get rid of "!"? }) .finish(); } From 790c9f1f92ed2d83992636dd1962899555ff39a4 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Fri, 16 May 2025 11:23:07 +0200 Subject: [PATCH 13/49] add guard parameter validation and return type --- src/language/r-check-type-checking.ts | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index f46acdc..0c08d18 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -3,6 +3,8 @@ import { Agent, BinExpr, Enum, + Guard, + GuardCall, Instance, isAgent, isBinExpr, @@ -12,6 +14,7 @@ import { isChannelRef, isEnum, isGet, + isGuard, isInstance, isLocal, isLtolQuant, @@ -37,7 +40,12 @@ import { UMinus, } from "./generated/ast.js"; import { assertUnreachable, AstNode } from "langium"; -import { InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, InferenceRuleNotApplicable } from "typir"; +import { + InferOperatorWithMultipleOperands, + InferOperatorWithSingleOperand, + InferenceRuleNotApplicable, + NO_PARAMETER_NAME, +} from "typir"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { onInitialize(typir: TypirLangiumServices): void { @@ -232,6 +240,26 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ name: p.name, type: p })), + associatedLanguageNode: languageNode, + }) + .inferenceRuleForDeclaration({ + languageKey: Guard, + matching: (node: Guard) => languageNode === node, + }) + .inferenceRuleForCalls({ + languageKey: GuardCall, + matching: (node: GuardCall) => languageNode === node.guard.ref, + inputArguments: (node: GuardCall) => node.args, + validateArgumentsOfFunctionCalls: true, + }) + .finish(); + } + if (isAgent(languageNode)) { const agentName = languageNode.name; typir.factory.Classes.create({ From a61d6ecd9915d8b9672b00dec4e8c2c5c9ade555 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Fri, 16 May 2025 12:33:59 +0200 Subject: [PATCH 14/49] add automaton-state and process names as agent members --- src/language/r-check-type-checking.ts | 56 +++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 8 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 0c08d18..9453ef4 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,6 +1,8 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; import { Agent, + AutomatonState, + BaseProcess, BinExpr, Enum, Guard, @@ -12,6 +14,7 @@ import { isBroadcast, isCase, isChannelRef, + isChoice, isEnum, isGet, isGuard, @@ -26,7 +29,9 @@ import { isPropVar, isReceive, isRelabel, + isRep, isSend, + isSequence, isSupply, isUMinus, Local, @@ -36,6 +41,7 @@ import { PropVar, QualifiedRef, RCheckAstType, + Sequence, SupplyLocationExpr, UMinus, } from "./generated/ast.js"; @@ -224,9 +230,6 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ - name: l.name, - type: l, - })), + fields: [ + ...languageNode.locals.map((l) => ({ + name: l.name, + type: l, + })), + ...this.getProcessNames(languageNode).map((n) => ({ + name: n, + type: "bool", + })), + { name: "automaton-state", type: "int" }, + ], methods: [], }) .inferenceRuleForClassDeclaration({ languageKey: Agent, matching: (node: Agent) => languageNode === node }) @@ -284,9 +294,39 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.variable.ref!, // TODO: can I get rid of "!"? + field: (node: QualifiedRef) => node.variable.ref!.name!, + }) + .inferenceRuleForFieldAccess({ + languageKey: AutomatonState, + matching: (node: AutomatonState) => languageNode === node.instance.ref?.agent.ref, + field: (_node: AutomatonState) => "automaton-state", }) .finish(); } } + + protected getProcessNames(agent: Agent): string[] { + const stack: (BaseProcess | Sequence)[] = [agent.repeat]; + const processNames: string[] = []; + + while (stack.length !== 0) { + const process = stack.pop()!; + if (isSend(process) || isReceive(process) || isGet(process) || isSupply(process)) { + if (process.name) { + processNames.push(process.name); + } + } else if (isChoice(process) || isSequence(process)) { + stack.push(process.left); + if (process.right !== undefined) { + stack.push(process.right); + } + } else if (isRep(process)) { + stack.push(process.process); + } else { + assertUnreachable(process); + } + } + + return processNames; + } } From 605c813419927481afa5ced57a67a0ac39505f04 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Fri, 16 May 2025 14:36:14 +0200 Subject: [PATCH 15/49] add rudimentary range type and type conversions between (agent -> location) and (range -> int), validate agent instance --- src/language/r-check-type-checking.ts | 77 ++++++++++++++++++++++----- 1 file changed, 63 insertions(+), 14 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 9453ef4..405ee90 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -28,6 +28,7 @@ import { isParam, isPropVar, isReceive, + isRef, isRelabel, isRep, isSend, @@ -63,15 +64,23 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "bool", }) .finish(); - const typeInt = typir.factory.Primitives.create({ - primitiveName: "int", - }) + + const typeInt = typir.factory.Primitives.create({ primitiveName: "int" }) .inferenceRule({ filter: isNumberLiteral }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "int", }) .finish(); + + // TODO: define range as subtype of 'int' + const typeRange = typir.factory.Primitives.create({ primitiveName: "range" }) + .inferenceRule({ + languageKey: [Local, Param, MsgStruct, PropVar], + matching: (node: Local | Param | MsgStruct | PropVar) => node.rangeType !== undefined, + }) + .finish(); + typir.factory.Primitives.create({ primitiveName: "location" }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], @@ -83,6 +92,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.myself !== undefined || node.any !== undefined, }) .finish(); + typir.factory.Primitives.create({ primitiveName: "channel" }) .inferenceRule({ filter: isChannelRef }) .inferenceRule({ filter: isBroadcast }) @@ -95,8 +105,12 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.name === "channel", }) .finish(); + const typeAny = typir.factory.Top.create({}).finish(); + // TODO: fix this conversion + typir.Conversion.markAsConvertible(typeRange, typeInt, "IMPLICIT_EXPLICIT"); + // Inference rules for binary and unary operators const binaryInferenceRule: InferOperatorWithMultipleOperands = { filter: isBinExpr, @@ -140,15 +154,29 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition - typir.validation.Constraints.ensureNodeIsEquals(node.left, node.right, accept, (actual, expected) => ({ - message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ - node.left.$cstNode?.text - }' and '${node.right.$cstNode?.text}' have the different types '${actual.name}' and '${expected.name}'.`, - languageNode: node, // Inside the BinaryExpression ... - languageProperty: "operator", // ... mark the '==' or '!=' token, i.e. the 'operator' property - severity: "warning", // Only issue warning because mismatch returns "false" - })), + // TODO: working, but check out if there is a better way then check for assignability + // (best case: keep IsEquals but do type conversion if available) + validation: (node, _operatorName, _operatorType, accept, typir) => { + const nodes = [node.left, node.right]; + if (isRef(node.right) && isInstance(node.right.variable.ref)) { + nodes.reverse(); + } + return typir.validation.Constraints.ensureNodeIsAssignable( + nodes[0], + nodes[1], + accept, + (actual, expected) => ({ + message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ + node.left.$cstNode?.text + }' and '${node.right.$cstNode?.text}' have the different types '${actual.name}' and '${ + expected.name + }'.`, + languageNode: node, // Inside the BinaryExpression ... + languageProperty: "operator", // ... mark the '==' or '!=' token, i.e. the 'operator' property + severity: "warning", // Only issue warning because mismatch returns "false" + }) + ); + }, }) .finish(); } @@ -217,6 +245,18 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + const typeBool = typir.factory.Primitives.get({ primitiveName: "bool" })!; + typir.validation.Constraints.ensureNodeIsAssignable(node.init, typeBool, accept, () => ({ + message: "Agent inititalization needs to evaluate to 'bool'.", + languageProperty: "init", + languageNode: node, + })); + }, + }); } onNewAstNode(languageNode: AstNode, typir: TypirLangiumServices): void { @@ -265,7 +305,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ @@ -286,7 +326,6 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition isAgent(node.agent.ref) && node.agent.ref.name === agentName, inputValuesForFields: (_node: Instance) => new Map(), }) - // TODO: field access for repeats (also define them as fields) .inferenceRuleForFieldAccess({ languageKey: QualifiedRef, matching: (node: QualifiedRef) => { @@ -302,6 +341,16 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition "automaton-state", }) .finish(); + + // Every agent is also a location + // TODO: fix this conversion + agentType.addListener((type) => { + typir.Conversion.markAsConvertible( + type, + typir.factory.Primitives.get({ primitiveName: "location" })!, + "IMPLICIT_EXPLICIT" + ); + }); } } From 7e154304c21e9e6893c46229805a9fc7b295c30c Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sat, 17 May 2025 15:53:43 +0200 Subject: [PATCH 16/49] update language feature names to simplify unary operator definitions in type system --- src/language/r-check.langium | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/language/r-check.langium b/src/language/r-check.langium index d246438..54387bc 100644 --- a/src/language/r-check.langium +++ b/src/language/r-check.langium @@ -131,9 +131,9 @@ Ltol: (quants+=LtolQuant)* expr=CompoundExpr; LtolQuant: op=('forall'|'exists') name=ID ':' (anyKind='Agent' | kinds+=[Agent] ('|' kinds+=[Agent])*) '.'; LtolMod infers Ltol: - {infer Finally} 'F' expr=CompoundExpr - | {infer Globally} 'G' expr=CompoundExpr - | {infer Next} 'X' expr=CompoundExpr + {infer Finally} operator='F' expr=CompoundExpr + | {infer Globally} operator='G' expr=CompoundExpr + | {infer Next} operator='X' expr=CompoundExpr ; LtolBase infers Ltol: @@ -149,8 +149,8 @@ BaseObs : LiteralObs | ChannelObs | SenderObs | ForallObs | ExistsObs; LiteralObs: value=('true'|'false'); ChannelObs: 'chan' ('=='|'='|'!=') (chan=ID | chan='*'); SenderObs: 'sender' ('=='|'='|'!=') sender=ID; -ForallObs: 'forall' '(' (pred=CompoundExpr) ')'; -ExistsObs: 'exists' '(' (pred=CompoundExpr) ')'; +ForallObs: operator='forall' '(' (expr=CompoundExpr) ')'; +ExistsObs: operator='exists' '(' (expr=CompoundExpr) ')'; hidden terminal WS: /\s+/; From c43fffef16c33606926002c48f37e73a032fba97 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sat, 17 May 2025 15:56:35 +0200 Subject: [PATCH 17/49] add unary and binary operators, add validation rule for 'Ltol', and fix type name for enums --- src/language/r-check-type-checking.ts | 112 ++++++++++++++++++++------ 1 file changed, 88 insertions(+), 24 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 405ee90..43db04b 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,14 +1,20 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; import { Agent, + Assign, AutomatonState, BaseProcess, BinExpr, Enum, + ExistsObs, + Finally, + ForallObs, + Globally, Guard, GuardCall, Instance, isAgent, + isAssign, isBinExpr, isBoolLiteral, isBroadcast, @@ -16,10 +22,14 @@ import { isChannelRef, isChoice, isEnum, + isExistsObs, + isForallObs, isGet, isGuard, isInstance, + isLiteralObs, isLocal, + isLtolMod, isLtolQuant, isMsgStruct, isMyself, @@ -38,16 +48,19 @@ import { Local, MsgStruct, Neg, + Next, Param, PropVar, QualifiedRef, RCheckAstType, + Relabel, Sequence, SupplyLocationExpr, UMinus, } from "./generated/ast.js"; import { assertUnreachable, AstNode } from "langium"; import { + AnnotatedTypeAfterValidation, InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, InferenceRuleNotApplicable, @@ -59,6 +72,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "bool", @@ -73,13 +87,14 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.rangeType !== undefined, }) .finish(); + // TODO: fix this conversion + typir.Conversion.markAsConvertible(typeRange, typeInt, "IMPLICIT_EXPLICIT"); typir.factory.Primitives.create({ primitiveName: "location" }) .inferenceRule({ @@ -108,26 +123,13 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition = { filter: isBinExpr, matching: (node: BinExpr, name: string) => node.operator === name, operands: (node: BinExpr, _name: string) => [node.left, node.right], validateArgumentsOfCalls: true, }; - type UnaryExpression = UMinus | Neg; - function isUnaryExpression(node: AstNode, _name: string): node is UnaryExpression { - return isUMinus(node) || isNeg(node); - } - const unaryInferenceRule: InferOperatorWithSingleOperand = { - filter: isUnaryExpression, - matching: (node: UnaryExpression, name: string) => node.operator === name, - operand: (node: UnaryExpression, _name: string) => node.expr, - validateArgumentsOfCalls: true, - }; // Binary operators for (const operator of ["+", "-", "*", "/"]) { @@ -146,6 +148,15 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition"]) { + typir.factory.Operators.createBinary({ + name: operator, + signature: { left: typeBool, right: typeBool, return: typeBool }, + }) + .inferenceRule(binaryInferenceRule) + .finish(); + } // The syntax allows this only for numbers, but the type system allows it for all types for (const operator of ["=", "!=", "=="]) { typir.factory.Operators.createBinary({ @@ -168,9 +179,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ node.left.$cstNode?.text - }' and '${node.right.$cstNode?.text}' have the different types '${actual.name}' and '${ - expected.name - }'.`, + }' and '${node.right.$cstNode?.text}' have the different types '${this.getTypeName( + actual + )}' and '${this.getTypeName(expected)}'.`, languageNode: node, // Inside the BinaryExpression ... languageProperty: "operator", // ... mark the '==' or '!=' token, i.e. the 'operator' property severity: "warning", // Only issue warning because mismatch returns "false" @@ -187,24 +198,66 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, - operands: (node) => [node.var.ref!, node.expr], // TODO: take care of "!", find out if this is an issue + operands: (node: Relabel) => [node.var.ref!, node.expr], // TODO: take care of "!", find out if this is an issue validation: (node, _operatorName, _operatorType, accept, typir) => typir.validation.Constraints.ensureNodeIsAssignable(node.expr, node.var.ref, accept, (actual, expected) => ({ - message: `Variable of type '${expected.name}' cannot be relabeled with expression of type '${actual.name}'.`, + message: `Variable of type '${this.getTypeName( + expected + )}' cannot be relabeled with expression of type '${this.getTypeName(actual)}'.`, languageNode: node, languageProperty: "expr", severity: "error", })), + validateArgumentsOfCalls: true, + }) + .finish(); + typir.factory.Operators.createBinary({ + name: ":=", + signature: { left: typeAny, right: typeAny, return: typeAny }, + }) + .inferenceRule({ + filter: isAssign, + matching: () => true, + operands: (node: Assign) => [node.left.ref!, node.right], + validation: (node, _operatorName, _operatorType, accept, typir) => + typir.validation.Constraints.ensureNodeIsAssignable( + node.right, + node.left.ref, + accept, + (actual, expected) => ({ + message: `Expression of type '${this.getTypeName( + actual + )}' cannot be assigned to variable of type '${this.getTypeName(expected)}'.`, + languageNode: node, + languageProperty: "expr", + severity: "error", + }) + ), + validateArgumentsOfCalls: true, }) .finish(); + // Inference rule for unary opterators + type UnaryExpression = UMinus | Neg | Finally | Globally | Next | ForallObs | ExistsObs; + const isUnaryExpression = (node: AstNode, _name: string): node is UnaryExpression => { + return isUMinus(node) || isNeg(node) || isLtolMod(node) || isForallObs(node) || isExistsObs(node); + }; + const unaryInferenceRule: InferOperatorWithSingleOperand = { + filter: isUnaryExpression, + matching: (node: UnaryExpression, name: string) => node.operator === name, + operand: (node: UnaryExpression, _name: string) => node.expr, + validateArgumentsOfCalls: true, + }; + // Unary operators typir.factory.Operators.createUnary({ name: "-", signature: { operand: typeInt, return: typeInt } }) .inferenceRule(unaryInferenceRule) .finish(); - typir.factory.Operators.createUnary({ name: "!", signature: { operand: typeBool, return: typeBool } }) - .inferenceRule(unaryInferenceRule) - .finish(); + for (const operator of ["!", "F", "G", "X", "forall", "exists"]) { + typir.factory.Operators.createUnary({ name: operator, signature: { operand: typeBool, return: typeBool } }) + .inferenceRule(unaryInferenceRule) + .finish(); + } // Handle variable references typir.Inference.addInferenceRulesForAstNodes({ @@ -249,13 +302,19 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { - const typeBool = typir.factory.Primitives.get({ primitiveName: "bool" })!; typir.validation.Constraints.ensureNodeIsAssignable(node.init, typeBool, accept, () => ({ message: "Agent inititalization needs to evaluate to 'bool'.", languageProperty: "init", languageNode: node, })); }, + Ltol: (node, accept, typir) => { + typir.validation.Constraints.ensureNodeIsAssignable(node.expr, typeBool, accept, () => ({ + message: "SPEC needs to evaluate to 'bool'.", + languageProperty: "expr", + languageNode: node, + })); + }, }); } @@ -378,4 +437,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition Date: Thu, 22 May 2025 23:00:03 +0200 Subject: [PATCH 18/49] remove subtype relations, simplify code, add remaining obs operators --- src/language/r-check-type-checking.ts | 180 +++++++++++++++----------- src/language/r-check.langium | 6 +- 2 files changed, 111 insertions(+), 75 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 43db04b..b88a122 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -5,6 +5,9 @@ import { AutomatonState, BaseProcess, BinExpr, + BinObs, + Box, + Diamond, Enum, ExistsObs, Finally, @@ -12,15 +15,18 @@ import { Globally, Guard, GuardCall, - Instance, isAgent, isAssign, isBinExpr, + isBinObs, isBoolLiteral, + isBox, isBroadcast, isCase, + isChannelObs, isChannelRef, isChoice, + isDiamond, isEnum, isExistsObs, isForallObs, @@ -38,10 +44,10 @@ import { isParam, isPropVar, isReceive, - isRef, isRelabel, isRep, isSend, + isSenderObs, isSequence, isSupply, isUMinus, @@ -73,6 +79,8 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "bool", @@ -83,19 +91,11 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "int", + matching: (node: Local | Param | MsgStruct | PropVar) => + node.builtinType === "int" || node.rangeType !== undefined, }) .finish(); - const typeRange = typir.factory.Primitives.create({ primitiveName: "range" }) - .inferenceRule({ - languageKey: [Local, Param, MsgStruct, PropVar], - matching: (node: Local | Param | MsgStruct | PropVar) => node.rangeType !== undefined, - }) - .finish(); - // TODO: fix this conversion - typir.Conversion.markAsConvertible(typeRange, typeInt, "IMPLICIT_EXPLICIT"); - typir.factory.Primitives.create({ primitiveName: "location" }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], @@ -106,9 +106,10 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.myself !== undefined || node.any !== undefined, }) + .inferenceRule({ filter: isInstance }) .finish(); - typir.factory.Primitives.create({ primitiveName: "channel" }) + const typeChannel = typir.factory.Primitives.create({ primitiveName: "channel" }) .inferenceRule({ filter: isChannelRef }) .inferenceRule({ filter: isBroadcast }) .inferenceRule({ @@ -127,7 +128,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition = { filter: isBinExpr, matching: (node: BinExpr, name: string) => node.operator === name, - operands: (node: BinExpr, _name: string) => [node.left, node.right], + operands: (node: BinExpr) => [node.left, node.right], validateArgumentsOfCalls: true, }; @@ -165,29 +166,17 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { - const nodes = [node.left, node.right]; - if (isRef(node.right) && isInstance(node.right.variable.ref)) { - nodes.reverse(); - } - return typir.validation.Constraints.ensureNodeIsAssignable( - nodes[0], - nodes[1], - accept, - (actual, expected) => ({ - message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ - node.left.$cstNode?.text - }' and '${node.right.$cstNode?.text}' have the different types '${this.getTypeName( - actual - )}' and '${this.getTypeName(expected)}'.`, - languageNode: node, // Inside the BinaryExpression ... - languageProperty: "operator", // ... mark the '==' or '!=' token, i.e. the 'operator' property - severity: "warning", // Only issue warning because mismatch returns "false" - }) - ); - }, + validation: (node, _operatorName, _operatorType, accept, typir) => + typir.validation.Constraints.ensureNodeIsEquals(node.left, node.right, accept, (actual, expected) => ({ + message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ + node.left.$cstNode?.text + }' and '${node.right.$cstNode?.text}' have the different types '${this.getTypeName( + actual + )}' and '${this.getTypeName(expected)}'.`, + languageNode: node, // Inside the BinaryExpression ... + languageProperty: "operator", // ... mark the '==' or '!=' token, i.e. the 'operator' property + severity: "warning", // Only issue warning because mismatch returns "false" + })), }) .finish(); } @@ -236,16 +225,48 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition", "<->"]) { + typir.factory.Operators.createBinary({ + name: operator, + signature: { left: typeBool, right: typeBool, return: typeBool }, + }) + .inferenceRule({ + filter: isBinObs, + matching: (node: BinObs, name: string) => node.operator === name, + operands: (node: BinObs) => [node.left, node.right], + validateArgumentsOfCalls: true, + }) + .finish(); + } + for (const operator of ["Diamond", "Box"]) { + typir.factory.Operators.createBinary({ + name: operator, + signature: { left: typeBool, right: typeBool, return: typeBool }, + }) + .inferenceRule({ + filter: isDiamond, + matching: (_node: Diamond, name: string) => name === "Diamond", + operands: (node: Diamond) => [node.obs, node.expr], + validateArgumentsOfCalls: true, + }) + .inferenceRule({ + filter: isBox, + matching: (_node: Box, name: string) => name === "Box", + operands: (node: Box) => [node.obs, node.expr], + validateArgumentsOfCalls: true, + }) + .finish(); + } // Inference rule for unary opterators type UnaryExpression = UMinus | Neg | Finally | Globally | Next | ForallObs | ExistsObs; - const isUnaryExpression = (node: AstNode, _name: string): node is UnaryExpression => { + const isUnaryExpression = (node: AstNode): node is UnaryExpression => { return isUMinus(node) || isNeg(node) || isLtolMod(node) || isForallObs(node) || isExistsObs(node); }; const unaryInferenceRule: InferOperatorWithSingleOperand = { filter: isUnaryExpression, matching: (node: UnaryExpression, name: string) => node.operator === name, - operand: (node: UnaryExpression, _name: string) => node.expr, + operand: (node: UnaryExpression) => node.expr, validateArgumentsOfCalls: true, }; @@ -297,6 +318,28 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + const instance = languageNode.instance.ref; + if (isInstance(instance)) { + // Case already handled in class declaration + return InferenceRuleNotApplicable; + } else if (isLtolQuant(instance)) { + if (instance.kinds.some((k) => k.ref?.name === undefined)) { + throw new Error("Not a valid agent instance."); + } + //const agents = instance.kinds.map((k) => typir.factory.Classes.get(k.ref?.name!)); + // TODO: Add inference rule for LtolQuant + // get fields of all the classes, do set intersection, infer type if still in set + // else issue warning? + //const fields = agents[0].getType()?.getFields(false); + // TODO: return correct type + return InferenceRuleNotApplicable; + } else if (instance === undefined) { + return InferenceRuleNotApplicable; + } else { + assertUnreachable(instance); + } + }, }); // TODO: maybe this validation rule can be implemented upon class creation @@ -315,6 +358,15 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + // Do not need to check broadcast symbol + if (node.bcast !== undefined) return; + typir.validation.Constraints.ensureNodeIsAssignable(node.chan?.ref?.$container, typeChannel, accept, () => ({ + message: "Channel reference needs to evaluate to 'channel'.", + languageProperty: "chan", + languageNode: node, + })); + }, }); } @@ -323,13 +375,11 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ name: p.name, type: p })), associatedLanguageNode: languageNode, }) @@ -364,52 +416,36 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ - name: l.name, - type: l, - })), - ...this.getProcessNames(languageNode).map((n) => ({ - name: n, - type: "bool", - })), { name: "automaton-state", type: "int" }, + ...languageNode.locals.map((l) => ({ name: l.name, type: l })), + ...this.getProcessNames(languageNode).map((n) => ({ name: n, type: "bool" })), ], methods: [], }) - .inferenceRuleForClassDeclaration({ languageKey: Agent, matching: (node: Agent) => languageNode === node }) - .inferenceRuleForClassLiterals({ - languageKey: Instance, - matching: (node: Instance) => isAgent(node.agent.ref) && node.agent.ref.name === agentName, - inputValuesForFields: (_node: Instance) => new Map(), + .inferenceRuleForClassDeclaration({ + languageKey: Agent, + matching: (node: Agent) => languageNode === node, }) .inferenceRuleForFieldAccess({ languageKey: QualifiedRef, matching: (node: QualifiedRef) => { const qualifier = node.instance.ref; + // Handle LtolQuant inference seperately if (isLtolQuant(qualifier)) return false; - return qualifier?.agent.ref?.name === agentName; + + return qualifier?.agent.ref === languageNode; }, field: (node: QualifiedRef) => node.variable.ref!.name!, }) .inferenceRuleForFieldAccess({ languageKey: AutomatonState, matching: (node: AutomatonState) => languageNode === node.instance.ref?.agent.ref, - field: (_node: AutomatonState) => "automaton-state", + field: () => "automaton-state", }) .finish(); - - // Every agent is also a location - // TODO: fix this conversion - agentType.addListener((type) => { - typir.Conversion.markAsConvertible( - type, - typir.factory.Primitives.get({ primitiveName: "location" })!, - "IMPLICIT_EXPLICIT" - ); - }); } } @@ -431,14 +467,14 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition Date: Sat, 24 May 2025 20:04:57 +0200 Subject: [PATCH 19/49] add inference rule for LtolQuant --- src/language/r-check-type-checking.ts | 81 ++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 8 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index b88a122..4846d19 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -71,6 +71,8 @@ import { InferOperatorWithSingleOperand, InferenceRuleNotApplicable, NO_PARAMETER_NAME, + Type, + isClassType, } from "typir"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { @@ -324,16 +326,47 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition k.ref?.name === undefined)) { + if (instance.kinds.some((k) => k.ref === undefined)) { throw new Error("Not a valid agent instance."); } - //const agents = instance.kinds.map((k) => typir.factory.Classes.get(k.ref?.name!)); - // TODO: Add inference rule for LtolQuant - // get fields of all the classes, do set intersection, infer type if still in set - // else issue warning? - //const fields = agents[0].getType()?.getFields(false); - // TODO: return correct type - return InferenceRuleNotApplicable; + + const agentFields = instance.kinds.map((k) => { + const agentType = typir.Inference.inferType(k.ref!); + + if (agentType instanceof Type) { + if (isClassType(agentType)) { + return agentType.getFields(false); + } else { + throw new Error("Encountered unexpected non-class type."); + } + } else if (agentType instanceof Array) { + throw new Error("Unexpected inference problem."); + } else { + assertUnreachable(agentType); + } + }); + + const intersection = this.intersectMaps(agentFields); + const variableType = intersection.get(languageNode.variable.$refText); + + if (variableType === undefined) { + // Field does not exist on agent intersection + typir.validation.Collector.addValidationRule((node, accept) => { + if (node === languageNode) { + accept({ + languageNode: node, + languageProperty: "variable", + severity: "error", + message: `Property '${languageNode.variable.$refText}' does not exist on type '${instance.kinds + .map((k) => k.ref?.name) + .join(" | ")}'.`, + }); + } + }); + return typeAny; + } else { + return variableType; + } } else if (instance === undefined) { return InferenceRuleNotApplicable; } else { @@ -478,4 +511,36 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition(maps: Map[]): Map { + if (maps.length === 0) { + return new Map(); + } + if (maps.length === 1) { + return new Map(maps[0]); + } + + const resultMap = new Map(); + const firstMap = maps[0]; + + // Iterate over the entries of the first map + for (const [key, value] of firstMap.entries()) { + let isInAllMaps = true; + + // Check if this key exists in all other maps with the same value + for (let i = 1; i < maps.length; i++) { + const currentMap = maps[i]; + if (!currentMap.has(key) || currentMap.get(key) !== value) { + isInAllMaps = false; + break; + } + } + // If the key and value matched across all maps, add it to the result + if (isInAllMaps) { + resultMap.set(key, value); + } + } + + return resultMap; + } } From 068d574be7be33b21b9a08c50dfdb00e85d8c53c Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Fri, 30 May 2025 00:15:35 +0200 Subject: [PATCH 20/49] add range type, update operators for range and int, add custom range checks to comparison operator --- src/language/r-check-type-checking.ts | 155 ++++++++++++++++++++++---- 1 file changed, 134 insertions(+), 21 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 4846d19..6ccdcfc 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -7,6 +7,7 @@ import { BinExpr, BinObs, Box, + CompoundExpr, Diamond, Enum, ExistsObs, @@ -43,7 +44,9 @@ import { isNumberLiteral, isParam, isPropVar, + isRange, isReceive, + isRef, isRelabel, isRep, isSend, @@ -55,6 +58,7 @@ import { MsgStruct, Neg, Next, + NumberLiteral, Param, PropVar, QualifiedRef, @@ -72,9 +76,13 @@ import { InferenceRuleNotApplicable, NO_PARAMETER_NAME, Type, + TypirServices, isClassType, } from "typir"; +// TODO: replace by class with class methods (a.contains(b), a.intersects(b))? +type RangeBounds = { lower: number; upper: number }; + export class RCheckTypeSystem implements LangiumTypeSystemDefinition { onInitialize(typir: TypirLangiumServices): void { // Define the primitive types @@ -90,14 +98,30 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.value < 0, + }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], - matching: (node: Local | Param | MsgStruct | PropVar) => - node.builtinType === "int" || node.rangeType !== undefined, + matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "int", }) .finish(); + const typeRange = typir.factory.Primitives.create({ primitiveName: "range" }) + .inferenceRule({ + languageKey: NumberLiteral, + matching: (node: NumberLiteral) => node.value >= 0, + }) + .inferenceRule({ filter: isRange }) + .inferenceRule({ + languageKey: [Local, Param, MsgStruct, PropVar], + matching: (node: Local | Param | MsgStruct | PropVar) => node.rangeType !== undefined, + }) + .finish(); + + typir.Conversion.markAsConvertible(typeRange, typeInt, "IMPLICIT_EXPLICIT"); + typir.factory.Primitives.create({ primitiveName: "location" }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], @@ -138,15 +162,25 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition", ">="]) { typir.factory.Operators.createBinary({ name: operator, - signature: { left: typeInt, right: typeInt, return: typeBool }, + signatures: [ + { left: typeInt, right: typeInt, return: typeBool }, + { left: typeRange, right: typeRange, return: typeBool }, + { left: typeInt, right: typeRange, return: typeBool }, + { left: typeRange, right: typeInt, return: typeBool }, + ], }) .inferenceRule(binaryInferenceRule) .finish(); @@ -168,17 +202,45 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition - typir.validation.Constraints.ensureNodeIsEquals(node.left, node.right, accept, (actual, expected) => ({ - message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ - node.left.$cstNode?.text - }' and '${node.right.$cstNode?.text}' have the different types '${this.getTypeName( - actual - )}' and '${this.getTypeName(expected)}'.`, - languageNode: node, // Inside the BinaryExpression ... - languageProperty: "operator", // ... mark the '==' or '!=' token, i.e. the 'operator' property - severity: "warning", // Only issue warning because mismatch returns "false" - })), + validation: (node, _operatorName, _operatorType, accept, typir) => { + const leftType = typir.Inference.inferType(node.left); + const rightType = typir.Inference.inferType(node.right); + if (leftType === typeInt && rightType === typeRange) { + // no problem here + } else if (leftType === typeRange && rightType === typeInt) { + // no problem either + } else if (leftType === typeRange && rightType === typeRange) { + const leftRange = this.getRangeBounds(node.left, typir); + const rightRange = this.getRangeBounds(node.right, typir); + const rangesIntersect = this.rangesIntersect(leftRange, rightRange); + // TODO: take care of negative values + if (!rangesIntersect) { + accept({ + message: `This comparison will always return '${ + node.operator === "!=" ? "true" : "false" + }' as the ranges '${leftRange.lower}${ + leftRange.upper === leftRange.lower ? "" : `..${leftRange.upper}` + }' and '${rightRange.lower}${ + rightRange.upper === rightRange.lower ? "" : `..${rightRange.upper}` + }' have no overlap.`, + languageNode: node, + languageProperty: "operator", + severity: "warning", + }); + } + } else { + typir.validation.Constraints.ensureNodeIsEquals(node.left, node.right, accept, (actual, expected) => ({ + message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ + node.left.$cstNode?.text + }' and '${node.right.$cstNode?.text}' have the different types '${this.getTypeName( + actual + )}' and '${this.getTypeName(expected)}'.`, + languageNode: node, + languageProperty: "operator", + severity: "warning", + })); + } + }, }) .finish(); } @@ -273,7 +335,13 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { - typir.validation.Constraints.ensureNodeIsAssignable(node.init, typeBool, accept, () => ({ + typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, () => ({ message: "Agent inititalization needs to evaluate to 'bool'.", languageProperty: "init", languageNode: node, })); }, Ltol: (node, accept, typir) => { - typir.validation.Constraints.ensureNodeIsAssignable(node.expr, typeBool, accept, () => ({ + typir.validation.Constraints.ensureNodeIsEquals(node.expr, typeBool, accept, () => ({ message: "SPEC needs to evaluate to 'bool'.", languageProperty: "expr", languageNode: node, @@ -394,7 +462,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { // Do not need to check broadcast symbol if (node.bcast !== undefined) return; - typir.validation.Constraints.ensureNodeIsAssignable(node.chan?.ref?.$container, typeChannel, accept, () => ({ + typir.validation.Constraints.ensureNodeIsEquals(node.chan?.ref?.$container, typeChannel, accept, () => ({ message: "Channel reference needs to evaluate to 'channel'.", languageProperty: "chan", languageNode: node, @@ -461,6 +529,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition languageNode === node, + validation: (node, type, accept, typir) => { + // TODO: add validation for agents here? + }, }) .inferenceRuleForFieldAccess({ languageKey: QualifiedRef, @@ -543,4 +614,46 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition): RangeBounds { + if (typir.Inference.inferType(expr) !== typir.factory.Primitives.get({ primitiveName: "range" })) { + throw new Error("Cannot get range bounds of non-range type."); + } + if (isRef(expr)) { + const target = expr.variable.ref!; + if (isLocal(target) || isParam(target) || isMsgStruct(target) || isPropVar(target)) { + const range = target.rangeType!; + return { lower: range.lower, upper: range.upper }; + } else { + throw new Error("Unexpected target found."); + } + } else if (isNumberLiteral(expr)) { + return { lower: expr.value, upper: expr.value }; + } else if (isBinExpr(expr)) { + const leftRange = this.getRangeBounds(expr.left, typir); + const rightRange = this.getRangeBounds(expr.right, typir); + switch (expr.operator) { + case "+": + return { lower: leftRange.lower + rightRange.lower, upper: leftRange.upper + rightRange.upper }; + case "-": + return { lower: leftRange.lower - rightRange.upper, upper: leftRange.upper - rightRange.lower }; + case "*": + return { lower: leftRange.lower * rightRange.lower, upper: leftRange.upper * rightRange.upper }; + case "/": + return { + lower: Math.floor(leftRange.lower / rightRange.upper), + upper: Math.floor(leftRange.upper / rightRange.lower), + }; + default: + throw new Error("Unexpected operator found."); + } + } else { + throw new Error("Unexpected expression found."); + } + } + + protected rangesIntersect(a: RangeBounds, b: RangeBounds): boolean { + return a.lower <= b.upper && b.lower <= a.upper; + } } From 6a48d0c8c296e6f20c7421dd1e2d1d6f81ff3bef Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sat, 31 May 2025 00:55:07 +0200 Subject: [PATCH 21/49] add IntRange class and use in custom comparison validation --- src/language/r-check-type-checking.ts | 145 +++++++++++++++++--------- 1 file changed, 96 insertions(+), 49 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 6ccdcfc..88bf3c7 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -44,6 +44,7 @@ import { isNumberLiteral, isParam, isPropVar, + isPropVarRef, isRange, isReceive, isRef, @@ -58,11 +59,12 @@ import { MsgStruct, Neg, Next, - NumberLiteral, Param, PropVar, + PropVarRef, QualifiedRef, RCheckAstType, + Ref, Relabel, Sequence, SupplyLocationExpr, @@ -76,13 +78,9 @@ import { InferenceRuleNotApplicable, NO_PARAMETER_NAME, Type, - TypirServices, isClassType, } from "typir"; -// TODO: replace by class with class methods (a.contains(b), a.intersects(b))? -type RangeBounds = { lower: number; upper: number }; - export class RCheckTypeSystem implements LangiumTypeSystemDefinition { onInitialize(typir: TypirLangiumServices): void { // Define the primitive types @@ -98,10 +96,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.value < 0, - }) + .inferenceRule({ filter: isNumberLiteral }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "int", @@ -109,10 +104,6 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.value >= 0, - }) .inferenceRule({ filter: isRange }) .inferenceRule({ languageKey: [Local, Param, MsgStruct, PropVar], @@ -205,24 +196,28 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { const leftType = typir.Inference.inferType(node.left); const rightType = typir.Inference.inferType(node.right); - if (leftType === typeInt && rightType === typeRange) { - // no problem here - } else if (leftType === typeRange && rightType === typeInt) { - // no problem either - } else if (leftType === typeRange && rightType === typeRange) { - const leftRange = this.getRangeBounds(node.left, typir); - const rightRange = this.getRangeBounds(node.right, typir); - const rangesIntersect = this.rangesIntersect(leftRange, rightRange); - // TODO: take care of negative values - if (!rangesIntersect) { + if (leftType === typeRange || rightType === typeRange) { + let leftRange; + let rightRange; + try { + leftRange = IntRange.fromRangeExpr(node.left); + rightRange = IntRange.fromRangeExpr(node.right); + } catch (ex) { + const error = ex as Error; + return accept({ + message: `Cannot compare 'range' to '${ + leftRange === undefined ? node.left.$cstNode?.text : node.right.$cstNode?.text + }': ${error.message}`, + languageNode: node, + languageProperty: leftRange === undefined ? "left" : "right", + severity: "error", + }); + } + if (!leftRange.intersects(rightRange)) { accept({ message: `This comparison will always return '${ node.operator === "!=" ? "true" : "false" - }' as the ranges '${leftRange.lower}${ - leftRange.upper === leftRange.lower ? "" : `..${leftRange.upper}` - }' and '${rightRange.lower}${ - rightRange.upper === rightRange.lower ? "" : `..${rightRange.upper}` - }' have no overlap.`, + }' as the ranges '${leftRange}' and '${rightRange}' have no overlap.`, languageNode: node, languageProperty: "operator", severity: "warning", @@ -339,7 +334,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition): RangeBounds { - if (typir.Inference.inferType(expr) !== typir.factory.Primitives.get({ primitiveName: "range" })) { - throw new Error("Cannot get range bounds of non-range type."); - } - if (isRef(expr)) { - const target = expr.variable.ref!; + public static fromRangeExpr(expr: CompoundExpr): IntRange { + const getRangeBoundsOfRef = (ref: Ref | PropVarRef) => { + const target = ref.variable.ref; if (isLocal(target) || isParam(target) || isMsgStruct(target) || isPropVar(target)) { - const range = target.rangeType!; - return { lower: range.lower, upper: range.upper }; + if (target.rangeType !== undefined) { + return new this(target.rangeType.lower, target.rangeType.upper); + } else { + return new this(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); + throw new Error(`Cannot infer range bounds of variable '${expr.$cstNode?.text}' with type 'int'.`); + } } else { throw new Error("Unexpected target found."); } + }; + + if (isRef(expr)) { + return getRangeBoundsOfRef(expr); + } else if (isPropVarRef(expr)) { + return getRangeBoundsOfRef(expr); } else if (isNumberLiteral(expr)) { - return { lower: expr.value, upper: expr.value }; + return new this(expr.value, expr.value); } else if (isBinExpr(expr)) { - const leftRange = this.getRangeBounds(expr.left, typir); - const rightRange = this.getRangeBounds(expr.right, typir); + const leftRange = IntRange.fromRangeExpr(expr.left); + const rightRange = IntRange.fromRangeExpr(expr.right); switch (expr.operator) { case "+": - return { lower: leftRange.lower + rightRange.lower, upper: leftRange.upper + rightRange.upper }; + return leftRange.plus(rightRange); case "-": - return { lower: leftRange.lower - rightRange.upper, upper: leftRange.upper - rightRange.lower }; + return leftRange.minus(rightRange); case "*": - return { lower: leftRange.lower * rightRange.lower, upper: leftRange.upper * rightRange.upper }; + return leftRange.times(rightRange); case "/": - return { - lower: Math.floor(leftRange.lower / rightRange.upper), - upper: Math.floor(leftRange.upper / rightRange.lower), - }; + return leftRange.devidedBy(rightRange); default: throw new Error("Unexpected operator found."); } + } else if (isUMinus(expr)) { + return new this(0, 0).minus(IntRange.fromRangeExpr(expr.expr)); } else { throw new Error("Unexpected expression found."); } } - protected rangesIntersect(a: RangeBounds, b: RangeBounds): boolean { - return a.lower <= b.upper && b.lower <= a.upper; + public plus(other: IntRange): IntRange { + return new IntRange(this.lower + other.lower, this.upper + other.upper); + } + + public minus(other: IntRange): IntRange { + return new IntRange(this.lower - other.upper, this.upper - other.lower); + } + + public times(other: IntRange): IntRange { + const p1 = this.lower * other.lower; + const p2 = this.lower * other.upper; + const p3 = this.upper * other.lower; + const p4 = this.upper * other.upper; + return new IntRange(Math.min(p1, p2, p3, p4), Math.max(p1, p2, p3, p4)); + } + + public devidedBy(other: IntRange): IntRange { + if (other.lower === 0 || other.upper === 0) { + throw new Error("Division by a range that includes zero is not supported."); + } + const d1 = Math.trunc(this.lower / other.lower); + const d2 = Math.trunc(this.lower / other.upper); + const d3 = Math.trunc(this.upper / other.lower); + const d4 = Math.trunc(this.upper / other.upper); + + return new IntRange(Math.min(d1, d2, d3, d4), Math.max(d1, d2, d3, d4)); + } + + public intersects(other: IntRange): boolean { + return this.lower <= other.upper && other.lower <= this.upper; + } + + public contains(other: IntRange): boolean { + return this.lower <= other.lower && this.upper >= other.upper; + } + + public toString(): string { + return this.lower === this.upper ? `${this.lower}` : `${this.lower}..${this.upper}`; } } From 34503ac5a94263b9f8244c89722f34f2f4c65f35 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sat, 31 May 2025 19:49:34 +0200 Subject: [PATCH 22/49] fix language server crashing for duplicates --- src/language/r-check-type-checking.ts | 66 +++++++++++++++++++-------- 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 88bf3c7..8ea4ae2 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -73,6 +73,7 @@ import { import { assertUnreachable, AstNode } from "langium"; import { AnnotatedTypeAfterValidation, + ClassTypeDetails, InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, InferenceRuleNotApplicable, @@ -403,7 +404,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ name: l.name, type: l })), - ...this.getProcessNames(languageNode).map((n) => ({ name: n, type: "bool" })), - ], - methods: [], - }) + // Skip class definition in case of duplicates + if (languageNode.name === undefined || typir.factory.Classes.get(languageNode.name).getType() !== undefined) { + return; + } + + typir.factory.Classes.create(this.getClassDetails(languageNode)) .inferenceRuleForClassDeclaration({ languageKey: Agent, matching: (node: Agent) => languageNode === node, @@ -548,26 +548,55 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + const fieldNames = new Set(["automaton-state"]); + + const locals = agent.locals + .map((l) => { + if (fieldNames.has(l.name)) { + return undefined; + } + fieldNames.add(l.name); + return { name: l.name, type: l }; + }) + .filter((l): l is { name: string; type: Local } => l !== undefined); + + const processes = this.getProcessNames(agent) + .map((n) => { + if (fieldNames.has(n)) { + return undefined; + } + fieldNames.add(n); + return { name: n, type: "bool" }; + }) + .filter((p): p is { name: string; type: string } => p !== undefined); + + return { + className: agent.name, + fields: [{ name: "automaton-state", type: "int" }, ...processes, ...locals], + methods: [], + }; + } + protected getProcessNames(agent: Agent): string[] { const stack: (BaseProcess | Sequence)[] = [agent.repeat]; const processNames: string[] = []; while (stack.length !== 0) { - const process = stack.pop()!; + const process = stack.pop(); if (isSend(process) || isReceive(process) || isGet(process) || isSupply(process)) { if (process.name) { processNames.push(process.name); } - } else if (isChoice(process) || isSequence(process)) { + } + if (isChoice(process) || isSequence(process)) { stack.push(process.left); if (process.right !== undefined) { stack.push(process.right); } - } else if (isRep(process)) { + } + if (isRep(process)) { stack.push(process.process); - } else { - // TODO: why is this branch reachable?? - //assertUnreachable(process satisfies never); } } @@ -629,7 +658,6 @@ class IntRange { return new this(target.rangeType.lower, target.rangeType.upper); } else { return new this(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); - throw new Error(`Cannot infer range bounds of variable '${expr.$cstNode?.text}' with type 'int'.`); } } else { throw new Error("Unexpected target found."); From 108e897da6a57d6c0cda87f3dbe8984c602310d2 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sun, 1 Jun 2025 00:33:20 +0200 Subject: [PATCH 23/49] add range check to assignments, update existing range checks --- src/language/r-check-type-checking.ts | 147 +++++++++++++++----------- 1 file changed, 83 insertions(+), 64 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 8ea4ae2..72dcd3d 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -45,6 +45,7 @@ import { isParam, isPropVar, isPropVarRef, + isQualifiedRef, isRange, isReceive, isRef, @@ -54,6 +55,7 @@ import { isSenderObs, isSequence, isSupply, + isTarget, isUMinus, Local, MsgStruct, @@ -61,13 +63,12 @@ import { Next, Param, PropVar, - PropVarRef, QualifiedRef, RCheckAstType, - Ref, Relabel, Sequence, SupplyLocationExpr, + Target, UMinus, } from "./generated/ast.js"; import { assertUnreachable, AstNode } from "langium"; @@ -79,6 +80,8 @@ import { InferenceRuleNotApplicable, NO_PARAMETER_NAME, Type, + TypirServices, + ValidationProblemAcceptor, isClassType, } from "typir"; @@ -197,23 +200,13 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { const leftType = typir.Inference.inferType(node.left); const rightType = typir.Inference.inferType(node.right); - if (leftType === typeRange || rightType === typeRange) { - let leftRange; - let rightRange; - try { - leftRange = IntRange.fromRangeExpr(node.left); - rightRange = IntRange.fromRangeExpr(node.right); - } catch (ex) { - const error = ex as Error; - return accept({ - message: `Cannot compare 'range' to '${ - leftRange === undefined ? node.left.$cstNode?.text : node.right.$cstNode?.text - }': ${error.message}`, - languageNode: node, - languageProperty: leftRange === undefined ? "left" : "right", - severity: "error", - }); - } + if ( + (leftType === typeRange && rightType === typeInt) || + (leftType === typeInt && rightType === typeRange) || + (leftType === typeRange && rightType === typeRange) + ) { + const leftRange = IntRange.fromRangeExpr(node.left); + const rightRange = IntRange.fromRangeExpr(node.right); if (!leftRange.intersects(rightRange)) { accept({ message: `This comparison will always return '${ @@ -247,16 +240,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, - operands: (node: Relabel) => [node.var.ref!, node.expr], // TODO: take care of "!", find out if this is an issue - validation: (node, _operatorName, _operatorType, accept, typir) => - typir.validation.Constraints.ensureNodeIsAssignable(node.expr, node.var.ref, accept, (actual, expected) => ({ - message: `Variable of type '${this.getTypeName( - expected - )}' cannot be relabeled with expression of type '${this.getTypeName(actual)}'.`, - languageNode: node, - languageProperty: "expr", - severity: "error", - })), + operands: (node: Relabel) => [node.var.ref!, node.expr], + validation: (node, _operator, _functionType, accept, typir) => + this.validateAssignment(node, this.getTypeName, accept, typir), validateArgumentsOfCalls: true, }) .finish(); @@ -268,20 +254,8 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, operands: (node: Assign) => [node.left.ref!, node.right], - validation: (node, _operatorName, _operatorType, accept, typir) => - typir.validation.Constraints.ensureNodeIsAssignable( - node.right, - node.left.ref, - accept, - (actual, expected) => ({ - message: `Expression of type '${this.getTypeName( - actual - )}' cannot be assigned to variable of type '${this.getTypeName(expected)}'.`, - languageNode: node, - languageProperty: "expr", - severity: "error", - }) - ), + validation: (node, _operator, _functionType, accept, typir) => + this.validateAssignment(node, this.getTypeName, accept, typir), validateArgumentsOfCalls: true, }) .finish(); @@ -318,7 +292,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { return isUMinus(node) || isNeg(node) || isLtolMod(node) || isForallObs(node) || isExistsObs(node); @@ -443,7 +417,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, () => ({ - message: "Agent inititalization needs to evaluate to 'bool'.", + message: "Agent initialization needs to evaluate to 'bool'.", languageProperty: "init", languageNode: node, })); @@ -497,7 +471,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ name: p.name, type: p })), associatedLanguageNode: languageNode, }) @@ -532,7 +506,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { const qualifier = node.instance.ref; - // Handle LtolQuant inference seperately + // Handle LtolQuant inference separately if (isLtolQuant(qualifier)) return false; return qualifier?.agent.ref === languageNode; @@ -638,6 +612,50 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition string | undefined, + accept: ValidationProblemAcceptor, + typir: TypirServices + ) { + const targetNode = isRelabel(node) ? node.var.ref! : node.left.ref!; + const exprNode = isRelabel(node) ? node.expr : node.right; + const property = isRelabel(node) ? "var" : "left"; + + const typeInt = typir.factory.Primitives.get({ primitiveName: "int" }); + const typeRange = typir.factory.Primitives.get({ primitiveName: "range" }); + + const targetType = typir.Inference.inferType(targetNode); + const exprType = typir.Inference.inferType(exprNode); + + if ((targetType === typeRange && exprType === typeInt) || (targetType === typeRange && exprType === typeRange)) { + const targetRange = IntRange.fromRangeExpr(targetNode); + const exprRange = IntRange.fromRangeExpr(exprNode); + + if (!targetRange.contains(exprRange)) { + accept({ + message: `Range variable cannot be ${ + property === "var" ? "relabeled" : "assigned" + } as the range '${targetRange}' does not contain the range of the expression '${exprRange}'.`, + languageNode: node, + languageProperty: property, + severity: "error", + }); + } + } else { + typir.validation.Constraints.ensureNodeIsAssignable(exprNode, targetNode, accept, (actual, expected) => ({ + message: `${property === "var" ? "Variable" : "Expression"} of type '${getTypeName( + property === "var" ? expected : actual + )}' cannot be ${ + property === "var" ? "relabeled with expression of type" : "assigned to variable of type" + } '${getTypeName(property === "var" ? actual : expected)}'.`, + languageNode: node, + languageProperty: property, + severity: "error", + })); + } + } } class IntRange { @@ -650,24 +668,22 @@ class IntRange { } // TODO: make this iterative? - public static fromRangeExpr(expr: CompoundExpr): IntRange { - const getRangeBoundsOfRef = (ref: Ref | PropVarRef) => { - const target = ref.variable.ref; - if (isLocal(target) || isParam(target) || isMsgStruct(target) || isPropVar(target)) { - if (target.rangeType !== undefined) { - return new this(target.rangeType.lower, target.rangeType.upper); - } else { + public static fromRangeExpr(expr: CompoundExpr | PropVar | Target): IntRange { + if (isRef(expr) || isPropVar(expr) || isPropVarRef(expr) || isTarget(expr) || isQualifiedRef(expr)) { + const decl = isPropVar(expr) || isTarget(expr) ? expr : expr.variable.ref; + if (isLocal(decl) || isParam(decl) || isMsgStruct(decl) || isPropVar(decl)) { + if (decl.rangeType !== undefined) { + return new this(decl.rangeType.lower, decl.rangeType.upper); + } else if (decl.builtinType === "int") { return new this(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); + } else { + throw new Error( + `Encountered declaration with unexpected type: ${decl.builtinType ?? decl.customType?.ref?.name}.` + ); } } else { throw new Error("Unexpected target found."); } - }; - - if (isRef(expr)) { - return getRangeBoundsOfRef(expr); - } else if (isPropVarRef(expr)) { - return getRangeBoundsOfRef(expr); } else if (isNumberLiteral(expr)) { return new this(expr.value, expr.value); } else if (isBinExpr(expr)) { @@ -681,14 +697,14 @@ class IntRange { case "*": return leftRange.times(rightRange); case "/": - return leftRange.devidedBy(rightRange); + return leftRange.dividedBy(rightRange); default: throw new Error("Unexpected operator found."); } } else if (isUMinus(expr)) { return new this(0, 0).minus(IntRange.fromRangeExpr(expr.expr)); } else { - throw new Error("Unexpected expression found."); + throw new Error(`Unexpected expression found: '${expr.$type}'.`); } } @@ -708,7 +724,7 @@ class IntRange { return new IntRange(Math.min(p1, p2, p3, p4), Math.max(p1, p2, p3, p4)); } - public devidedBy(other: IntRange): IntRange { + public dividedBy(other: IntRange): IntRange { if (other.lower === 0 || other.upper === 0) { throw new Error("Division by a range that includes zero is not supported."); } @@ -729,6 +745,9 @@ class IntRange { } public toString(): string { - return this.lower === this.upper ? `${this.lower}` : `${this.lower}..${this.upper}`; + if (isFinite(this.lower) && isFinite(this.upper)) { + return this.lower === this.upper ? `${this.lower}` : `${this.lower}..${this.upper}`; + } + return "int"; } } From e6797fa71292adf0f24c8102a283cf725c18d577 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Mon, 2 Jun 2025 22:28:42 +0200 Subject: [PATCH 24/49] add validation rules to agent and commands (process) --- src/language/r-check-type-checking.ts | 114 +++++++++++++++++++++++--- 1 file changed, 103 insertions(+), 11 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 72dcd3d..ce14171 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -13,6 +13,7 @@ import { ExistsObs, Finally, ForallObs, + Get, Globally, Guard, GuardCall, @@ -65,8 +66,11 @@ import { PropVar, QualifiedRef, RCheckAstType, + Receive, Relabel, + Send, Sequence, + Supply, SupplyLocationExpr, Target, UMinus, @@ -117,7 +121,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "location", @@ -411,17 +415,67 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + if (languageNode.bcast !== undefined) { + return typeChannel; + } else if (languageNode.channel?.ref !== undefined) { + return languageNode.channel.ref; + } else { + return InferenceRuleNotApplicable; + } + }, + GetLocationExpr: (languageNode) => languageNode.predicate, + SupplyLocationExpr: (languageNode) => { + const location = languageNode.location?.ref; + if (location !== undefined) { + return location; + } else { + return InferenceRuleNotApplicable; + } + }, }); - // TODO: maybe this validation rule can be implemented upon class creation + const validateCmdHeader = ( + node: Send | Receive | Get | Supply, + accept: ValidationProblemAcceptor, + typir: TypirServices + ) => { + typir.validation.Constraints.ensureNodeIsEquals(node.psi, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in command guard expression: expected '${this.getTypeName( + expected + )}', but got '${this.getTypeName(actual)}'.`, + languageProperty: "psi", + languageNode: node, + })); + }; + const validateChannelExpr = ( + node: Send | Receive, + accept: ValidationProblemAcceptor, + typir: TypirServices + ) => { + typir.validation.Constraints.ensureNodeIsEquals(node.chanExpr, typeChannel, accept, (actual, expected) => ({ + message: `Type mismatch in command channel expression: expected '${this.getTypeName( + expected + )}', but got '${this.getTypeName(actual)}'.`, + languageProperty: "chanExpr", + languageNode: node, + })); + }; + const validateGetSupplyLocation = ( + node: Get | Supply, + accept: ValidationProblemAcceptor, + typir: TypirServices + ) => { + typir.validation.Constraints.ensureNodeIsEquals(node.where, typeLocation, accept, (actual, expected) => ({ + message: `Type mismatch in command where: expected '${this.getTypeName(expected)}', but got '${this.getTypeName( + actual + )}'.`, + languageProperty: "where", + languageNode: node, + })); + }; + typir.validation.Collector.addValidationRulesForAstNodes({ - Instance: (node, accept, typir) => { - typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, () => ({ - message: "Agent initialization needs to evaluate to 'bool'.", - languageProperty: "init", - languageNode: node, - })); - }, Ltol: (node, accept, typir) => { typir.validation.Constraints.ensureNodeIsEquals(node.expr, typeBool, accept, () => ({ message: "SPEC needs to evaluate to 'bool'.", @@ -438,6 +492,29 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + validateCmdHeader(node, accept, typir); + validateChannelExpr(node, accept, typir); + typir.validation.Constraints.ensureNodeIsEquals(node.sendGuard, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in command guard: expected '${this.getTypeName( + expected + )}', but got '${this.getTypeName(actual)}'.`, + languageProperty: "sendGuard", + languageNode: node, + })); + }, + Receive: (node, accept, typir) => { + validateCmdHeader(node, accept, typir); + validateChannelExpr(node, accept, typir); + }, + Get: (node, accept, typir) => { + validateCmdHeader(node, accept, typir); + validateGetSupplyLocation(node, accept, typir); + }, + Supply: (node, accept, typir) => { + validateCmdHeader(node, accept, typir); + validateGetSupplyLocation(node, accept, typir); + }, }); } @@ -494,12 +571,27 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition languageNode === node, - validation: (node, type, accept, typir) => { - // TODO: add validation for agents here? + validation: (node, _type, accept, typir) => { + typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in agent initialization: expected '${this.getTypeName( + expected + )}', but got '${this.getTypeName(actual)}'.`, + languageProperty: "init", + languageNode: node.init, + })); + typir.validation.Constraints.ensureNodeIsEquals(node.recvguard, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in agent receive-guard: expected '${this.getTypeName( + expected + )}', but got '${this.getTypeName(actual)}'.`, + languageProperty: "recvguard", + languageNode: node.recvguard, + })); }, }) .inferenceRuleForFieldAccess({ From 4739c7492ceb232b8d14576f6da9fb4d335dd197 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Wed, 4 Jun 2025 08:13:39 +0200 Subject: [PATCH 25/49] fix example files --- examples/bigger-example.rcp | 2 +- examples/get-supply.rcp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/bigger-example.rcp b/examples/bigger-example.rcp index b3b0c11..a0e95bb 100644 --- a/examples/bigger-example.rcp +++ b/examples/bigger-example.rcp @@ -30,7 +30,7 @@ agent Line ) agent Robot - local: btype : int, lnk : channel, basgn : bool, brdy : 0..2, no : int + local: btype : 0..3, lnk : channel, basgn : bool, brdy : 0..2, no : int init: btype == 1 & lnk == empty & basgn == false & brdy == 0 & no == 0 relabel: type <- btype diff --git a/examples/get-supply.rcp b/examples/get-supply.rcp index c3d0ec4..237c2c9 100644 --- a/examples/get-supply.rcp +++ b/examples/get-supply.rcp @@ -12,7 +12,7 @@ agent Client repeat: ( splyAtSelf: {true} SUPPLY@(myself)()[] + - getAtX: {true} GET@(x)[] + getAtX: {true} GET@(x)()[] + bcastSend: {true} *! true(MSG := myself)[x := myself] + From 7e6ba3d93524a214983975d3973d17664817a513 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Wed, 4 Jun 2025 08:27:50 +0200 Subject: [PATCH 26/49] move utility functions and classes to separate file --- src/language/r-check-type-checking.ts | 279 ++------------------------ src/language/util.ts | 233 ++++++++++++++++++++- 2 files changed, 251 insertions(+), 261 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index ce14171..9884183 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -3,11 +3,9 @@ import { Agent, Assign, AutomatonState, - BaseProcess, BinExpr, BinObs, Box, - CompoundExpr, Diamond, Enum, ExistsObs, @@ -27,7 +25,6 @@ import { isCase, isChannelObs, isChannelRef, - isChoice, isDiamond, isEnum, isExistsObs, @@ -45,18 +42,12 @@ import { isNumberLiteral, isParam, isPropVar, - isPropVarRef, - isQualifiedRef, isRange, isReceive, - isRef, isRelabel, - isRep, isSend, isSenderObs, - isSequence, isSupply, - isTarget, isUMinus, Local, MsgStruct, @@ -69,16 +60,12 @@ import { Receive, Relabel, Send, - Sequence, Supply, SupplyLocationExpr, - Target, UMinus, } from "./generated/ast.js"; import { assertUnreachable, AstNode } from "langium"; import { - AnnotatedTypeAfterValidation, - ClassTypeDetails, InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, InferenceRuleNotApplicable, @@ -88,6 +75,7 @@ import { ValidationProblemAcceptor, isClassType, } from "typir"; +import { getClassDetails, getTypeName, intersectMaps, IntRange, validateAssignment } from "./util.js"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { onInitialize(typir: TypirLangiumServices): void { @@ -225,9 +213,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ message: `This comparison will always return '${node.operator === "!=" ? "true" : "false"}' as '${ node.left.$cstNode?.text - }' and '${node.right.$cstNode?.text}' have the different types '${this.getTypeName( + }' and '${node.right.$cstNode?.text}' have the different types '${getTypeName( actual - )}' and '${this.getTypeName(expected)}'.`, + )}' and '${getTypeName(expected)}'.`, languageNode: node, languageProperty: "operator", severity: "warning", @@ -246,7 +234,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, operands: (node: Relabel) => [node.var.ref!, node.expr], validation: (node, _operator, _functionType, accept, typir) => - this.validateAssignment(node, this.getTypeName, accept, typir), + validateAssignment(node, getTypeName, accept, typir), validateArgumentsOfCalls: true, }) .finish(); @@ -259,7 +247,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, operands: (node: Assign) => [node.left.ref!, node.right], validation: (node, _operator, _functionType, accept, typir) => - this.validateAssignment(node, this.getTypeName, accept, typir), + validateAssignment(node, getTypeName, accept, typir), validateArgumentsOfCalls: true, }) .finish(); @@ -388,7 +376,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ) => { typir.validation.Constraints.ensureNodeIsEquals(node.psi, typeBool, accept, (actual, expected) => ({ - message: `Type mismatch in command guard expression: expected '${this.getTypeName( + message: `Type mismatch in command guard expression: expected '${getTypeName( expected - )}', but got '${this.getTypeName(actual)}'.`, + )}', but got '${getTypeName(actual)}'.`, languageProperty: "psi", languageNode: node, })); @@ -454,9 +442,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ) => { typir.validation.Constraints.ensureNodeIsEquals(node.chanExpr, typeChannel, accept, (actual, expected) => ({ - message: `Type mismatch in command channel expression: expected '${this.getTypeName( + message: `Type mismatch in command channel expression: expected '${getTypeName( expected - )}', but got '${this.getTypeName(actual)}'.`, + )}', but got '${getTypeName(actual)}'.`, languageProperty: "chanExpr", languageNode: node, })); @@ -467,7 +455,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ) => { typir.validation.Constraints.ensureNodeIsEquals(node.where, typeLocation, accept, (actual, expected) => ({ - message: `Type mismatch in command where: expected '${this.getTypeName(expected)}', but got '${this.getTypeName( + message: `Type mismatch in command where: expected '${getTypeName(expected)}', but got '${getTypeName( actual )}'.`, languageProperty: "where", @@ -496,9 +484,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ - message: `Type mismatch in command guard: expected '${this.getTypeName( - expected - )}', but got '${this.getTypeName(actual)}'.`, + message: `Type mismatch in command guard: expected '${getTypeName(expected)}', but got '${getTypeName( + actual + )}'.`, languageProperty: "sendGuard", languageNode: node, })); @@ -573,22 +561,22 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition languageNode === node, validation: (node, _type, accept, typir) => { typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, (actual, expected) => ({ - message: `Type mismatch in agent initialization: expected '${this.getTypeName( + message: `Type mismatch in agent initialization: expected '${getTypeName( expected - )}', but got '${this.getTypeName(actual)}'.`, + )}', but got '${getTypeName(actual)}'.`, languageProperty: "init", languageNode: node.init, })); typir.validation.Constraints.ensureNodeIsEquals(node.recvguard, typeBool, accept, (actual, expected) => ({ - message: `Type mismatch in agent receive-guard: expected '${this.getTypeName( + message: `Type mismatch in agent receive-guard: expected '${getTypeName( expected - )}', but got '${this.getTypeName(actual)}'.`, + )}', but got '${getTypeName(actual)}'.`, languageProperty: "recvguard", languageNode: node.recvguard, })); @@ -613,233 +601,4 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { - const fieldNames = new Set(["automaton-state"]); - - const locals = agent.locals - .map((l) => { - if (fieldNames.has(l.name)) { - return undefined; - } - fieldNames.add(l.name); - return { name: l.name, type: l }; - }) - .filter((l): l is { name: string; type: Local } => l !== undefined); - - const processes = this.getProcessNames(agent) - .map((n) => { - if (fieldNames.has(n)) { - return undefined; - } - fieldNames.add(n); - return { name: n, type: "bool" }; - }) - .filter((p): p is { name: string; type: string } => p !== undefined); - - return { - className: agent.name, - fields: [{ name: "automaton-state", type: "int" }, ...processes, ...locals], - methods: [], - }; - } - - protected getProcessNames(agent: Agent): string[] { - const stack: (BaseProcess | Sequence)[] = [agent.repeat]; - const processNames: string[] = []; - - while (stack.length !== 0) { - const process = stack.pop(); - if (isSend(process) || isReceive(process) || isGet(process) || isSupply(process)) { - if (process.name) { - processNames.push(process.name); - } - } - if (isChoice(process) || isSequence(process)) { - stack.push(process.left); - if (process.right !== undefined) { - stack.push(process.right); - } - } - if (isRep(process)) { - stack.push(process.process); - } - } - - return processNames; - } - - protected getTypeName(type: AnnotatedTypeAfterValidation): string | undefined { - return type.name.split("::").pop(); - } - - protected intersectMaps(maps: Map[]): Map { - if (maps.length === 0) { - return new Map(); - } - if (maps.length === 1) { - return new Map(maps[0]); - } - - const resultMap = new Map(); - const firstMap = maps[0]; - - // Iterate over the entries of the first map - for (const [key, value] of firstMap.entries()) { - let isInAllMaps = true; - - // Check if this key exists in all other maps with the same value - for (let i = 1; i < maps.length; i++) { - const currentMap = maps[i]; - if (!currentMap.has(key) || currentMap.get(key) !== value) { - isInAllMaps = false; - break; - } - } - // If the key and value matched across all maps, add it to the result - if (isInAllMaps) { - resultMap.set(key, value); - } - } - - return resultMap; - } - - protected validateAssignment( - node: Relabel | Assign, - getTypeName: (type: AnnotatedTypeAfterValidation) => string | undefined, - accept: ValidationProblemAcceptor, - typir: TypirServices - ) { - const targetNode = isRelabel(node) ? node.var.ref! : node.left.ref!; - const exprNode = isRelabel(node) ? node.expr : node.right; - const property = isRelabel(node) ? "var" : "left"; - - const typeInt = typir.factory.Primitives.get({ primitiveName: "int" }); - const typeRange = typir.factory.Primitives.get({ primitiveName: "range" }); - - const targetType = typir.Inference.inferType(targetNode); - const exprType = typir.Inference.inferType(exprNode); - - if ((targetType === typeRange && exprType === typeInt) || (targetType === typeRange && exprType === typeRange)) { - const targetRange = IntRange.fromRangeExpr(targetNode); - const exprRange = IntRange.fromRangeExpr(exprNode); - - if (!targetRange.contains(exprRange)) { - accept({ - message: `Range variable cannot be ${ - property === "var" ? "relabeled" : "assigned" - } as the range '${targetRange}' does not contain the range of the expression '${exprRange}'.`, - languageNode: node, - languageProperty: property, - severity: "error", - }); - } - } else { - typir.validation.Constraints.ensureNodeIsAssignable(exprNode, targetNode, accept, (actual, expected) => ({ - message: `${property === "var" ? "Variable" : "Expression"} of type '${getTypeName( - property === "var" ? expected : actual - )}' cannot be ${ - property === "var" ? "relabeled with expression of type" : "assigned to variable of type" - } '${getTypeName(property === "var" ? actual : expected)}'.`, - languageNode: node, - languageProperty: property, - severity: "error", - })); - } - } -} - -class IntRange { - private lower: number; - private upper: number; - - constructor(lower: number, upper: number) { - this.lower = lower; - this.upper = upper; - } - - // TODO: make this iterative? - public static fromRangeExpr(expr: CompoundExpr | PropVar | Target): IntRange { - if (isRef(expr) || isPropVar(expr) || isPropVarRef(expr) || isTarget(expr) || isQualifiedRef(expr)) { - const decl = isPropVar(expr) || isTarget(expr) ? expr : expr.variable.ref; - if (isLocal(decl) || isParam(decl) || isMsgStruct(decl) || isPropVar(decl)) { - if (decl.rangeType !== undefined) { - return new this(decl.rangeType.lower, decl.rangeType.upper); - } else if (decl.builtinType === "int") { - return new this(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); - } else { - throw new Error( - `Encountered declaration with unexpected type: ${decl.builtinType ?? decl.customType?.ref?.name}.` - ); - } - } else { - throw new Error("Unexpected target found."); - } - } else if (isNumberLiteral(expr)) { - return new this(expr.value, expr.value); - } else if (isBinExpr(expr)) { - const leftRange = IntRange.fromRangeExpr(expr.left); - const rightRange = IntRange.fromRangeExpr(expr.right); - switch (expr.operator) { - case "+": - return leftRange.plus(rightRange); - case "-": - return leftRange.minus(rightRange); - case "*": - return leftRange.times(rightRange); - case "/": - return leftRange.dividedBy(rightRange); - default: - throw new Error("Unexpected operator found."); - } - } else if (isUMinus(expr)) { - return new this(0, 0).minus(IntRange.fromRangeExpr(expr.expr)); - } else { - throw new Error(`Unexpected expression found: '${expr.$type}'.`); - } - } - - public plus(other: IntRange): IntRange { - return new IntRange(this.lower + other.lower, this.upper + other.upper); - } - - public minus(other: IntRange): IntRange { - return new IntRange(this.lower - other.upper, this.upper - other.lower); - } - - public times(other: IntRange): IntRange { - const p1 = this.lower * other.lower; - const p2 = this.lower * other.upper; - const p3 = this.upper * other.lower; - const p4 = this.upper * other.upper; - return new IntRange(Math.min(p1, p2, p3, p4), Math.max(p1, p2, p3, p4)); - } - - public dividedBy(other: IntRange): IntRange { - if (other.lower === 0 || other.upper === 0) { - throw new Error("Division by a range that includes zero is not supported."); - } - const d1 = Math.trunc(this.lower / other.lower); - const d2 = Math.trunc(this.lower / other.upper); - const d3 = Math.trunc(this.upper / other.lower); - const d4 = Math.trunc(this.upper / other.upper); - - return new IntRange(Math.min(d1, d2, d3, d4), Math.max(d1, d2, d3, d4)); - } - - public intersects(other: IntRange): boolean { - return this.lower <= other.upper && other.lower <= this.upper; - } - - public contains(other: IntRange): boolean { - return this.lower <= other.lower && this.upper >= other.upper; - } - - public toString(): string { - if (isFinite(this.lower) && isFinite(this.upper)) { - return this.lower === this.upper ? `${this.lower}` : `${this.lower}..${this.upper}`; - } - return "int"; - } } diff --git a/src/language/util.ts b/src/language/util.ts index 42e5969..7e15ff6 100644 --- a/src/language/util.ts +++ b/src/language/util.ts @@ -1,7 +1,9 @@ import { NodeFileSystem } from "langium/node"; import { extractAstNode } from "../cli/cli-util.js"; -import { Model } from "./generated/ast.js"; +import { Agent, Assign, BaseProcess, CompoundExpr, isBinExpr, isChoice, isGet, isLocal, isMsgStruct, isNumberLiteral, isParam, isPropVar, isPropVarRef, isQualifiedRef, isReceive, isRef, isRelabel, isRep, isSend, isSequence, isSupply, isTarget, isUMinus, Local, Model, PropVar, Relabel, Sequence, Target } from "./generated/ast.js"; import { createRCheckServices } from "./r-check-module.js"; +import { AstNode } from "langium"; +import { ClassTypeDetails, AnnotatedTypeAfterValidation, ValidationProblemAcceptor, TypirServices } from "typir"; export async function parseToJson(fileName: string) { const services = createRCheckServices(NodeFileSystem).RCheck; @@ -42,3 +44,232 @@ const getAstReplacer = () => { return value; }; }; + +export class IntRange { + private lower: number; + private upper: number; + + constructor(lower: number, upper: number) { + this.lower = lower; + this.upper = upper; + } + + // TODO: make this iterative? + public static fromRangeExpr(expr: CompoundExpr | PropVar | Target): IntRange { + if (isRef(expr) || isPropVar(expr) || isPropVarRef(expr) || isTarget(expr) || isQualifiedRef(expr)) { + const decl = isPropVar(expr) || isTarget(expr) ? expr : expr.variable.ref; + if (isLocal(decl) || isParam(decl) || isMsgStruct(decl) || isPropVar(decl)) { + if (decl.rangeType !== undefined) { + return new this(decl.rangeType.lower, decl.rangeType.upper); + } else if (decl.builtinType === "int") { + return new this(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); + } else { + throw new Error( + `Encountered declaration with unexpected type: ${decl.builtinType ?? decl.customType?.ref?.name}.` + ); + } + } else { + throw new Error("Unexpected target found."); + } + } else if (isNumberLiteral(expr)) { + return new this(expr.value, expr.value); + } else if (isBinExpr(expr)) { + const leftRange = IntRange.fromRangeExpr(expr.left); + const rightRange = IntRange.fromRangeExpr(expr.right); + switch (expr.operator) { + case "+": + return leftRange.plus(rightRange); + case "-": + return leftRange.minus(rightRange); + case "*": + return leftRange.times(rightRange); + case "/": + return leftRange.dividedBy(rightRange); + default: + throw new Error("Unexpected operator found."); + } + } else if (isUMinus(expr)) { + return new this(0, 0).minus(IntRange.fromRangeExpr(expr.expr)); + } else { + throw new Error(`Unexpected expression found: '${expr.$type}'.`); + } + } + + public plus(other: IntRange): IntRange { + return new IntRange(this.lower + other.lower, this.upper + other.upper); + } + + public minus(other: IntRange): IntRange { + return new IntRange(this.lower - other.upper, this.upper - other.lower); + } + + public times(other: IntRange): IntRange { + const p1 = this.lower * other.lower; + const p2 = this.lower * other.upper; + const p3 = this.upper * other.lower; + const p4 = this.upper * other.upper; + return new IntRange(Math.min(p1, p2, p3, p4), Math.max(p1, p2, p3, p4)); + } + + public dividedBy(other: IntRange): IntRange { + if (other.lower === 0 || other.upper === 0) { + throw new Error("Division by a range that includes zero is not supported."); + } + const d1 = Math.trunc(this.lower / other.lower); + const d2 = Math.trunc(this.lower / other.upper); + const d3 = Math.trunc(this.upper / other.lower); + const d4 = Math.trunc(this.upper / other.upper); + + return new IntRange(Math.min(d1, d2, d3, d4), Math.max(d1, d2, d3, d4)); + } + + public intersects(other: IntRange): boolean { + return this.lower <= other.upper && other.lower <= this.upper; + } + + public contains(other: IntRange): boolean { + return this.lower <= other.lower && this.upper >= other.upper; + } + + public toString(): string { + if (isFinite(this.lower) && isFinite(this.upper)) { + return this.lower === this.upper ? `${this.lower}` : `${this.lower}..${this.upper}`; + } + return "int"; + } +} + +export const getClassDetails = (agent: Agent): ClassTypeDetails => { + const fieldNames = new Set(["automaton-state"]); + + const locals = agent.locals + .map((l) => { + if (fieldNames.has(l.name)) { + return undefined; + } + fieldNames.add(l.name); + return { name: l.name, type: l }; + }) + .filter((l): l is { name: string; type: Local } => l !== undefined); + + const processes = getProcessNames(agent) + .map((n) => { + if (fieldNames.has(n)) { + return undefined; + } + fieldNames.add(n); + return { name: n, type: "bool" }; + }) + .filter((p): p is { name: string; type: string } => p !== undefined); + + return { + className: agent.name, + fields: [{ name: "automaton-state", type: "int" }, ...processes, ...locals], + methods: [], + }; +}; + +export const getProcessNames = (agent: Agent): string[] => { + const stack: (BaseProcess | Sequence)[] = [agent.repeat]; + const processNames: string[] = []; + + while (stack.length !== 0) { + const process = stack.pop(); + if (isSend(process) || isReceive(process) || isGet(process) || isSupply(process)) { + if (process.name) { + processNames.push(process.name); + } + } + if (isChoice(process) || isSequence(process)) { + stack.push(process.left); + if (process.right !== undefined) { + stack.push(process.right); + } + } + if (isRep(process)) { + stack.push(process.process); + } + } + + return processNames; +}; + +export const getTypeName = (type: AnnotatedTypeAfterValidation): string | undefined => { + return type.name.split("::").pop(); +}; + +export const intersectMaps = (maps: Map[]): Map => { + if (maps.length === 0) { + return new Map(); + } + if (maps.length === 1) { + return new Map(maps[0]); + } + + const resultMap = new Map(); + const firstMap = maps[0]; + + // Iterate over the entries of the first map + for (const [key, value] of firstMap.entries()) { + let isInAllMaps = true; + + // Check if this key exists in all other maps with the same value + for (let i = 1; i < maps.length; i++) { + const currentMap = maps[i]; + if (!currentMap.has(key) || currentMap.get(key) !== value) { + isInAllMaps = false; + break; + } + } + // If the key and value matched across all maps, add it to the result + if (isInAllMaps) { + resultMap.set(key, value); + } + } + + return resultMap; +}; + +export const validateAssignment = ( + node: Relabel | Assign, + getTypeName: (type: AnnotatedTypeAfterValidation) => string | undefined, + accept: ValidationProblemAcceptor, + typir: TypirServices +) => { + const targetNode = isRelabel(node) ? node.var.ref! : node.left.ref!; + const exprNode = isRelabel(node) ? node.expr : node.right; + const property = isRelabel(node) ? "var" : "left"; + + const typeInt = typir.factory.Primitives.get({ primitiveName: "int" }); + const typeRange = typir.factory.Primitives.get({ primitiveName: "range" }); + + const targetType = typir.Inference.inferType(targetNode); + const exprType = typir.Inference.inferType(exprNode); + + if ((targetType === typeRange && exprType === typeInt) || (targetType === typeRange && exprType === typeRange)) { + const targetRange = IntRange.fromRangeExpr(targetNode); + const exprRange = IntRange.fromRangeExpr(exprNode); + + if (!targetRange.contains(exprRange)) { + accept({ + message: `Range variable cannot be ${ + property === "var" ? "relabeled" : "assigned" + } as the range '${targetRange}' does not contain the range of the expression '${exprRange}'.`, + languageNode: node, + languageProperty: property, + severity: "error", + }); + } + } else { + typir.validation.Constraints.ensureNodeIsAssignable(exprNode, targetNode, accept, (actual, expected) => ({ + message: `${property === "var" ? "Variable" : "Expression"} of type '${getTypeName( + property === "var" ? expected : actual + )}' cannot be ${ + property === "var" ? "relabeled with expression of type" : "assigned to variable of type" + } '${getTypeName(property === "var" ? actual : expected)}'.`, + languageNode: node, + languageProperty: property, + severity: "error", + })); + } +}; From 52776258a2d526d5a45b84666337d03eb0b090d7 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 5 Jun 2025 21:09:59 +0200 Subject: [PATCH 27/49] fix langium version --- package-lock.json | 140 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 77 insertions(+), 65 deletions(-) diff --git a/package-lock.json b/package-lock.json index e39bfe0..47c717e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "chalk": "~5.3.0", "commander": "~11.0.0", - "langium": "~3.2.0", + "langium": "~3.4.0", "monaco-languageclient": "~8.1.1", "typir": "~0.2.0", "typir-langium": "~0.2.0", @@ -42,9 +42,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.4.tgz", - "integrity": "sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", + "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", "dev": true, "license": "MIT", "engines": { @@ -1121,9 +1121,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.110", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.110.tgz", - "integrity": "sha512-WW2o4gTmREtSnqKty9nhqF/vA0GKd0V/rbC0OyjSk9Bz6bzlsXKT+i7WDdS/a0z74rfT2PO4dArVCSnapNLA5Q==", + "version": "18.19.111", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.111.tgz", + "integrity": "sha512-90sGdgA+QLJr1F9X79tQuEut0gEYIfkX9pydI4XGRgvFo9g2JWswefI+WUSUHPYVBHYSEfTEqBxA5hQvAZB3Mw==", "dev": true, "license": "MIT", "dependencies": { @@ -1350,15 +1350,15 @@ "license": "ISC" }, "node_modules/@vitest/expect": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.0.tgz", - "integrity": "sha512-0v4YVbhDKX3SKoy0PHWXpKhj44w+3zZkIoVES9Ex2pq+u6+Bijijbi2ua5kE+h3qT6LBWFTNZSCOEU37H8Y5sA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.2.tgz", + "integrity": "sha512-ipHw0z669vEMjzz3xQE8nJX1s0rQIb7oEl4jjl35qWTwm/KIHERIg/p/zORrjAaZKXfsv7IybcNGHwhOOAPMwQ==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.0", - "@vitest/utils": "3.2.0", + "@vitest/spy": "3.2.2", + "@vitest/utils": "3.2.2", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1367,13 +1367,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.0.tgz", - "integrity": "sha512-HFcW0lAMx3eN9vQqis63H0Pscv0QcVMo1Kv8BNysZbxcmHu3ZUYv59DS6BGYiGQ8F5lUkmsfMMlPm4DJFJdf/A==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.2.tgz", + "integrity": "sha512-jKojcaRyIYpDEf+s7/dD3LJt53c0dPfp5zCPXz9H/kcGrSlovU/t1yEaNzM9oFME3dcd4ULwRI/x0Po1Zf+LTw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.0", + "@vitest/spy": "3.2.2", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1394,9 +1394,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.0.tgz", - "integrity": "sha512-gUUhaUmPBHFkrqnOokmfMGRBMHhgpICud9nrz/xpNV3/4OXCn35oG+Pl8rYYsKaTNd/FAIrqRHnwpDpmYxCYZw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.2.tgz", + "integrity": "sha512-FY4o4U1UDhO9KMd2Wee5vumwcaHw7Vg4V7yR4Oq6uK34nhEJOmdRYrk3ClburPRUA09lXD/oXWZ8y/Sdma0aUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1407,13 +1407,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.0.tgz", - "integrity": "sha512-bXdmnHxuB7fXJdh+8vvnlwi/m1zvu+I06i1dICVcDQFhyV4iKw2RExC/acavtDn93m/dRuawUObKsrNE1gJacA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.2.tgz", + "integrity": "sha512-GYcHcaS3ejGRZYed2GAkvsjBeXIEerDKdX3orQrBJqLRiea4NSS9qvn9Nxmuy1IwIB+EjFOaxXnX79l8HFaBwg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.0", + "@vitest/utils": "3.2.2", "pathe": "^2.0.3" }, "funding": { @@ -1421,13 +1421,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.0.tgz", - "integrity": "sha512-z7P/EneBRMe7hdvWhcHoXjhA6at0Q4ipcoZo6SqgxLyQQ8KSMMCmvw1cSt7FHib3ozt0wnRHc37ivuUMbxzG/A==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.2.tgz", + "integrity": "sha512-aMEI2XFlR1aNECbBs5C5IZopfi5Lb8QJZGGpzS8ZUHML5La5wCbrbhLOVSME68qwpT05ROEEOAZPRXFpxZV2wA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.0", + "@vitest/pretty-format": "3.2.2", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1436,9 +1436,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.0.tgz", - "integrity": "sha512-s3+TkCNUIEOX99S0JwNDfsHRaZDDZZR/n8F0mop0PmsEbQGKZikCGpTGZ6JRiHuONKew3Fb5//EPwCP+pUX9cw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.2.tgz", + "integrity": "sha512-6Utxlx3o7pcTxvp0u8kUiXtRFScMrUg28KjB3R2hon7w4YqOFAEA9QwzPVVS1QNL3smo4xRNOpNZClRVfpMcYg==", "dev": true, "license": "MIT", "dependencies": { @@ -1449,13 +1449,13 @@ } }, "node_modules/@vitest/utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.0.tgz", - "integrity": "sha512-gXXOe7Fj6toCsZKVQouTRLJftJwmvbhH5lKOBR6rlP950zUq9AitTUjnFoXS/CqjBC2aoejAztLPzzuva++XBw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.2.tgz", + "integrity": "sha512-qJYMllrWpF/OYfWHP32T31QCaLa3BAzT/n/8mNGhPdVcjY+JYazQFO1nsJvXU12Kp1xMpNY4AGuljPTNjQve6A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.0", + "@vitest/pretty-format": "3.2.2", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -1756,12 +1756,12 @@ "license": "MIT" }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=16" } }, "node_modules/concat-map": { @@ -3033,16 +3033,6 @@ "node": ">=18.0.0" } }, - "node_modules/langium-cli/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } - }, "node_modules/langium-railroad": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.4.0.tgz", @@ -4104,6 +4094,28 @@ "node": ">=14.17" } }, + "node_modules/typir": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/typir/-/typir-0.2.1.tgz", + "integrity": "sha512-OkW/ZDKQmeOLyMcRCn/O/D45GhzWas148oRwxZmoQTw5N2+KkjtZqNL1h3RHSubLDTCMlOWnrlvXr2Pxsce0KQ==", + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + } + }, + "node_modules/typir-langium": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/typir-langium/-/typir-langium-0.2.1.tgz", + "integrity": "sha512-Uu7eV+yu++g93eISWrzajCeqGNZvQZsPRdrV+g3lnFVrCmlvSmX9p2b18ysWNcCS4xTZNJfIIrmNY3z2d22ldQ==", + "license": "MIT", + "dependencies": { + "langium": "~3.4.0", + "typir": "~0.2.1" + }, + "engines": { + "node": ">= 18.0.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -4226,9 +4238,9 @@ } }, "node_modules/vite-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.0.tgz", - "integrity": "sha512-8Fc5Ko5Y4URIJkmMF/iFP1C0/OJyY+VGVe9Nw6WAdZyw4bTO+eVg9mwxWkQp/y8NnAoQY3o9KAvE1ZdA2v+Vmg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.2.tgz", + "integrity": "sha512-Xj/jovjZvDXOq2FgLXu8NsY4uHUMWtzVmMC2LkCu9HWdr9Qu1Is5sanX3Z4jOFKdohfaWDnEJWp9pRP0vVpAcA==", "dev": true, "license": "MIT", "dependencies": { @@ -4277,20 +4289,20 @@ } }, "node_modules/vitest": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.0.tgz", - "integrity": "sha512-P7Nvwuli8WBNmeMHHek7PnGW4oAZl9za1fddfRVidZar8wDZRi7hpznLKQePQ8JPLwSBEYDK11g+++j7uFJV8Q==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.2.tgz", + "integrity": "sha512-fyNn/Rp016Bt5qvY0OQvIUCwW2vnaEBLxP42PmKbNIoasSYjML+8xyeADOPvBe+Xfl/ubIw4og7Lt9jflRsCNw==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.0", - "@vitest/mocker": "3.2.0", - "@vitest/pretty-format": "^3.2.0", - "@vitest/runner": "3.2.0", - "@vitest/snapshot": "3.2.0", - "@vitest/spy": "3.2.0", - "@vitest/utils": "3.2.0", + "@vitest/expect": "3.2.2", + "@vitest/mocker": "3.2.2", + "@vitest/pretty-format": "^3.2.2", + "@vitest/runner": "3.2.2", + "@vitest/snapshot": "3.2.2", + "@vitest/spy": "3.2.2", + "@vitest/utils": "3.2.2", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", @@ -4304,7 +4316,7 @@ "tinypool": "^1.1.0", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.0", + "vite-node": "3.2.2", "why-is-node-running": "^2.3.0" }, "bin": { @@ -4320,8 +4332,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.0", - "@vitest/ui": "3.2.0", + "@vitest/browser": "3.2.2", + "@vitest/ui": "3.2.2", "happy-dom": "*", "jsdom": "*" }, diff --git a/package.json b/package.json index 48aa11a..6beb2e8 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "dependencies": { "chalk": "~5.3.0", "commander": "~11.0.0", - "langium": "~3.2.0", + "langium": "~3.4.0", "monaco-languageclient": "~8.1.1", "typir": "~0.2.0", "typir-langium": "~0.2.0", From 5069bc450b07ccdda8076b793c12d2ff1fd58b6e Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Thu, 5 Jun 2025 21:14:29 +0200 Subject: [PATCH 28/49] update Makefile to prevent package-lock.json conflicts and build error due to false positive of code secrets check --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0cae5ab..250638f 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ version = $(strip $(shell grep version package.json | tr -s ' ' | cut -d' ' -f3 build: out/extension/main.js out/extension/main.js: $(src) $(bin) $(grammar) package.json - npm update + npm install npm run langium:generate npm run build @@ -30,7 +30,8 @@ bin/$(jar): $(java_src) package: rcheck-$(version).vsix rcheck-$(version).vsix: package.json out/extension/main.js bin/$(jar) - vsce package +# The option --allow-package-secrets sendgrid prevents a false positive when scanning for secrets in the compiled javascript + vsce package --allow-package-secrets sendgrid # We need to do this little trick since 'test' is an actual directory name test: tests From 88db7b0eb7dbc4fd119340f3d68024629d1fa349 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Fri, 6 Jun 2025 00:12:16 +0200 Subject: [PATCH 29/49] add validation to guard body and update validation rule for GET --- src/language/r-check-type-checking.ts | 71 ++++++++++++++++++--------- 1 file changed, 47 insertions(+), 24 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 9884183..03848ef 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -172,8 +172,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition"]) { + for (const operator of ["&", "|", "->", "U", "R", "W"]) { typir.factory.Operators.createBinary({ name: operator, signature: { left: typeBool, right: typeBool, return: typeBool }, @@ -449,8 +448,8 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition, typir: TypirServices ) => { @@ -462,6 +461,23 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition, + typir: TypirServices + ) => { + const actual = typir.Inference.inferType(node.where); + if (actual instanceof Type && actual.getIdentifier() !== "bool" && actual.getIdentifier() !== "location") { + accept({ + message: `Type mismatch in command where: expected 'bool | location', but got '${ + actual instanceof Type ? typir.Printer.printTypeName(actual) : "inference problem" + }'.`, + languageProperty: "where", + languageNode: node, + severity: "error", + }); + } + }; typir.validation.Collector.addValidationRulesForAstNodes({ Ltol: (node, accept, typir) => { @@ -497,11 +513,36 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { validateCmdHeader(node, accept, typir); - validateGetSupplyLocation(node, accept, typir); + validateGetLocation(node, accept, typir); }, Supply: (node, accept, typir) => { validateCmdHeader(node, accept, typir); - validateGetSupplyLocation(node, accept, typir); + validateSupplyLocation(node, accept, typir); + }, + Guard: (node, accept, typir) => { + typir.validation.Constraints.ensureNodeIsEquals(node.body, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in guard definition: expected '${getTypeName(expected)}', but got '${getTypeName( + actual + )}'.`, + languageProperty: "body", + languageNode: node.body, + })); + }, + Agent: (node, accept, typir) => { + typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in agent initialization: expected '${getTypeName(expected)}', but got '${getTypeName( + actual + )}'.`, + languageProperty: "init", + languageNode: node.init, + })); + typir.validation.Constraints.ensureNodeIsEquals(node.recvguard, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in agent receive-guard: expected '${getTypeName(expected)}', but got '${getTypeName( + actual + )}'.`, + languageProperty: "recvguard", + languageNode: node.recvguard, + })); }, }); } @@ -559,28 +600,10 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition languageNode === node, - validation: (node, _type, accept, typir) => { - typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, (actual, expected) => ({ - message: `Type mismatch in agent initialization: expected '${getTypeName( - expected - )}', but got '${getTypeName(actual)}'.`, - languageProperty: "init", - languageNode: node.init, - })); - typir.validation.Constraints.ensureNodeIsEquals(node.recvguard, typeBool, accept, (actual, expected) => ({ - message: `Type mismatch in agent receive-guard: expected '${getTypeName( - expected - )}', but got '${getTypeName(actual)}'.`, - languageProperty: "recvguard", - languageNode: node.recvguard, - })); - }, }) .inferenceRuleForFieldAccess({ languageKey: QualifiedRef, From b10419d977e6c9974990ba48aeaa43c058bf5ba2 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Wed, 18 Jun 2025 14:26:59 +0200 Subject: [PATCH 30/49] Add vsce dev dependency, fix Makefile * It is nicer not to require devs to install/update vsce globally * --allow-package-secret is only available on vsce >= 3.4.0 --- Makefile | 4 +- package-lock.json | 4040 +++++++++++++++++++++++++++++++++++++++++---- package.json | 3 +- 3 files changed, 3730 insertions(+), 317 deletions(-) diff --git a/Makefile b/Makefile index 250638f..fac80bc 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ all: build test package +VSCE = ./node_modules/@vscode/vsce/vsce + grammar = src/language/r-check.langium src = $(wildcard src/**/*.ts) bin = $(wildcard src/**/*.ts) @@ -31,7 +33,7 @@ package: rcheck-$(version).vsix rcheck-$(version).vsix: package.json out/extension/main.js bin/$(jar) # The option --allow-package-secrets sendgrid prevents a false positive when scanning for secrets in the compiled javascript - vsce package --allow-package-secrets sendgrid + ${VSCE} package --allow-package-secrets sendgrid # We need to do this little trick since 'test' is an actual directory name test: tests diff --git a/package-lock.json b/package-lock.json index 47c717e..e776f27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "@types/vscode": "~1.94.0", "@typescript-eslint/eslint-plugin": "~7.3.1", "@typescript-eslint/parser": "~7.3.1", + "@vscode/vsce": "^3.4.0", "concurrently": "~8.2.1", "esbuild": "^0.25.5", "eslint": "~8.57.0", @@ -41,6 +42,217 @@ "vscode": "^1.94.0" } }, + "node_modules/@azu/format-text": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", + "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@azu/style-format": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz", + "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "@azu/format-text": "^1.0.1" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", + "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.4.tgz", + "integrity": "sha512-f7IxTD15Qdux30s2qFARH+JxgwxWLG2Rlr4oSkPGuLWm+1p5y1+C04XGLA0vmX6EtqfutmjvpNmAfgwVIS5hpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.20.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.21.0.tgz", + "integrity": "sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@typespec/ts-http-runtime": "^0.2.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", + "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.12.0.tgz", + "integrity": "sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@typespec/ts-http-runtime": "^0.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.10.1.tgz", + "integrity": "sha512-YM/z6RxRtFlXUH2egAYF/FDPes+MUE6ZoknjEdaq7ebJMMNUzn9zCJ3bd2ZZZlkP0r1xKa88kolhFH/FGV7JnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^4.2.0", + "@azure/msal-node": "^3.5.0", + "open": "^10.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.2.0.tgz", + "integrity": "sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.13.1.tgz", + "integrity": "sha512-oTp2zhVljB2CRp87swOTsBcqLDrvZq9In+yDMBzuuMN4z2wrIU6ITHBZlLfs+FaAVmM1zY3k7ITekXaJ2bsDKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.7.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.7.0.tgz", + "integrity": "sha512-m9M5hoFoxhe/HlXNVa4qBHekrX60CVPkWzsjhKQGuzw/OPOmurosKRPDIMn8fug/E1hHI5v33DvT1LVJfItjcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.6.0.tgz", + "integrity": "sha512-MRZ38Ou6l9LiRkz/968mG0czfIvD1PxMZ/3Jyz5k00ZMnhNOwv+DIliEcy//laoWDobAAq+/cz97xefCcHPgjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.7.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/runtime": { "version": "7.27.6", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", @@ -668,10 +880,34 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -679,6 +915,26 @@ "concat-map": "0.0.1" } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -719,9 +975,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -764,6 +1020,101 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", @@ -810,9 +1161,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", - "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", "cpu": [ "arm" ], @@ -824,9 +1175,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", - "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", "cpu": [ "arm64" ], @@ -838,9 +1189,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", - "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", "cpu": [ "arm64" ], @@ -852,9 +1203,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", - "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", "cpu": [ "x64" ], @@ -866,9 +1217,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", - "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", "cpu": [ "arm64" ], @@ -880,9 +1231,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", - "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", "cpu": [ "x64" ], @@ -894,9 +1245,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", - "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", "cpu": [ "arm" ], @@ -908,9 +1259,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", - "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", "cpu": [ "arm" ], @@ -922,9 +1273,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", - "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", "cpu": [ "arm64" ], @@ -936,9 +1287,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", - "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", "cpu": [ "arm64" ], @@ -950,9 +1301,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", - "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", "cpu": [ "loong64" ], @@ -964,9 +1315,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", - "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", "cpu": [ "ppc64" ], @@ -978,9 +1329,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", - "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", "cpu": [ "riscv64" ], @@ -992,9 +1343,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", - "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", "cpu": [ "riscv64" ], @@ -1006,9 +1357,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", - "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", "cpu": [ "s390x" ], @@ -1020,9 +1371,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", - "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", "cpu": [ "x64" ], @@ -1034,9 +1385,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", - "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", "cpu": [ "x64" ], @@ -1048,9 +1399,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", - "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", "cpu": [ "arm64" ], @@ -1062,9 +1413,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", - "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", "cpu": [ "ia32" ], @@ -1076,9 +1427,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", - "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", "cpu": [ "x64" ], @@ -1089,51 +1440,360 @@ "win32" ] }, - "node_modules/@types/chai": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", - "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "node_modules/@secretlint/config-creator": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-9.3.4.tgz", + "integrity": "sha512-GRMYfHJ+rewwB26CC3USVObqSQ/mDLXzXcUMJw/wJisPr3HDZmdsYlcsNnaAcGN+EZmvqSDkgSibQm1hyZpzbg==", "dev": true, "license": "MIT", "dependencies": { - "@types/deep-eql": "*" + "@secretlint/types": "^9.3.4" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" } }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "node_modules/@secretlint/config-loader": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-9.3.4.tgz", + "integrity": "sha512-sy+yWDWh4cbAbpQYLiO39DjwNGEK1EUhTqNamLLBo163BdJP10FIWhqpe8mtGQBSBXRtxr8Hg/gc3Xe4meIoww==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^9.3.4", + "@secretlint/resolver": "^9.3.4", + "@secretlint/types": "^9.3.4", + "ajv": "^8.17.1", + "debug": "^4.4.1", + "rc-config-loader": "^4.1.3" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "node_modules/@secretlint/core": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-9.3.4.tgz", + "integrity": "sha512-ErIVHI6CJd191qdNKuMkH3bZQo9mWJsrSg++bQx64o0WFuG5nPvkYrDK0p/lebf+iQuOnzvl5HrZU6GU9a6o+Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^9.3.4", + "@secretlint/types": "^9.3.4", + "debug": "^4.4.1", + "structured-source": "^4.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } }, - "node_modules/@types/node": { - "version": "18.19.111", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.111.tgz", - "integrity": "sha512-90sGdgA+QLJr1F9X79tQuEut0gEYIfkX9pydI4XGRgvFo9g2JWswefI+WUSUHPYVBHYSEfTEqBxA5hQvAZB3Mw==", + "node_modules/@secretlint/formatter": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-9.3.4.tgz", + "integrity": "sha512-ARpoBOKz6WP3ocLITCFkR1/Lj636ugpBknylhlpc45r5aLdvmyvWAJqodlw5zmUCfgD6JXeAMf3Hi60aAiuqWQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "@secretlint/resolver": "^9.3.4", + "@secretlint/types": "^9.3.4", + "@textlint/linter-formatter": "^14.7.2", + "@textlint/module-interop": "^14.7.2", + "@textlint/types": "^14.7.2", + "chalk": "^4.1.2", + "debug": "^4.4.1", + "pluralize": "^8.0.0", + "strip-ansi": "^6.0.1", + "table": "^6.9.0", + "terminal-link": "^2.1.1" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" } }, - "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "node_modules/@secretlint/formatter/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@secretlint/formatter/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@secretlint/node": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-9.3.4.tgz", + "integrity": "sha512-S0u8i+CnPmyAKtuccgot9L5cmw6DqJc0F+b3hhVIALd8kkeLt3RIXOOej15tU7N0V1ISph90Gz92V72ovsprgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/config-loader": "^9.3.4", + "@secretlint/core": "^9.3.4", + "@secretlint/formatter": "^9.3.4", + "@secretlint/profiler": "^9.3.4", + "@secretlint/source-creator": "^9.3.4", + "@secretlint/types": "^9.3.4", + "debug": "^4.4.1", + "p-map": "^4.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/@secretlint/profiler": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-9.3.4.tgz", + "integrity": "sha512-99WmaHd4dClNIm5BFsG++E6frNIZ3qVwg6s804Ql/M19pDmtZOoVCl4/UuzWpwNniBqLIgn9rHQZ/iGlIW3wyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@secretlint/resolver": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-9.3.4.tgz", + "integrity": "sha512-L1lIrcjzqcspPzZttmOvMmOFDpJTYFyRBONg94TZBWrpv4x0w5G2SYR+K7EE1SbYQAiPxw1amoXT1YRP8cZF2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@secretlint/secretlint-formatter-sarif": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-9.3.4.tgz", + "integrity": "sha512-IpAl5gzKwpTRqoivKOTJB89l6b7uvBwjSNKzJb3oIGD9Jg3vXcQunSntvLv5XGynYtdi1NhANfEpbhavlmMSyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-sarif-builder": "^2.0.3" + } + }, + "node_modules/@secretlint/secretlint-rule-no-dotenv": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-9.3.4.tgz", + "integrity": "sha512-lMSVwTrJiZ/zL9VIzpT7tMcb0ClI6u4cyJo2YKGSbuJErJG1zB4gQKtjIwCSt7px5JF6U+aFtpb9M8+s40WWCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^9.3.4" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/@secretlint/secretlint-rule-preset-recommend": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-9.3.4.tgz", + "integrity": "sha512-RvzrLNN2A0B2bYQgRSRjh2dkdaIDuhXjj4SO5bElK1iBtJNiD6VBTxSSY1P3hXYaBeva7MEF+q1PZ3cCL8XYOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/@secretlint/source-creator": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-9.3.4.tgz", + "integrity": "sha512-I9ZA1gm9HJNaAhZiQdInY9VM04VTAGDV4bappVbEJzMUDnK/LTbYqfQ88RPqgCGCqa6ee8c0/j5Bn7ypweouIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^9.3.4", + "istextorbinary": "^9.5.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/@secretlint/types": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-9.3.4.tgz", + "integrity": "sha512-z9rdKHNeL4xa48+367RQJVw1d7/Js9HIQ+gTs/angzteM9osfgs59ad3iwVRhCGYbeUoUUDe2yxJG2ylYLaH3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@textlint/ast-node-types": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.8.4.tgz", + "integrity": "sha512-+fI7miec/r9VeniFV9ppL4jRCmHNsTxieulTUf/4tvGII3db5hGriKHC4p/diq1SkQ9Sgs7kg6UyydxZtpTz1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.8.4.tgz", + "integrity": "sha512-sZ0UfYRDBNHnfMVBqLqqYnqTB7Ec169ljlmo+SEHR1T+dHUPYy1/DZK4p7QREXlBSFL4cnkswETCbc9xRodm4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azu/format-text": "^1.0.2", + "@azu/style-format": "^1.0.1", + "@textlint/module-interop": "14.8.4", + "@textlint/resolver": "14.8.4", + "@textlint/types": "14.8.4", + "chalk": "^4.1.2", + "debug": "^4.4.1", + "js-yaml": "^3.14.1", + "lodash": "^4.17.21", + "pluralize": "^2.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "table": "^6.9.0", + "text-table": "^0.2.0" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/pluralize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", + "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@textlint/module-interop": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.8.4.tgz", + "integrity": "sha512-1LdPYLAVpa27NOt6EqvuFO99s4XLB0c19Hw9xKSG6xQ1K82nUEyuWhzTQKb3KJ5Qx7qj14JlXZLfnEuL6A16Bw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/resolver": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.8.4.tgz", + "integrity": "sha512-nMDOgDAVwNU9ommh+Db0U+MCMNDPbQ/1HBNjbnHwxZkCpcT6hsAJwBe38CW/DtWVUv8yeR4R40IYNPT84srNwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/types": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.8.4.tgz", + "integrity": "sha512-9nyY8vVXlr8hHKxa6+37omJhXWCwovMQcgMteuldYd4dOxGm14AK2nXdkgtKEUQnzLGaXy46xwLCfhQy7V7/YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@textlint/ast-node-types": "14.8.4" + } + }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "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", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.19.112", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz", + "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sarif": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", + "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", "dev": true, "license": "MIT" }, @@ -1342,6 +2002,21 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.3.tgz", + "integrity": "sha512-oRhjSzcVjX8ExyaF8hC0zzTqxlVuRlgMHL/Bh4w3xB9+wjbm0FpXylVU/lBrn+kgphwYTrOk3tp+AVShGmlYCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", @@ -1350,15 +2025,15 @@ "license": "ISC" }, "node_modules/@vitest/expect": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.2.tgz", - "integrity": "sha512-ipHw0z669vEMjzz3xQE8nJX1s0rQIb7oEl4jjl35qWTwm/KIHERIg/p/zORrjAaZKXfsv7IybcNGHwhOOAPMwQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.2", - "@vitest/utils": "3.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1367,13 +2042,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.2.tgz", - "integrity": "sha512-jKojcaRyIYpDEf+s7/dD3LJt53c0dPfp5zCPXz9H/kcGrSlovU/t1yEaNzM9oFME3dcd4ULwRI/x0Po1Zf+LTw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.2", + "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1394,9 +2069,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.2.tgz", - "integrity": "sha512-FY4o4U1UDhO9KMd2Wee5vumwcaHw7Vg4V7yR4Oq6uK34nhEJOmdRYrk3ClburPRUA09lXD/oXWZ8y/Sdma0aUQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -1407,27 +2082,28 @@ } }, "node_modules/@vitest/runner": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.2.tgz", - "integrity": "sha512-GYcHcaS3ejGRZYed2GAkvsjBeXIEerDKdX3orQrBJqLRiea4NSS9qvn9Nxmuy1IwIB+EjFOaxXnX79l8HFaBwg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.2", - "pathe": "^2.0.3" + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.2.tgz", - "integrity": "sha512-aMEI2XFlR1aNECbBs5C5IZopfi5Lb8QJZGGpzS8ZUHML5La5wCbrbhLOVSME68qwpT05ROEEOAZPRXFpxZV2wA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.2", + "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1436,9 +2112,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.2.tgz", - "integrity": "sha512-6Utxlx3o7pcTxvp0u8kUiXtRFScMrUg28KjB3R2hon7w4YqOFAEA9QwzPVVS1QNL3smo4xRNOpNZClRVfpMcYg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { @@ -1449,71 +2125,380 @@ } }, "node_modules/@vitest/utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.2.tgz", - "integrity": "sha512-qJYMllrWpF/OYfWHP32T31QCaLa3BAzT/n/8mNGhPdVcjY+JYazQFO1nsJvXU12Kp1xMpNY4AGuljPTNjQve6A==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.2", - "loupe": "^3.1.3", + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "node_modules/@vscode/vsce": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.5.0.tgz", + "integrity": "sha512-2Eb6fBh8OzNhWqviCjeUPA1MW+d2GCb1QlVxrpOR8lrLHGk8x7HD4LbfELnZPyOz2X33Myz9FE9t4LwYbmeMRg==", "dev": true, "license": "MIT", + "dependencies": { + "@azure/identity": "^4.1.0", + "@secretlint/node": "^9.3.4", + "@secretlint/secretlint-formatter-sarif": "^9.3.4", + "@secretlint/secretlint-rule-no-dotenv": "^9.3.4", + "@secretlint/secretlint-rule-preset-recommend": "^9.3.4", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^12.1.0", + "form-data": "^4.0.0", + "glob": "^11.0.0", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "secretlint": "^9.3.4", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, "bin": { - "acorn": "bin/acorn" + "vsce": "vsce" }, "engines": { - "node": ">=0.4.0" + "node": ">= 20" + }, + "optionalDependencies": { + "keytar": "^7.7.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@vscode/vsce-sign": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.6.tgz", + "integrity": "sha512-j9Ashk+uOWCDHYDxgGsqzKq5FXW9b9MW7QqOIYZ8IYpneJclWTBeHZz2DJCSKQgo+JAqNcaRRE1hzIx0dswqAw==", "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.5", + "@vscode/vsce-sign-alpine-x64": "2.0.5", + "@vscode/vsce-sign-darwin-arm64": "2.0.5", + "@vscode/vsce-sign-darwin-x64": "2.0.5", + "@vscode/vsce-sign-linux-arm": "2.0.5", + "@vscode/vsce-sign-linux-arm64": "2.0.5", + "@vscode/vsce-sign-linux-x64": "2.0.5", + "@vscode/vsce-sign-win32-arm64": "2.0.5", + "@vscode/vsce-sign-win32-x64": "2.0.5" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.5.tgz", + "integrity": "sha512-XVmnF40APwRPXSLYA28Ye+qWxB25KhSVpF2eZVtVOs6g7fkpOxsVnpRU1Bz2xG4ySI79IRuapDJoAQFkoOgfdQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.5.tgz", + "integrity": "sha512-JuxY3xcquRsOezKq6PEHwCgd1rh1GnhyH6urVEWUzWn1c1PC4EOoyffMD+zLZtFuZF5qR1I0+cqDRNKyPvpK7Q==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.5.tgz", + "integrity": "sha512-z2Q62bk0ptADFz8a0vtPvnm6vxpyP3hIEYMU+i1AWz263Pj8Mc38cm/4sjzxu+LIsAfhe9HzvYNS49lV+KsatQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.5.tgz", + "integrity": "sha512-ma9JDC7FJ16SuPXlLKkvOD2qLsmW/cKfqK4zzM2iJE1PbckF3BlR08lYqHV89gmuoTpYB55+z8Y5Fz4wEJBVDA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.5.tgz", + "integrity": "sha512-cdCwtLGmvC1QVrkIsyzv01+o9eR+wodMJUZ9Ak3owhcGxPRB53/WvrDHAFYA6i8Oy232nuen1YqWeEohqBuSzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.5.tgz", + "integrity": "sha512-Hr1o0veBymg9SmkCqYnfaiUnes5YK6k/lKFA5MhNmiEN5fNqxyPUCdRZMFs3Ajtx2OFW4q3KuYVRwGA7jdLo7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.5.tgz", + "integrity": "sha512-XLT0gfGMcxk6CMRLDkgqEPTyG8Oa0OFe1tPv2RVbphSOjFWJwZgK3TYWx39i/7gqpDHlax0AP6cgMygNJrA6zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.5.tgz", + "integrity": "sha512-hco8eaoTcvtmuPhavyCZhrk5QIcLiyAUhEso87ApAWDllG7djIrWiOCtqn48k4pHz+L8oCQlE0nwNHfcYcxOPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.5.tgz", + "integrity": "sha512-1ixKFGM2FwM+6kQS2ojfY3aAelICxjiCzeg4nTHpkeU1Tfs4RC+lVLrgq5NwcBC7ZLr6UfY3Ct3D6suPeOf7BQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@vscode/vsce/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vscode/vsce/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@vscode/vsce/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@vscode/vsce/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -1530,11 +2515,14 @@ } }, "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "Python-2.0" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, "node_modules/array-union": { "version": "2.1.0", @@ -1556,6 +2544,16 @@ "node": ">=12" } }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -1563,12 +2561,52 @@ "dev": true, "license": "MIT" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, "node_modules/basic-auth": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", @@ -1582,10 +2620,53 @@ "node": ">= 0.8" } }, + "node_modules/binaryextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", + "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/boundary": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", + "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -1604,6 +2685,65 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -1694,6 +2834,50 @@ "node": ">= 16" } }, + "node_modules/cheerio": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz", + "integrity": "sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^10.0.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.10.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/chevrotain": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", @@ -1720,6 +2904,24 @@ "chevrotain": "^11.0.0" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -1735,6 +2937,34 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1755,6 +2985,19 @@ "dev": true, "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", @@ -1854,6 +3097,36 @@ "node": ">= 8" } }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -1889,6 +3162,23 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-eql": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", @@ -1899,6 +3189,17 @@ "node": ">=6" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1906,6 +3207,70 @@ "dev": true, "license": "MIT" }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1932,6 +3297,65 @@ "node": ">=6.0.0" } }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -1947,6 +3371,39 @@ "node": ">= 0.4" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editions": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/editions/-/editions-6.21.0.tgz", + "integrity": "sha512-ofkXJtn7z0urokN62DI3SBo/5xAtF0rR7tn+S/bSYV79Ka8pTajIIl+fFQ1q88DQEImymmo97M4azY3WX/nUdg==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "version-range": "^4.13.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -1954,6 +3411,54 @@ "dev": true, "license": "MIT" }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -1994,6 +3499,22 @@ "node": ">= 0.4" } }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", @@ -2129,26 +3650,50 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } + "license": "Python-2.0" }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -2173,6 +3718,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2217,6 +3782,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -2280,6 +3859,17 @@ "dev": true, "license": "MIT" }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/expect-type": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", @@ -2341,6 +3931,23 @@ "dev": true, "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -2351,6 +3958,16 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2437,6 +4054,48 @@ } } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "dev": true, + "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.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -2533,23 +4192,33 @@ "node": ">= 0.4" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2568,28 +4237,20 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/glob/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": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -2679,6 +4340,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -2702,6 +4379,19 @@ "he": "bin/he" } }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", @@ -2715,6 +4405,52 @@ "node": ">=12" } }, + "node_modules/html-encoding-sniffer/node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -2730,6 +4466,20 @@ "node": ">=8.0.0" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/http-server": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", @@ -2788,6 +4538,20 @@ "node": ">=8" } }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -2801,6 +4565,28 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause", + "optional": true + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2849,6 +4635,16 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2868,6 +4664,37 @@ "dev": true, "license": "ISC" }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2901,6 +4728,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2918,7 +4764,23 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/isexe": { @@ -2928,14 +4790,56 @@ "dev": true, "license": "ISC" }, + "node_modules/istextorbinary": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", + "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "binaryextensions": "^6.11.0", + "editions": "^6.21.0", + "textextensions": "^6.11.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "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": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -2948,10 +4852,20 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, @@ -2962,6 +4876,26 @@ "dev": true, "license": "MIT" }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -2985,6 +4919,65 @@ "node": "*" } }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -3044,6 +5037,16 @@ "railroad-diagrams": "~1.0.0" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3058,6 +5061,26 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3087,6 +5110,48 @@ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3094,13 +5159,40 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", + "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", "dev": true, "license": "MIT" }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -3111,6 +5203,31 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -3121,6 +5238,13 @@ "node": ">= 0.4" } }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3158,6 +5282,43 @@ "node": ">=4" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -3184,6 +5345,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/monaco-editor": { "name": "@codingame/monaco-vscode-editor-api", "version": "3.2.3", @@ -3224,38 +5403,152 @@ } } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.75.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", + "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/node-sarif-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-2.0.3.tgz", + "integrity": "sha512-Pzr3rol8fvhG/oJjIq2NTVB0vmdNNlz22FENhhPojYRZ4/ee08CfK4YuKmuL54V9MLhI1kpzxfOJ/63LzmZzDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sarif": "^2.1.4", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/node-sarif-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "MIT" + "license": "ISC" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } }, "node_modules/object-inspect": { "version": "1.13.4", @@ -3280,6 +5573,25 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", + "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", @@ -3340,6 +5652,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3353,6 +5688,112 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3383,6 +5824,33 @@ "node": ">=8" } }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -3410,6 +5878,13 @@ "node": ">= 14.16" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -3430,6 +5905,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/portfinder": { "version": "1.0.37", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.37.tgz", @@ -3445,9 +5930,9 @@ } }, "node_modules/postcss": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", - "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -3473,6 +5958,34 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3483,6 +5996,18 @@ "node": ">= 0.8.0" } }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3493,6 +6018,16 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -3530,12 +6065,134 @@ ], "license": "MIT" }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc-config-loader/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/rc-config-loader/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "license": "CC0-1.0" + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/require-directory": { "version": "2.1.1", @@ -3547,6 +6204,16 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -3592,10 +6259,56 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/rollup": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", - "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", "dev": true, "license": "MIT", "dependencies": { @@ -3609,29 +6322,42 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.1", - "@rollup/rollup-android-arm64": "4.41.1", - "@rollup/rollup-darwin-arm64": "4.41.1", - "@rollup/rollup-darwin-x64": "4.41.1", - "@rollup/rollup-freebsd-arm64": "4.41.1", - "@rollup/rollup-freebsd-x64": "4.41.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", - "@rollup/rollup-linux-arm-musleabihf": "4.41.1", - "@rollup/rollup-linux-arm64-gnu": "4.41.1", - "@rollup/rollup-linux-arm64-musl": "4.41.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-musl": "4.41.1", - "@rollup/rollup-linux-s390x-gnu": "4.41.1", - "@rollup/rollup-linux-x64-gnu": "4.41.1", - "@rollup/rollup-linux-x64-musl": "4.41.1", - "@rollup/rollup-win32-arm64-msvc": "4.41.1", - "@rollup/rollup-win32-ia32-msvc": "4.41.1", - "@rollup/rollup-win32-x64-msvc": "4.41.1", + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", "fsevents": "~2.3.2" } }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3680,6 +6406,92 @@ "dev": true, "license": "MIT" }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "license": "ISC" + }, + "node_modules/secretlint": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-9.3.4.tgz", + "integrity": "sha512-iNOzgMX/+W1SQNW/TW6eikGChyaPiazr2AEXjzjpoB0R6QJEulvlwhn0KLT1/xjPfdYrk3yiXZM40csUqET8uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/config-creator": "^9.3.4", + "@secretlint/formatter": "^9.3.4", + "@secretlint/node": "^9.3.4", + "@secretlint/profiler": "^9.3.4", + "debug": "^4.4.1", + "globby": "^14.1.0", + "read-pkg": "^8.1.0" + }, + "bin": { + "secretlint": "bin/secretlint.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/secretlint/node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/secretlint/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/secretlint/node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/secretlint/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", @@ -3818,6 +6630,68 @@ "dev": true, "license": "ISC" }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3828,6 +6702,24 @@ "node": ">=8" } }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -3844,6 +6736,49 @@ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -3858,6 +6793,39 @@ "dev": true, "license": "MIT" }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3865,15 +6833,45 @@ "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/strip-ansi": { + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -3899,6 +6897,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/structured-source": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", + "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boundary": "^2.0.0" + } + }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -3915,6 +6943,99 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3922,6 +7043,22 @@ "dev": true, "license": "MIT" }, + "node_modules/textextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", + "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -3954,9 +7091,9 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, "license": "MIT", "peerDependencies": { @@ -3982,9 +7119,9 @@ } }, "node_modules/tinypool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz", - "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -4011,6 +7148,16 @@ "node": ">=14.0.0" } }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4054,6 +7201,30 @@ "dev": true, "license": "0BSD" }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4080,6 +7251,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, "node_modules/typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", @@ -4116,6 +7299,30 @@ "node": ">= 18.0.0" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz", + "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -4123,6 +7330,19 @@ "dev": true, "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", @@ -4162,6 +7382,48 @@ "dev": true, "license": "MIT" }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/version-range": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.14.0.tgz", + "integrity": "sha512-gjb0ARm9qlcBAonU4zPwkl9ecKkas+tC2CGwFfptTCWWIVTWY1YUbT2zZKsOAF1jR/tNxxyLwwG0cb42XlYcTg==", + "dev": true, + "license": "Artistic-2.0", + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/vite": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", @@ -4238,9 +7500,9 @@ } }, "node_modules/vite-node": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.2.tgz", - "integrity": "sha512-Xj/jovjZvDXOq2FgLXu8NsY4uHUMWtzVmMC2LkCu9HWdr9Qu1Is5sanX3Z4jOFKdohfaWDnEJWp9pRP0vVpAcA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { @@ -4261,9 +7523,9 @@ } }, "node_modules/vite/node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, "license": "MIT", "peerDependencies": { @@ -4289,20 +7551,20 @@ } }, "node_modules/vitest": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.2.tgz", - "integrity": "sha512-fyNn/Rp016Bt5qvY0OQvIUCwW2vnaEBLxP42PmKbNIoasSYjML+8xyeADOPvBe+Xfl/ubIw4og7Lt9jflRsCNw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.2", - "@vitest/mocker": "3.2.2", - "@vitest/pretty-format": "^3.2.2", - "@vitest/runner": "3.2.2", - "@vitest/snapshot": "3.2.2", - "@vitest/spy": "3.2.2", - "@vitest/utils": "3.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", @@ -4313,10 +7575,10 @@ "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", - "tinypool": "^1.1.0", + "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.2", + "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -4332,8 +7594,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.2", - "@vitest/ui": "3.2.2", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, @@ -4466,16 +7728,26 @@ "license": "MIT" }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" } }, "node_modules/which": { @@ -4522,6 +7794,25 @@ } }, "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", @@ -4539,6 +7830,73 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4546,6 +7904,30 @@ "dev": true, "license": "ISC" }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -4556,6 +7938,13 @@ "node": ">=10" } }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -4585,6 +7974,27 @@ "node": ">=12" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 6beb2e8..acd6417 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,8 @@ "typescript": "~5.1.6", "vite": "^6.3.5", "vitest": "^3.2.0", - "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3" + "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3", + "@vscode/vsce": "^3.4.0" }, "volta": { "node": "18.19.1", From aca7126dec1a857ea55fe8944890b5f15433f87f Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sun, 22 Jun 2025 14:53:38 +0200 Subject: [PATCH 31/49] various fixes, add empty type checking examples --- examples/errors/typing-errors.rcp | 13 +++++++++++++ examples/warnings/typing-warnings.rcp | 13 +++++++++++++ src/language/r-check-type-checking.ts | 8 ++++++++ src/language/util.ts | 4 ++-- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 examples/errors/typing-errors.rcp create mode 100644 examples/warnings/typing-warnings.rcp diff --git a/examples/errors/typing-errors.rcp b/examples/errors/typing-errors.rcp new file mode 100644 index 0000000..4dfa5f1 --- /dev/null +++ b/examples/errors/typing-errors.rcp @@ -0,0 +1,13 @@ +enum channel {radio, speaker} + +property-variables: friendly : bool + +agent Droid + local: status : int, mood : bool + init: true + relabel: + friendly <- mood + receive-guard: true + repeat: {true} *? [mood := true] + +system = Droid(R2D2, true) || Droid(C3PO, true) diff --git a/examples/warnings/typing-warnings.rcp b/examples/warnings/typing-warnings.rcp new file mode 100644 index 0000000..4dfa5f1 --- /dev/null +++ b/examples/warnings/typing-warnings.rcp @@ -0,0 +1,13 @@ +enum channel {radio, speaker} + +property-variables: friendly : bool + +agent Droid + local: status : int, mood : bool + init: true + relabel: + friendly <- mood + receive-guard: true + repeat: {true} *? [mood := true] + +system = Droid(R2D2, true) || Droid(C3PO, true) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 03848ef..4b582c5 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -544,6 +544,14 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition + typir.validation.Constraints.ensureNodeIsEquals(node.init, typeBool, accept, (actual, expected) => ({ + message: `Type mismatch in instance initialization: expected '${getTypeName( + expected + )}', but got '${getTypeName(actual)}'.`, + languageProperty: "init", + languageNode: node.init, + })), }); } diff --git a/src/language/util.ts b/src/language/util.ts index 7e15ff6..01a063b 100644 --- a/src/language/util.ts +++ b/src/language/util.ts @@ -253,7 +253,7 @@ export const validateAssignment = ( if (!targetRange.contains(exprRange)) { accept({ message: `Range variable cannot be ${ - property === "var" ? "relabeled" : "assigned" + property === "var" ? "relabelled" : "assigned" } as the range '${targetRange}' does not contain the range of the expression '${exprRange}'.`, languageNode: node, languageProperty: property, @@ -265,7 +265,7 @@ export const validateAssignment = ( message: `${property === "var" ? "Variable" : "Expression"} of type '${getTypeName( property === "var" ? expected : actual )}' cannot be ${ - property === "var" ? "relabeled with expression of type" : "assigned to variable of type" + property === "var" ? "relabelled with expression of type" : "assigned to variable of type" } '${getTypeName(property === "var" ? actual : expected)}'.`, languageNode: node, languageProperty: property, From 468f8db735061e9f15fb312f1b6635ddfdb79db7 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Thu, 26 Jun 2025 15:00:41 +0200 Subject: [PATCH 32/49] Update recipe submodule --- recipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe b/recipe index 8a28ca3..b29d6f4 160000 --- a/recipe +++ b/recipe @@ -1 +1 @@ -Subproject commit 8a28ca3d8b1b7a7da7e123bd0d221b89c7969b9b +Subproject commit b29d6f40f2762abac020393bee66e8a8c8680533 From 3f6385452d7761cb8350f55c5ecf0562b7783de7 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sat, 28 Jun 2025 16:23:03 +0200 Subject: [PATCH 33/49] reformat type checker file --- src/language/r-check-type-checking.ts | 107 +++++++------------------- 1 file changed, 27 insertions(+), 80 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 4b582c5..5da1076 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,80 +1,15 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; -import { - Agent, - Assign, - AutomatonState, - BinExpr, - BinObs, - Box, - Diamond, - Enum, - ExistsObs, - Finally, - ForallObs, - Get, - Globally, - Guard, - GuardCall, - isAgent, - isAssign, - isBinExpr, - isBinObs, - isBoolLiteral, - isBox, - isBroadcast, - isCase, - isChannelObs, - isChannelRef, - isDiamond, - isEnum, - isExistsObs, - isForallObs, - isGet, - isGuard, - isInstance, - isLiteralObs, - isLocal, - isLtolMod, - isLtolQuant, - isMsgStruct, - isMyself, - isNeg, - isNumberLiteral, - isParam, - isPropVar, - isRange, - isReceive, - isRelabel, - isSend, - isSenderObs, - isSupply, - isUMinus, - Local, - MsgStruct, - Neg, - Next, - Param, - PropVar, - QualifiedRef, - RCheckAstType, - Receive, - Relabel, - Send, - Supply, - SupplyLocationExpr, - UMinus, -} from "./generated/ast.js"; +import { Agent, Assign, AutomatonState, BinExpr, BinObs, Box, Diamond, Enum, ExistsObs, Finally, + ForallObs, Get, Globally, Guard, GuardCall, isAgent, isAssign, isBinExpr, isBinObs, isBoolLiteral, + isBox, isBroadcast, isCase, isChannelObs, isChannelRef, isDiamond, isEnum, isExistsObs, isForallObs, + isGet, isGuard, isInstance, isLiteralObs, isLocal, isLtolMod, isLtolQuant, isMsgStruct, isMyself, + isNeg, isNumberLiteral, isParam, isPropVar, isRange, isReceive, isRelabel, isSend, isSenderObs, + isSupply, isUMinus, Local, MsgStruct, Neg, Next, Param, PropVar, QualifiedRef, RCheckAstType, + Receive, Relabel, Send, Supply, SupplyLocationExpr, UMinus } from "./generated/ast.js"; import { assertUnreachable, AstNode } from "langium"; -import { - InferOperatorWithMultipleOperands, - InferOperatorWithSingleOperand, - InferenceRuleNotApplicable, - NO_PARAMETER_NAME, - Type, - TypirServices, - ValidationProblemAcceptor, - isClassType, -} from "typir"; +import { InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, + InferenceRuleNotApplicable, NO_PARAMETER_NAME, Type, TypirServices, + ValidationProblemAcceptor, isClassType } from "typir"; import { getClassDetails, getTypeName, intersectMaps, IntRange, validateAssignment } from "./util.js"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { @@ -99,7 +34,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "location", @@ -122,7 +61,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ name: p.name, type: p })), + inputParameters: languageNode.params.map((p) => ({ + name: p.name, + type: p, + })), associatedLanguageNode: languageNode, }) .inferenceRuleForDeclaration({ From 594fb139709c81cb7de431d59aa68061a70b87c2 Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Wed, 2 Jul 2025 23:46:33 +0200 Subject: [PATCH 34/49] remove todos --- src/language/r-check-type-checking.ts | 2 -- src/language/util.ts | 1 - 2 files changed, 3 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 5da1076..00a16a5 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -528,8 +528,6 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition ({ name: p.name, type: p, diff --git a/src/language/util.ts b/src/language/util.ts index 01a063b..0f1dd0f 100644 --- a/src/language/util.ts +++ b/src/language/util.ts @@ -54,7 +54,6 @@ export class IntRange { this.upper = upper; } - // TODO: make this iterative? public static fromRangeExpr(expr: CompoundExpr | PropVar | Target): IntRange { if (isRef(expr) || isPropVar(expr) || isPropVarRef(expr) || isTarget(expr) || isQualifiedRef(expr)) { const decl = isPropVar(expr) || isTarget(expr) ? expr : expr.variable.ref; From bbc3ee7fd1d8b34393dcccbf26427b20e7f1ea0a Mon Sep 17 00:00:00 2001 From: Benjamin Stolz <82757138+tonitrus888@users.noreply.github.com> Date: Sat, 5 Jul 2025 23:13:43 +0200 Subject: [PATCH 35/49] add range arithmetics to all comparison operators --- src/language/r-check-type-checking.ts | 47 ++++++++++++++++++++++++++- src/language/util.ts | 37 ++++++++++++++++++++- 2 files changed, 82 insertions(+), 2 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 00a16a5..8ae3d08 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -10,7 +10,7 @@ import { assertUnreachable, AstNode } from "langium"; import { InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, InferenceRuleNotApplicable, NO_PARAMETER_NAME, Type, TypirServices, ValidationProblemAcceptor, isClassType } from "typir"; -import { getClassDetails, getTypeName, intersectMaps, IntRange, validateAssignment } from "./util.js"; +import { getClassDetails, getTypeName, intersectMaps, IntRange, isComparisonOp, validateAssignment } from "./util.js"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { onInitialize(typir: TypirLangiumServices): void { @@ -496,6 +496,51 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + if (node.$type !== "BinExpr" || !isComparisonOp(node.operator)) { + return; + } + const leftType = typir.Inference.inferType(node.left); + const rightType = typir.Inference.inferType(node.right); + if ((leftType === typeRange || leftType === typeInt) && (rightType === typeInt || rightType === typeRange)) { + const leftRange = IntRange.fromRangeExpr(node.left); + const rightRange = IntRange.fromRangeExpr(node.right); + const { isAlwaysTrue, isAlwaysFalse } = IntRange.isStaticOutcome(leftRange, rightRange, node.operator); + if (!isAlwaysTrue && !isAlwaysFalse) { + return; + } + let reason; + switch (node.operator) { + case "<": + reason = isAlwaysTrue + ? `every value of '${leftRange}' is strictly less than every value of '${rightRange}'` + : `every value of '${leftRange}' is greater than or equal to every value of '${rightRange}'`; + break; + case "<=": + reason = isAlwaysTrue + ? `the max of '${leftRange}' is less than or equal to the min of '${rightRange}'` + : `the min of '${leftRange}' is greater than the max of '${rightRange}'`; + break; + case ">": + reason = isAlwaysTrue + ? `every value of '${leftRange}' is strictly greater than every value of '${rightRange}'` + : `every value of '${leftRange}' is less than or equal to every value of '${rightRange}'`; + break; + case ">=": + reason = isAlwaysTrue + ? `the min of '${leftRange}' is greater than or equal to the max of '${rightRange}'` + : `the max of '${leftRange}' is less than the min of '${rightRange}'`; + break; + } + + accept({ + message: `This comparison will always return '${isAlwaysTrue ? "true" : "false"}' as ${reason}.`, + languageNode: node, + languageProperty: "operator", + severity: "warning", + }); + } + }, }); } diff --git a/src/language/util.ts b/src/language/util.ts index 0f1dd0f..53491d7 100644 --- a/src/language/util.ts +++ b/src/language/util.ts @@ -1,6 +1,6 @@ import { NodeFileSystem } from "langium/node"; import { extractAstNode } from "../cli/cli-util.js"; -import { Agent, Assign, BaseProcess, CompoundExpr, isBinExpr, isChoice, isGet, isLocal, isMsgStruct, isNumberLiteral, isParam, isPropVar, isPropVarRef, isQualifiedRef, isReceive, isRef, isRelabel, isRep, isSend, isSequence, isSupply, isTarget, isUMinus, Local, Model, PropVar, Relabel, Sequence, Target } from "./generated/ast.js"; +import { Agent, Assign, BaseProcess, BinExpr, CompoundExpr, isBinExpr, isChoice, isGet, isLocal, isMsgStruct, isNumberLiteral, isParam, isPropVar, isPropVarRef, isQualifiedRef, isReceive, isRef, isRelabel, isRep, isSend, isSequence, isSupply, isTarget, isUMinus, Local, Model, PropVar, Relabel, Sequence, Target } from "./generated/ast.js"; import { createRCheckServices } from "./r-check-module.js"; import { AstNode } from "langium"; import { ClassTypeDetails, AnnotatedTypeAfterValidation, ValidationProblemAcceptor, TypirServices } from "typir"; @@ -45,6 +45,8 @@ const getAstReplacer = () => { }; }; +type ComparisonOp = "<" | "<=" | ">" | ">="; + export class IntRange { private lower: number; private upper: number; @@ -94,6 +96,35 @@ export class IntRange { } } + public static isStaticOutcome( + leftRange: IntRange, + rightRange: IntRange, + operator: ComparisonOp + ): { isAlwaysTrue: boolean; isAlwaysFalse: boolean } { + switch (operator) { + case "<": + return { + isAlwaysTrue: leftRange.upper < rightRange.lower, + isAlwaysFalse: leftRange.lower >= rightRange.upper, + }; + case "<=": + return { + isAlwaysTrue: leftRange.upper <= rightRange.lower, + isAlwaysFalse: leftRange.lower > rightRange.upper, + }; + case ">": + return { + isAlwaysTrue: leftRange.lower > rightRange.upper, + isAlwaysFalse: leftRange.upper <= rightRange.lower, + }; + case ">=": + return { + isAlwaysTrue: leftRange.lower >= rightRange.upper, + isAlwaysFalse: leftRange.upper < rightRange.lower, + }; + } + } + public plus(other: IntRange): IntRange { return new IntRange(this.lower + other.lower, this.upper + other.upper); } @@ -138,6 +169,10 @@ export class IntRange { } } +export const isComparisonOp = (o: BinExpr["operator"]): o is ComparisonOp => { + return o === "<" || o === "<=" || o === ">" || o === ">="; +}; + export const getClassDetails = (agent: Agent): ClassTypeDetails => { const fieldNames = new Set(["automaton-state"]); From 5cef417ded4f145112741cabedd2bc17fc86f71c Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Fri, 11 Jul 2025 11:46:02 +0200 Subject: [PATCH 36/49] GetterObs nodes type to bool --- src/language/r-check-type-checking.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 8ae3d08..22fb521 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -2,7 +2,7 @@ import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium import { Agent, Assign, AutomatonState, BinExpr, BinObs, Box, Diamond, Enum, ExistsObs, Finally, ForallObs, Get, Globally, Guard, GuardCall, isAgent, isAssign, isBinExpr, isBinObs, isBoolLiteral, isBox, isBroadcast, isCase, isChannelObs, isChannelRef, isDiamond, isEnum, isExistsObs, isForallObs, - isGet, isGuard, isInstance, isLiteralObs, isLocal, isLtolMod, isLtolQuant, isMsgStruct, isMyself, + isGet, isGetterObs, isGuard, isInstance, isLiteralObs, isLocal, isLtolMod, isLtolQuant, isMsgStruct, isMyself, isNeg, isNumberLiteral, isParam, isPropVar, isRange, isReceive, isRelabel, isSend, isSenderObs, isSupply, isUMinus, Local, MsgStruct, Neg, Next, Param, PropVar, QualifiedRef, RCheckAstType, Receive, Relabel, Send, Supply, SupplyLocationExpr, UMinus } from "./generated/ast.js"; @@ -20,6 +20,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "bool", From 3e041e28c25a9a25a40858c0aac244e9baaa4d14 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Mon, 18 Aug 2025 13:29:42 +0200 Subject: [PATCH 37/49] Fix Typir dependency Typir 0.2.2 brings in Langium 3.5.0 which for some reason breaks everything. Stay with 0.2.1 for now --- package-lock.json | 30 +++++++++++++++++++++++++++--- package.json | 4 ++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f2b360..11e065f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,8 @@ "commander": "~11.0.0", "langium": "~3.4.0", "monaco-languageclient": "~8.1.1", + "typir": "<=0.2.1", + "typir-langium": "<=0.2.1", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, @@ -2737,9 +2739,9 @@ } }, "node_modules/chai": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", - "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.1.tgz", + "integrity": "sha512-48af6xm9gQK8rhIcOxWwdGzIervm8BVTin+yRp9HEvU20BtVZ2lBywlIJBzwaDtvo0FvjeL7QdCADoUoqIbV3A==", "dev": true, "license": "MIT", "dependencies": { @@ -7317,6 +7319,28 @@ "node": ">=14.17" } }, + "node_modules/typir": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/typir/-/typir-0.2.1.tgz", + "integrity": "sha512-OkW/ZDKQmeOLyMcRCn/O/D45GhzWas148oRwxZmoQTw5N2+KkjtZqNL1h3RHSubLDTCMlOWnrlvXr2Pxsce0KQ==", + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + } + }, + "node_modules/typir-langium": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/typir-langium/-/typir-langium-0.2.1.tgz", + "integrity": "sha512-Uu7eV+yu++g93eISWrzajCeqGNZvQZsPRdrV+g3lnFVrCmlvSmX9p2b18ysWNcCS4xTZNJfIIrmNY3z2d22ldQ==", + "license": "MIT", + "dependencies": { + "langium": "~3.4.0", + "typir": "~0.2.1" + }, + "engines": { + "node": ">= 18.0.0" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", diff --git a/package.json b/package.json index d4991d7..676f7d4 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,8 @@ "commander": "~11.0.0", "langium": "~3.4.0", "monaco-languageclient": "~8.1.1", - "typir": "~0.2.0", - "typir-langium": "~0.2.0", + "typir": "<=0.2.1", + "typir-langium": "<=0.2.1", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, From f63c1bfa4c408bc3123fe24a0a1e8a845647a8b6 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Mon, 18 Aug 2025 13:30:39 +0200 Subject: [PATCH 38/49] Organise imports --- src/language/r-check-type-checking.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 22fb521..31cf9a5 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,15 +1,21 @@ +import { assertUnreachable, AstNode } from "langium"; +import { + InferenceRuleNotApplicable, + InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, + isClassType, + NO_PARAMETER_NAME, Type, TypirServices, + ValidationProblemAcceptor +} from "typir"; import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; -import { Agent, Assign, AutomatonState, BinExpr, BinObs, Box, Diamond, Enum, ExistsObs, Finally, +import { + Agent, Assign, AutomatonState, BinExpr, BinObs, Box, Diamond, Enum, ExistsObs, Finally, ForallObs, Get, Globally, Guard, GuardCall, isAgent, isAssign, isBinExpr, isBinObs, isBoolLiteral, isBox, isBroadcast, isCase, isChannelObs, isChannelRef, isDiamond, isEnum, isExistsObs, isForallObs, isGet, isGetterObs, isGuard, isInstance, isLiteralObs, isLocal, isLtolMod, isLtolQuant, isMsgStruct, isMyself, isNeg, isNumberLiteral, isParam, isPropVar, isRange, isReceive, isRelabel, isSend, isSenderObs, isSupply, isUMinus, Local, MsgStruct, Neg, Next, Param, PropVar, QualifiedRef, RCheckAstType, - Receive, Relabel, Send, Supply, SupplyLocationExpr, UMinus } from "./generated/ast.js"; -import { assertUnreachable, AstNode } from "langium"; -import { InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, - InferenceRuleNotApplicable, NO_PARAMETER_NAME, Type, TypirServices, - ValidationProblemAcceptor, isClassType } from "typir"; + Receive, Relabel, Send, Supply, SupplyLocationExpr, UMinus +} from "./generated/ast.js"; import { getClassDetails, getTypeName, intersectMaps, IntRange, isComparisonOp, validateAssignment } from "./util.js"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { From a91eeeb4aa64ab637938b42d246c47a1f21a7985 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Tue, 19 Aug 2025 14:01:06 +0200 Subject: [PATCH 39/49] Split Assign into UpdateAssign, MessageAssign --- src/language/r-check.langium | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/language/r-check.langium b/src/language/r-check.langium index b1a7ce6..d104206 100644 --- a/src/language/r-check.langium +++ b/src/language/r-check.langium @@ -50,8 +50,8 @@ Rep: 'rep' process=Choice; fragment CmdHeader: (name=ID ':')? '{' psi=CompoundExpr '}'; -fragment Update: '[' (update+=Assign (',' update+=Assign)*)? ']'; -fragment Data: '(' (data+=Assign (',' data+=Assign)*)? ')'; +fragment Update: '[' (update+=UpdateAssign (',' update+=UpdateAssign)*)? ']'; +fragment Data: '(' (data+=MessageAssign (',' data+=MessageAssign)*)? ')'; Send: CmdHeader chanExpr=ChannelExpr '!' sendGuard=CompoundExpr Data Update; @@ -65,7 +65,9 @@ Supply: type Command = Send | Receive | Get | Supply; type Process = BaseProcess | Rep | Sequence | Choice; -Assign: left=[Target] ':=' right=CompoundExpr; +Assign: MessageAssign | UpdateAssign ; +MessageAssign: left=[MsgStruct] ':=' right=CompoundExpr; +UpdateAssign: left=[Local] ':=' right=CompoundExpr; ChannelExprRef: Case | Local; ChannelExpr: (channel=[ChannelExprRef] | bcast = '*'); @@ -76,6 +78,7 @@ GetLocationExpr: predicate=CompoundExpr; fragment TypedDeclaration: name=ID ':' (builtinType=('bool'|'int'|'location') | customType=[Enum] | rangeType=Range); + // name=ID ':' (builtinType=('bool'|'int'|'location') | customType=[Enum] | rangeType=Range | notfound=ID); Range: lower=INT '..' upper=INT; From 4d7e33dcc454037eb4d8fa73ef0ffc95acce0647 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Tue, 19 Aug 2025 14:01:12 +0200 Subject: [PATCH 40/49] Remove Local from primitive type creation --- src/language/r-check-type-checking.ts | 38 ++++++++++++++++----------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 31cf9a5..aed2721 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -13,7 +13,7 @@ import { isBox, isBroadcast, isCase, isChannelObs, isChannelRef, isDiamond, isEnum, isExistsObs, isForallObs, isGet, isGetterObs, isGuard, isInstance, isLiteralObs, isLocal, isLtolMod, isLtolQuant, isMsgStruct, isMyself, isNeg, isNumberLiteral, isParam, isPropVar, isRange, isReceive, isRelabel, isSend, isSenderObs, - isSupply, isUMinus, Local, MsgStruct, Neg, Next, Param, PropVar, QualifiedRef, RCheckAstType, + isSupply, isUMinus, MsgStruct, Neg, Next, Param, PropVar, QualifiedRef, RCheckAstType, Receive, Relabel, Send, Supply, SupplyLocationExpr, UMinus } from "./generated/ast.js"; import { getClassDetails, getTypeName, intersectMaps, IntRange, isComparisonOp, validateAssignment } from "./util.js"; @@ -28,16 +28,16 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "bool", + languageKey: [Param, MsgStruct, PropVar], + matching: (node: Param | MsgStruct | PropVar) => node.builtinType === "bool", }) .finish(); const typeInt = typir.factory.Primitives.create({ primitiveName: "int" }) .inferenceRule({ filter: isNumberLiteral }) .inferenceRule({ - languageKey: [Local, Param, MsgStruct, PropVar], - matching: (node: Local | Param | MsgStruct | PropVar) => node.builtinType === "int", + languageKey: [Param, MsgStruct, PropVar], + matching: (node: Param | MsgStruct | PropVar) => node.builtinType === "int", }) .finish(); @@ -46,8 +46,8 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.rangeType !== undefined, + languageKey: [Param, MsgStruct, PropVar], + matching: (node: Param | MsgStruct | PropVar) => node.rangeType !== undefined, }) .finish(); @@ -57,8 +57,8 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "location", + languageKey: [Param, MsgStruct, PropVar], + matching: (node: Param | MsgStruct | PropVar) => node.builtinType === "location", }) .inferenceRule({ filter: isMyself }) .inferenceRule({ @@ -74,8 +74,8 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.customType?.ref?.name === "channel", + languageKey: [Param, MsgStruct, PropVar], + matching: (node: Param | MsgStruct | PropVar) => node.customType?.ref?.name === "channel", }) .inferenceRule({ languageKey: Enum, @@ -267,7 +267,15 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { const ref = languageNode.variable.ref; if (isLocal(ref)) { - return ref; + if (ref.builtinType === "bool") { return typeBool; } + else if (ref.builtinType === "int") { return typeInt; } + else if (ref.builtinType === "location") { return typeLocation; } + else if (ref.rangeType !== undefined) { return ref.rangeType; } + else if (ref.customType !== undefined) { + const customTypeRef = ref.customType.ref!; + return customTypeRef.name === "channel" ? typeChannel : customTypeRef; + } + else { return InferenceRuleNotApplicable; } } else if (isCase(ref)) { return ref.$container; } else if (isParam(ref)) { @@ -566,8 +574,8 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition languageNode === node.customType?.ref, + languageKey: [Param, MsgStruct, PropVar], + matching: (node: Param | MsgStruct | PropVar) => languageNode === node.customType?.ref, }) .inferenceRule({ languageKey: Enum, @@ -619,7 +627,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.variable.ref!.name!, + field: (node: QualifiedRef) => node.variable.ref!, }) .inferenceRuleForFieldAccess({ languageKey: AutomatonState, From 095f92d0f4c98989d1f2cdcf714ff100700a026b Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Mon, 18 Aug 2025 17:44:08 +0200 Subject: [PATCH 41/49] refactor validateAssignment() --- src/language/r-check-type-checking.ts | 4 ++-- src/language/util.ts | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index aed2721..83c45b5 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -181,7 +181,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, operands: (node: Relabel) => [node.var.ref!, node.expr], validation: (node, _operator, _functionType, accept, typir) => - validateAssignment(node, getTypeName, accept, typir), + validateAssignment(node.var.ref!, node.expr, true, getTypeName, accept, typir), validateArgumentsOfCalls: true, }) .finish(); @@ -194,7 +194,7 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition true, operands: (node: Assign) => [node.left.ref!, node.right], validation: (node, _operator, _functionType, accept, typir) => - validateAssignment(node, getTypeName, accept, typir), + validateAssignment(node.left.ref!, node.right, true, getTypeName, accept, typir), validateArgumentsOfCalls: true, }) .finish(); diff --git a/src/language/util.ts b/src/language/util.ts index 53491d7..c46c23d 100644 --- a/src/language/util.ts +++ b/src/language/util.ts @@ -1,9 +1,9 @@ +import { AstNode } from "langium"; import { NodeFileSystem } from "langium/node"; +import { AnnotatedTypeAfterValidation, ClassTypeDetails, TypirServices, ValidationProblemAcceptor } from "typir"; import { extractAstNode } from "../cli/cli-util.js"; -import { Agent, Assign, BaseProcess, BinExpr, CompoundExpr, isBinExpr, isChoice, isGet, isLocal, isMsgStruct, isNumberLiteral, isParam, isPropVar, isPropVarRef, isQualifiedRef, isReceive, isRef, isRelabel, isRep, isSend, isSequence, isSupply, isTarget, isUMinus, Local, Model, PropVar, Relabel, Sequence, Target } from "./generated/ast.js"; +import { Agent, BaseProcess, BinExpr, CompoundExpr, isBinExpr, isChoice, isGet, isLocal, isMsgStruct, isNumberLiteral, isParam, isPropVar, isPropVarRef, isQualifiedRef, isReceive, isRef, isRep, isSend, isSequence, isSupply, isTarget, isUMinus, Local, Model, PropVar, Sequence, Target } from "./generated/ast.js"; import { createRCheckServices } from "./r-check-module.js"; -import { AstNode } from "langium"; -import { ClassTypeDetails, AnnotatedTypeAfterValidation, ValidationProblemAcceptor, TypirServices } from "typir"; export async function parseToJson(fileName: string) { const services = createRCheckServices(NodeFileSystem).RCheck; @@ -265,14 +265,15 @@ export const intersectMaps = (maps: Map[]): Map => { }; export const validateAssignment = ( - node: Relabel | Assign, + targetNode: Target, + exprNode: CompoundExpr, + relabel: boolean, getTypeName: (type: AnnotatedTypeAfterValidation) => string | undefined, accept: ValidationProblemAcceptor, typir: TypirServices ) => { - const targetNode = isRelabel(node) ? node.var.ref! : node.left.ref!; - const exprNode = isRelabel(node) ? node.expr : node.right; - const property = isRelabel(node) ? "var" : "left"; + const node = exprNode.$container as AstNode; + const property = relabel ? "var" : "left"; const typeInt = typir.factory.Primitives.get({ primitiveName: "int" }); const typeRange = typir.factory.Primitives.get({ primitiveName: "range" }); @@ -280,14 +281,13 @@ export const validateAssignment = ( const targetType = typir.Inference.inferType(targetNode); const exprType = typir.Inference.inferType(exprNode); - if ((targetType === typeRange && exprType === typeInt) || (targetType === typeRange && exprType === typeRange)) { + if (targetType === typeRange && (exprType === typeInt || exprType === typeRange)) { const targetRange = IntRange.fromRangeExpr(targetNode); const exprRange = IntRange.fromRangeExpr(exprNode); if (!targetRange.contains(exprRange)) { accept({ - message: `Range variable cannot be ${ - property === "var" ? "relabelled" : "assigned" + message: `Range variable cannot be ${relabel ? "relabelled" : "assigned" } as the range '${targetRange}' does not contain the range of the expression '${exprRange}'.`, languageNode: node, languageProperty: property, @@ -296,10 +296,10 @@ export const validateAssignment = ( } } else { typir.validation.Constraints.ensureNodeIsAssignable(exprNode, targetNode, accept, (actual, expected) => ({ - message: `${property === "var" ? "Variable" : "Expression"} of type '${getTypeName( - property === "var" ? expected : actual + message: `${relabel ? "Variable" : "Expression"} of type '${getTypeName( + relabel ? expected : actual )}' cannot be ${ - property === "var" ? "relabelled with expression of type" : "assigned to variable of type" + relabel ? "relabelled with expression of type" : "assigned to variable of type" } '${getTypeName(property === "var" ? actual : expected)}'.`, languageNode: node, languageProperty: property, From 0f0180c18ae625a0745c15650a5e4cc79c311868 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Tue, 19 Aug 2025 14:10:18 +0200 Subject: [PATCH 42/49] Fix type inference of local variables I did it! As it turns out, if you peek the .ref field of a Reference<> object that does not link, Langium gets really mad. We use an inference rule to make type inference of these nodes "lazy", and lookup if a custom type (ie., an Enum) exists that matches the ref's .$refText field (which is always available). --- src/language/r-check-type-checking.ts | 57 ++++++++++++++++----------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 83c45b5..1bfd112 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -1,22 +1,27 @@ import { assertUnreachable, AstNode } from "langium"; import { - InferenceRuleNotApplicable, - InferOperatorWithMultipleOperands, InferOperatorWithSingleOperand, - isClassType, - NO_PARAMETER_NAME, Type, TypirServices, - ValidationProblemAcceptor + InferenceRuleNotApplicable, InferOperatorWithMultipleOperands, + InferOperatorWithSingleOperand, isClassType, NO_PARAMETER_NAME, Type, + TypirServices, ValidationProblemAcceptor } from "typir"; -import { LangiumTypeSystemDefinition, TypirLangiumServices } from "typir-langium"; import { - Agent, Assign, AutomatonState, BinExpr, BinObs, Box, Diamond, Enum, ExistsObs, Finally, - ForallObs, Get, Globally, Guard, GuardCall, isAgent, isAssign, isBinExpr, isBinObs, isBoolLiteral, - isBox, isBroadcast, isCase, isChannelObs, isChannelRef, isDiamond, isEnum, isExistsObs, isForallObs, - isGet, isGetterObs, isGuard, isInstance, isLiteralObs, isLocal, isLtolMod, isLtolQuant, isMsgStruct, isMyself, - isNeg, isNumberLiteral, isParam, isPropVar, isRange, isReceive, isRelabel, isSend, isSenderObs, - isSupply, isUMinus, MsgStruct, Neg, Next, Param, PropVar, QualifiedRef, RCheckAstType, - Receive, Relabel, Send, Supply, SupplyLocationExpr, UMinus + LangiumTypeSystemDefinition, TypirLangiumServices +} from "typir-langium"; +import { + Agent, Assign, AutomatonState, BinExpr, BinObs, Box, Diamond, Enum, ExistsObs, + Finally, ForallObs, Get, Globally, Guard, GuardCall, isAgent, isAssign, + isBinExpr, isBinObs, isBoolLiteral, isBox, isBroadcast, isCase, isChannelObs, + isChannelRef, isDiamond, isEnum, isExistsObs, isForallObs, isGet, isGetterObs, + isGuard, isInstance, isLiteralObs, isLocal, isLtolMod, isLtolQuant, isMsgStruct, + isMyself, isNeg, isNumberLiteral, isParam, isPropVar, isRange, isReceive, + isRelabel, isSend, isSenderObs, isSupply, isUMinus, MsgStruct, Neg, Next, Param, + PropVar, QualifiedRef, RCheckAstType, Receive, Relabel, Send, Supply, + SupplyLocationExpr, UMinus } from "./generated/ast.js"; -import { getClassDetails, getTypeName, intersectMaps, IntRange, isComparisonOp, validateAssignment } from "./util.js"; +import { + getClassDetails, getTypeName, intersectMaps, IntRange, isComparisonOp, + validateAssignment +} from "./util.js"; export class RCheckTypeSystem implements LangiumTypeSystemDefinition { onInitialize(typir: TypirLangiumServices): void { @@ -261,21 +266,25 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition { + if (languageNode.builtinType === "bool") { return typeBool; } + else if (languageNode.builtinType === "int") { return typeInt; } + else if (languageNode.builtinType === "location") { return typeLocation; } + else if (languageNode.rangeType !== undefined) { return languageNode.rangeType; } + else if (languageNode.customType !== undefined) { + const refText = languageNode.customType.$refText; + if (refText === "channel") { return typeChannel; } + const lookup = typir.factory.Primitives.get({ primitiveName: refText }); + return lookup !== undefined ? lookup : InferenceRuleNotApplicable; + } + return InferenceRuleNotApplicable; + }, Ref: (languageNode) => { const ref = languageNode.variable.ref; if (isLocal(ref)) { - if (ref.builtinType === "bool") { return typeBool; } - else if (ref.builtinType === "int") { return typeInt; } - else if (ref.builtinType === "location") { return typeLocation; } - else if (ref.rangeType !== undefined) { return ref.rangeType; } - else if (ref.customType !== undefined) { - const customTypeRef = ref.customType.ref!; - return customTypeRef.name === "channel" ? typeChannel : customTypeRef; - } - else { return InferenceRuleNotApplicable; } + return ref; } else if (isCase(ref)) { return ref.$container; } else if (isParam(ref)) { From ca36c06bc460f0040fffa75efc9b3ee4289ebcad Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Wed, 20 Aug 2025 10:37:56 +0200 Subject: [PATCH 43/49] Fix resolution of custom enums --- src/language/r-check-type-checking.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 1bfd112..5434fce 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -276,7 +276,9 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition Date: Wed, 20 Aug 2025 16:17:34 +0200 Subject: [PATCH 44/49] Remove eslint dependency It was doing nothing (no rules) and version 8 is EOL anyway. --- .eslintrc.json | 13 - package-lock.json | 1563 ++++----------------------------------------- package.json | 6 +- 3 files changed, 119 insertions(+), 1463 deletions(-) delete mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 8252235..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module" - }, - "plugins": [ - "@typescript-eslint" - ], - "rules": { - } -} diff --git a/package-lock.json b/package-lock.json index 11e065f..cebaf55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,12 +24,9 @@ "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", "@types/node": "^18.0.0", "@types/vscode": "~1.94.0", - "@typescript-eslint/eslint-plugin": "~7.3.1", - "@typescript-eslint/parser": "~7.3.1", "@vscode/vsce": "^3.4.0", "concurrently": "~8.2.1", "esbuild": "^0.25.5", - "eslint": "~8.57.0", "http-server": "~14.1.1", "langium-cli": "~3.4.0", "typescript": "~5.1.6", @@ -191,22 +188,22 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.20.0.tgz", - "integrity": "sha512-JBGaxnYAvzFsT5TU6XhVpqc4XVMFjzsi6rrAVINX0PL3+wzs+k12fnvN/XFICvzCfV28NvHzxGfRRBoqE6GxNg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.21.0.tgz", + "integrity": "sha512-vgzhz1F3DIB8qcjeJ3DLxMAha4iEaV2BDd1nxPP0ovTjIrpFUGlbhI+Z0pnK+GXctf2UmCwujH2L8xd8CdlMvw==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.11.0" + "@azure/msal-common": "15.12.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.11.0.tgz", - "integrity": "sha512-1IseGNH6XGWe+5xhZlhasTJP6Ob7tnVSlfFUnjdeH4Kik0n1SORTmdB6xxTwbx9Ro8EuO0XaRzpdABWSf15sdg==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.12.0.tgz", + "integrity": "sha512-4ucXbjVw8KJ5QBgnGJUeA07c8iznwlk5ioHIhI4ASXcXgcf2yRFhWzYOyWg/cI49LC9ekpFJeQtO3zjDTbl6TQ==", "dev": true, "license": "MIT", "engines": { @@ -214,13 +211,13 @@ } }, "node_modules/@azure/msal-node": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.7.1.tgz", - "integrity": "sha512-ZTopY+BmE/OubqTXEQ5Eq+h6M5NKTchQBtvLj1tgiAf26lk2C+9jJTvtHjcyzE3iWn3wzySJLa4ArcjHJaZMQw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.7.2.tgz", + "integrity": "sha512-pZ4GdPL9sBqgbdlQOIBDOrcqoFtCHkOVvvDYdhZOGHzpXp/nEwcL0PZt+qCHyy21fnK2GavvnFA4PeNb1ZGpDg==", "dev": true, "license": "MIT", "dependencies": { - "@azure/msal-common": "15.11.0", + "@azure/msal-common": "15.12.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -844,199 +841,6 @@ "node": ">=18" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/@isaacs/balanced-match": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", @@ -1149,9 +953,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.3.tgz", - "integrity": "sha512-UmTdvXnLlqQNOCJnyksjPs1G4GqXNGW1LrzCe8+8QoaLhhDeTXYBgJ3k6x61WIhlHX2U+VzEJ55TtIjR/HTySA==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.4.tgz", + "integrity": "sha512-B2wfzCJ+ps/OBzRjeds7DlJumCU3rXMxJJS1vzURyj7+KBHGONm7c9q1TfdBl4vCuNMkDvARn3PBl2wZzuR5mw==", "cpu": [ "arm" ], @@ -1163,9 +967,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.3.tgz", - "integrity": "sha512-8NoxqLpXm7VyeI0ocidh335D6OKT0UJ6fHdnIxf3+6oOerZZc+O7r+UhvROji6OspyPm+rrIdb1gTXtVIqn+Sg==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.4.tgz", + "integrity": "sha512-FGJYXvYdn8Bs6lAlBZYT5n+4x0ciEp4cmttsvKAZc/c8/JiPaQK8u0c/86vKX8lA7OY/+37lIQSe0YoAImvBAA==", "cpu": [ "arm64" ], @@ -1177,9 +981,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.3.tgz", - "integrity": "sha512-csnNavqZVs1+7/hUKtgjMECsNG2cdB8F7XBHP6FfQjqhjF8rzMzb3SLyy/1BG7YSfQ+bG75Ph7DyedbUqwq1rA==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.4.tgz", + "integrity": "sha512-/9qwE/BM7ATw/W/OFEMTm3dmywbJyLQb4f4v5nmOjgYxPIGpw7HaxRi6LnD4Pjn/q7k55FGeHe1/OD02w63apA==", "cpu": [ "arm64" ], @@ -1191,9 +995,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.3.tgz", - "integrity": "sha512-r2MXNjbuYabSIX5yQqnT8SGSQ26XQc8fmp6UhlYJd95PZJkQD1u82fWP7HqvGUf33IsOC6qsiV+vcuD4SDP6iw==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.4.tgz", + "integrity": "sha512-QkWfNbeRuzFnv2d0aPlrzcA3Ebq2mE8kX/5Pl7VdRShbPBjSnom7dbT8E3Jmhxo2RL784hyqGvR5KHavCJQciw==", "cpu": [ "x64" ], @@ -1205,9 +1009,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.3.tgz", - "integrity": "sha512-uluObTmgPJDuJh9xqxyr7MV61Imq+0IvVsAlWyvxAaBSNzCcmZlhfYcRhCdMaCsy46ccZa7vtDDripgs9Jkqsw==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.4.tgz", + "integrity": "sha512-+ToyOMYnSfV8D+ckxO6NthPln/PDNp1P6INcNypfZ7muLmEvPKXqduUiD8DlJpMMT8LxHcE5W0dK9kXfJke9Zw==", "cpu": [ "arm64" ], @@ -1219,9 +1023,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.3.tgz", - "integrity": "sha512-AVJXEq9RVHQnejdbFvh1eWEoobohUYN3nqJIPI4mNTMpsyYN01VvcAClxflyk2HIxvLpRcRggpX1m9hkXkpC/A==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.4.tgz", + "integrity": "sha512-cGT6ey/W+sje6zywbLiqmkfkO210FgRz7tepWAzzEVgQU8Hn91JJmQWNqs55IuglG8sJdzk7XfNgmGRtcYlo1w==", "cpu": [ "x64" ], @@ -1233,9 +1037,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.3.tgz", - "integrity": "sha512-byyflM+huiwHlKi7VHLAYTKr67X199+V+mt1iRgJenAI594vcmGGddWlu6eHujmcdl6TqSNnvqaXJqZdnEWRGA==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.4.tgz", + "integrity": "sha512-9fhTJyOb275w5RofPSl8lpr4jFowd+H4oQKJ9XTYzD1JWgxdZKE8bA6d4npuiMemkecQOcigX01FNZNCYnQBdA==", "cpu": [ "arm" ], @@ -1247,9 +1051,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.3.tgz", - "integrity": "sha512-aLm3NMIjr4Y9LklrH5cu7yybBqoVCdr4Nvnm8WB7PKCn34fMCGypVNpGK0JQWdPAzR/FnoEoFtlRqZbBBLhVoQ==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.4.tgz", + "integrity": "sha512-+6kCIM5Zjvz2HwPl/udgVs07tPMIp1VU2Y0c72ezjOvSvEfAIWsUgpcSDvnC7g9NrjYR6X9bZT92mZZ90TfvXw==", "cpu": [ "arm" ], @@ -1261,9 +1065,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.3.tgz", - "integrity": "sha512-VtilE6eznJRDIoFOzaagQodUksTEfLIsvXymS+UdJiSXrPW7Ai+WG4uapAc3F7Hgs791TwdGh4xyOzbuzIZrnw==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.4.tgz", + "integrity": "sha512-SWuXdnsayCZL4lXoo6jn0yyAj7TTjWE4NwDVt9s7cmu6poMhtiras5c8h6Ih6Y0Zk6Z+8t/mLumvpdSPTWub2Q==", "cpu": [ "arm64" ], @@ -1275,9 +1079,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.3.tgz", - "integrity": "sha512-dG3JuS6+cRAL0GQ925Vppafi0qwZnkHdPeuZIxIPXqkCLP02l7ka+OCyBoDEv8S+nKHxfjvjW4OZ7hTdHkx8/w==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.4.tgz", + "integrity": "sha512-vDknMDqtMhrrroa5kyX6tuC0aRZZlQ+ipDfbXd2YGz5HeV2t8HOl/FDAd2ynhs7Ki5VooWiiZcCtxiZ4IjqZwQ==", "cpu": [ "arm64" ], @@ -1289,9 +1093,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.3.tgz", - "integrity": "sha512-iU8DxnxEKJptf8Vcx4XvAUdpkZfaz0KWfRrnIRrOndL0SvzEte+MTM7nDH4A2Now4FvTZ01yFAgj6TX/mZl8hQ==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.4.tgz", + "integrity": "sha512-mCBkjRZWhvjtl/x+Bd4fQkWZT8canStKDxGrHlBiTnZmJnWygGcvBylzLVCZXka4dco5ymkWhZlLwKCGFF4ivw==", "cpu": [ "loong64" ], @@ -1303,9 +1107,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.3.tgz", - "integrity": "sha512-VrQZp9tkk0yozJoQvQcqlWiqaPnLM6uY1qPYXvukKePb0fqaiQtOdMJSxNFUZFsGw5oA5vvVokjHrx8a9Qsz2A==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.4.tgz", + "integrity": "sha512-YMdz2phOTFF+Z66dQfGf0gmeDSi5DJzY5bpZyeg9CPBkV9QDzJ1yFRlmi/j7WWRf3hYIWrOaJj5jsfwgc8GTHQ==", "cpu": [ "ppc64" ], @@ -1317,9 +1121,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.3.tgz", - "integrity": "sha512-uf2eucWSUb+M7b0poZ/08LsbcRgaDYL8NCGjUeFMwCWFwOuFcZ8D9ayPl25P3pl+D2FH45EbHdfyUesQ2Lt9wA==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.4.tgz", + "integrity": "sha512-r0WKLSfFAK8ucG024v2yiLSJMedoWvk8yWqfNICX28NHDGeu3F/wBf8KG6mclghx4FsLePxJr/9N8rIj1PtCnw==", "cpu": [ "riscv64" ], @@ -1331,9 +1135,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.3.tgz", - "integrity": "sha512-7tnUcDvN8DHm/9ra+/nF7lLzYHDeODKKKrh6JmZejbh1FnCNZS8zMkZY5J4sEipy2OW1d1Ncc4gNHUd0DLqkSg==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.4.tgz", + "integrity": "sha512-IaizpPP2UQU3MNyPH1u0Xxbm73D+4OupL0bjo4Hm0496e2wg3zuvoAIhubkD1NGy9fXILEExPQy87mweujEatA==", "cpu": [ "riscv64" ], @@ -1345,9 +1149,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.3.tgz", - "integrity": "sha512-MUpAOallJim8CsJK+4Lc9tQzlfPbHxWDrGXZm2z6biaadNpvh3a5ewcdat478W+tXDoUiHwErX/dOql7ETcLqg==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.4.tgz", + "integrity": "sha512-aCM29orANR0a8wk896p6UEgIfupReupnmISz6SUwMIwTGaTI8MuKdE0OD2LvEg8ondDyZdMvnaN3bW4nFbATPA==", "cpu": [ "s390x" ], @@ -1359,9 +1163,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.3.tgz", - "integrity": "sha512-F42IgZI4JicE2vM2PWCe0N5mR5vR0gIdORPqhGQ32/u1S1v3kLtbZ0C/mi9FFk7C5T0PgdeyWEPajPjaUpyoKg==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.4.tgz", + "integrity": "sha512-0Xj1vZE3cbr/wda8d/m+UeuSL+TDpuozzdD4QaSzu/xSOMK0Su5RhIkF7KVHFQsobemUNHPLEcYllL7ZTCP/Cg==", "cpu": [ "x64" ], @@ -1373,9 +1177,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.3.tgz", - "integrity": "sha512-oLc+JrwwvbimJUInzx56Q3ujL3Kkhxehg7O1gWAYzm8hImCd5ld1F2Gry5YDjR21MNb5WCKhC9hXgU7rRlyegQ==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.4.tgz", + "integrity": "sha512-kM/orjpolfA5yxsx84kI6bnK47AAZuWxglGKcNmokw2yy9i5eHY5UAjcX45jemTJnfHAWo3/hOoRqEeeTdL5hw==", "cpu": [ "x64" ], @@ -1387,9 +1191,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.3.tgz", - "integrity": "sha512-lOrQ+BVRstruD1fkWg9yjmumhowR0oLAAzavB7yFSaGltY8klttmZtCLvOXCmGE9mLIn8IBV/IFrQOWz5xbFPg==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.4.tgz", + "integrity": "sha512-cNLH4psMEsWKILW0isbpQA2OvjXLbKvnkcJFmqAptPQbtLrobiapBJVj6RoIvg6UXVp5w0wnIfd/Q56cNpF+Ew==", "cpu": [ "arm64" ], @@ -1401,9 +1205,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.3.tgz", - "integrity": "sha512-vvrVKPRS4GduGR7VMH8EylCBqsDcw6U+/0nPDuIjXQRbHJc6xOBj+frx8ksfZAh6+Fptw5wHrN7etlMmQnPQVg==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.4.tgz", + "integrity": "sha512-OiEa5lRhiANpv4SfwYVgQ3opYWi/QmPDC5ve21m8G9pf6ZO+aX1g2EEF1/IFaM1xPSP7mK0msTRXlPs6mIagkg==", "cpu": [ "ia32" ], @@ -1415,9 +1219,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.3.tgz", - "integrity": "sha512-fi3cPxCnu3ZeM3EwKZPgXbWoGzm2XHgB/WShKI81uj8wG0+laobmqy5wbgEwzstlbLu4MyO8C19FyhhWseYKNQ==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.4.tgz", + "integrity": "sha512-IKL9mewGZ5UuuX4NQlwOmxPyqielvkAPUS2s1cl6yWjjQvyN3h5JTdVFGD5Jr5xMjRC8setOfGQDVgX8V+dkjg==", "cpu": [ "x64" ], @@ -1616,24 +1420,24 @@ } }, "node_modules/@textlint/ast-node-types": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.1.tgz", - "integrity": "sha512-20fEcLPsXg81yWpApv4FQxrZmlFF/Ta7/kz1HGIL+pJo5cSTmkc+eCki3GpOPZIoZk0tbJU8hrlwUb91F+3SNQ==", + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.2.2.tgz", + "integrity": "sha512-9ByYNzWV8tpz6BFaRzeRzIov8dkbSZu9q7IWqEIfmRuLWb2qbI/5gTvKcoWT1HYs4XM7IZ8TKSXcuPvMb6eorA==", "dev": true, "license": "MIT" }, "node_modules/@textlint/linter-formatter": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.2.1.tgz", - "integrity": "sha512-oollG/BHa07+mMt372amxHohteASC+Zxgollc1sZgiyxo4S6EuureV3a4QIQB0NecA+Ak3d0cl0WI/8nou38jw==", + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.2.2.tgz", + "integrity": "sha512-oMVaMJ3exFvXhCj3AqmCbLaeYrTNLqaJnLJMIlmnRM3/kZdxvku4OYdaDzgtlI194cVxamOY5AbHBBVnY79kEg==", "dev": true, "license": "MIT", "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "15.2.1", - "@textlint/resolver": "15.2.1", - "@textlint/types": "15.2.1", + "@textlint/module-interop": "15.2.2", + "@textlint/resolver": "15.2.2", + "@textlint/types": "15.2.2", "chalk": "^4.1.2", "debug": "^4.4.1", "js-yaml": "^3.14.1", @@ -1706,27 +1510,27 @@ } }, "node_modules/@textlint/module-interop": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.2.1.tgz", - "integrity": "sha512-b/C/ZNrm05n1ypymDknIcpkBle30V2ZgE3JVqQlA9PnQV46Ky510qrZk6s9yfKgA3m1YRnAw04m8xdVtqjq1qg==", + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.2.2.tgz", + "integrity": "sha512-2rmNcWrcqhuR84Iio1WRzlc4tEoOMHd6T7urjtKNNefpTt1owrTJ9WuOe60yD3FrTW0J/R0ux5wxUbP/eaeFOA==", "dev": true, "license": "MIT" }, "node_modules/@textlint/resolver": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.2.1.tgz", - "integrity": "sha512-FY3aK4tElEcOJVUsaMj4Zro4jCtKEEwUMIkDL0tcn6ljNcgOF7Em+KskRRk/xowFWayqDtdz5T3u7w/6fjjuJQ==", + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.2.2.tgz", + "integrity": "sha512-4hGWjmHt0y+5NAkoYZ8FvEkj8Mez9TqfbTm3BPjoV32cIfEixl2poTOgapn1rfm73905GSO3P1jiWjmgvii13Q==", "dev": true, "license": "MIT" }, "node_modules/@textlint/types": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.2.1.tgz", - "integrity": "sha512-zyqNhSatK1cwxDUgosEEN43hFh3WCty9Zm2Vm3ogU566IYegifwqN54ey/CiRy/DiO4vMcFHykuQnh2Zwp6LLw==", + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.2.2.tgz", + "integrity": "sha512-X2BHGAR3yXJsCAjwYEDBIk9qUDWcH4pW61ISfmtejau+tVqKtnbbvEZnMTb6mWgKU1BvTmftd5DmB1XVDUtY3g==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "15.2.1" + "@textlint/ast-node-types": "15.2.2" } }, "node_modules/@types/chai": { @@ -1753,13 +1557,6 @@ "dev": true, "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", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { "version": "18.19.123", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.123.tgz", @@ -1784,13 +1581,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/vscode": { "version": "1.94.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.94.0.tgz", @@ -1798,204 +1588,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", - "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/type-utils": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", - "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", - "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "semver": "^7.5.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typespec/ts-http-runtime": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.0.tgz", @@ -2011,13 +1603,6 @@ "node": ">=20.0.0" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, "node_modules/@vitest/expect": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", @@ -2362,29 +1947,6 @@ "node": ">=8" } }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", @@ -2467,16 +2029,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/assertion-error": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", @@ -2728,16 +2280,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/chai": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.1.tgz", @@ -3156,13 +2698,6 @@ "node": ">=4.0.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, "node_modules/default-browser": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", @@ -3227,32 +2762,6 @@ "node": ">=8" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -3527,245 +3036,6 @@ "node": ">=6" } }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/eslint/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -3780,42 +3050,6 @@ "node": ">=4" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -3826,16 +3060,6 @@ "@types/estree": "^1.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -3901,20 +3125,6 @@ "node": ">= 6" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", @@ -3952,19 +3162,6 @@ "pend": "~1.2.0" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -3978,45 +3175,6 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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==", - "dev": true, - "license": "ISC" - }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -4095,13 +3253,6 @@ "node": ">=14.14" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4208,19 +3359,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/glob/node_modules/minimatch": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", @@ -4237,43 +3375,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -4294,13 +3395,6 @@ "dev": true, "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4571,33 +3665,6 @@ "license": "BSD-3-Clause", "optional": true }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -4609,16 +3676,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, "node_modules/index-to-position": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz", @@ -4632,24 +3689,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/ini": { "version": "1.3.8", @@ -4737,16 +3783,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-wsl": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", @@ -4825,13 +3861,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -4839,13 +3868,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -4948,16 +3970,6 @@ "prebuild-install": "^7.0.1" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/langium": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/langium/-/langium-3.4.0.tgz", @@ -5017,20 +4029,6 @@ "node": ">=6" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", @@ -5041,22 +4039,6 @@ "uc.micro": "^2.0.0" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -5112,13 +4094,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -5279,22 +4254,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -5404,13 +4363,6 @@ "license": "MIT", "optional": true }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, "node_modules/node-abi": { "version": "3.75.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", @@ -5514,6 +4466,7 @@ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", + "optional": true, "dependencies": { "wrappy": "1" } @@ -5547,56 +4500,6 @@ "opener": "bin/opener-bin.js" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-map": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", @@ -5617,19 +4520,6 @@ "dev": true, "license": "BlueOak-1.0.0" }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/parse-json": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", @@ -5734,26 +4624,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -5791,16 +4661,6 @@ "node": "20 || >=22" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -5926,16 +4786,6 @@ "node": ">=10" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", @@ -5948,16 +4798,6 @@ "once": "^1.3.1" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -6162,16 +5002,6 @@ "dev": true, "license": "MIT" }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -6183,73 +5013,10 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/rollup": { - "version": "4.46.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.3.tgz", - "integrity": "sha512-RZn2XTjXb8t5g13f5YclGoilU/kwT696DIkY3sywjdZidNSi3+vseaQov7D7BZXVJCPv3pDWUN69C78GGbXsKw==", + "version": "4.46.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.4.tgz", + "integrity": "sha512-YbxoxvoqNg9zAmw4+vzh1FkGAiZRK+LhnSrbSrSXMdZYsRPDWoshcSd/pldKRO6lWzv/e9TiJAVQyirYIeSIPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6263,26 +5030,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.46.3", - "@rollup/rollup-android-arm64": "4.46.3", - "@rollup/rollup-darwin-arm64": "4.46.3", - "@rollup/rollup-darwin-x64": "4.46.3", - "@rollup/rollup-freebsd-arm64": "4.46.3", - "@rollup/rollup-freebsd-x64": "4.46.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.46.3", - "@rollup/rollup-linux-arm-musleabihf": "4.46.3", - "@rollup/rollup-linux-arm64-gnu": "4.46.3", - "@rollup/rollup-linux-arm64-musl": "4.46.3", - "@rollup/rollup-linux-loongarch64-gnu": "4.46.3", - "@rollup/rollup-linux-ppc64-gnu": "4.46.3", - "@rollup/rollup-linux-riscv64-gnu": "4.46.3", - "@rollup/rollup-linux-riscv64-musl": "4.46.3", - "@rollup/rollup-linux-s390x-gnu": "4.46.3", - "@rollup/rollup-linux-x64-gnu": "4.46.3", - "@rollup/rollup-linux-x64-musl": "4.46.3", - "@rollup/rollup-win32-arm64-msvc": "4.46.3", - "@rollup/rollup-win32-ia32-msvc": "4.46.3", - "@rollup/rollup-win32-x64-msvc": "4.46.3", + "@rollup/rollup-android-arm-eabi": "4.46.4", + "@rollup/rollup-android-arm64": "4.46.4", + "@rollup/rollup-darwin-arm64": "4.46.4", + "@rollup/rollup-darwin-x64": "4.46.4", + "@rollup/rollup-freebsd-arm64": "4.46.4", + "@rollup/rollup-freebsd-x64": "4.46.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.4", + "@rollup/rollup-linux-arm-musleabihf": "4.46.4", + "@rollup/rollup-linux-arm64-gnu": "4.46.4", + "@rollup/rollup-linux-arm64-musl": "4.46.4", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.4", + "@rollup/rollup-linux-ppc64-gnu": "4.46.4", + "@rollup/rollup-linux-riscv64-gnu": "4.46.4", + "@rollup/rollup-linux-riscv64-musl": "4.46.4", + "@rollup/rollup-linux-s390x-gnu": "4.46.4", + "@rollup/rollup-linux-x64-gnu": "4.46.4", + "@rollup/rollup-linux-x64-musl": "4.46.4", + "@rollup/rollup-win32-arm64-msvc": "4.46.4", + "@rollup/rollup-win32-ia32-msvc": "4.46.4", + "@rollup/rollup-win32-x64-msvc": "4.46.4", "fsevents": "~2.3.2" } }, @@ -6646,16 +5413,6 @@ "simple-concat": "^1.0.0" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -6897,19 +5654,6 @@ "node": ">=8" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-literal": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", @@ -7223,19 +5967,6 @@ "tree-kill": "cli.js" } }, - "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -7267,32 +5998,6 @@ "node": "*" } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-rest-client": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", @@ -7407,16 +6112,6 @@ "node": ">= 10.0.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -7855,16 +6550,6 @@ "node": ">=8" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -7968,7 +6653,8 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/wsl-utils": { "version": "0.1.0", @@ -8076,19 +6762,6 @@ "dependencies": { "buffer-crc32": "~0.2.3" } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index 676f7d4..82a4195 100644 --- a/package.json +++ b/package.json @@ -31,10 +31,9 @@ "scripts": { "build": "tsc -b tsconfig.src.json && node esbuild.mjs", "watch": "concurrently -n tsc,esbuild -c blue,yellow \"tsc -b tsconfig.src.json --watch\" \"node esbuild.mjs --watch\"", - "lint": "eslint src --ext ts", "langium:generate": "langium generate", "langium:watch": "langium generate --watch", - "vscode:prepublish": "npm run esbuild-base -- --minify && npm run lint", + "vscode:prepublish": "npm run esbuild-base -- --minify", "esbuild-base": "esbuild ./src/extension/main.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node", "build:web": "npm run build", "bundle": "vite build", @@ -58,11 +57,8 @@ "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", "@types/node": "^18.0.0", "@types/vscode": "~1.94.0", - "@typescript-eslint/eslint-plugin": "~7.3.1", - "@typescript-eslint/parser": "~7.3.1", "concurrently": "~8.2.1", "esbuild": "^0.25.5", - "eslint": "~8.57.0", "http-server": "~14.1.1", "langium-cli": "~3.4.0", "typescript": "~5.1.6", From 202a6f87568824e8b708246f90afda114828cca7 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Wed, 20 Aug 2025 16:24:11 +0200 Subject: [PATCH 45/49] Update package.json * Langium 3.5.0 * Typir 0.2.2 * Concurrently 9.2.0 * Typescript 5.5.0 --- package-lock.json | 101 +++++++++----------------- package.json | 12 +-- src/language/r-check-type-checking.ts | 1 - 3 files changed, 39 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index cebaf55..9dad136 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,10 @@ "dependencies": { "chalk": "~5.3.0", "commander": "~11.0.0", - "langium": "~3.4.0", + "langium": "~3.5.0", "monaco-languageclient": "~8.1.1", - "typir": "<=0.2.1", - "typir-langium": "<=0.2.1", + "typir": "~0.2.2", + "typir-langium": "~0.2.2", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, @@ -25,11 +25,11 @@ "@types/node": "^18.0.0", "@types/vscode": "~1.94.0", "@vscode/vsce": "^3.4.0", - "concurrently": "~8.2.1", + "concurrently": "~9.2.0", "esbuild": "^0.25.5", "http-server": "~14.1.1", - "langium-cli": "~3.4.0", - "typescript": "~5.1.6", + "langium-cli": "~3.5.0", + "typescript": "~5.5.0", "vite": "^6.3.5", "vitest": "^3.2.0", "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3" @@ -250,16 +250,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", - "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@chevrotain/cst-dts-gen": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", @@ -2513,18 +2503,16 @@ "license": "MIT" }, "node_modules/concurrently": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", - "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.0.tgz", + "integrity": "sha512-IsB/fiXTupmagMW4MNp2lx2cdSN2FfZq78vF90LBB+zZHArbIQZjQtzXCiXnvTxCZSvXanTqFLWBjw2UkLx1SQ==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", - "date-fns": "^2.30.0", "lodash": "^4.17.21", "rxjs": "^7.8.1", "shell-quote": "^1.8.1", - "spawn-command": "0.0.2", "supports-color": "^8.1.1", "tree-kill": "^1.2.2", "yargs": "^17.7.2" @@ -2534,7 +2522,7 @@ "concurrently": "dist/bin/concurrently.js" }, "engines": { - "node": "^14.13.0 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" @@ -2625,23 +2613,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -3971,9 +3942,9 @@ } }, "node_modules/langium": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.4.0.tgz", - "integrity": "sha512-7xufsaF5jYGFMXHOTka8bN48b9FHn2vZGL2R+PGgyi+JY/xgimUFDKYcz/h4gm5m8p3sSRtZDh+sK2U63K0MNg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/langium/-/langium-3.5.0.tgz", + "integrity": "sha512-tnqVzWOkUcoiY0bWlyE8diFrZjmGBCF7MesC1bjUaZM+YGQSfdPC+KkhmHM0DWFG+uLcPxidKaPP1SYGtg3J0Q==", "license": "MIT", "dependencies": { "chevrotain": "~11.0.3", @@ -3987,9 +3958,9 @@ } }, "node_modules/langium-cli": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.4.0.tgz", - "integrity": "sha512-7dU5kPlfzwzPLkaaMcBCc0tfnVPHOcxcgMW/l2xRDy9Y/cljTCXSV8y3lJUlHASQa3LZDF0+8bGZX3Noxa+GLw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/langium-cli/-/langium-cli-3.5.2.tgz", + "integrity": "sha512-EVI462CIx8YnJfLSGArvvrlTzAXafA8zNeNbX6FPI5eX8ahicJcvnqW0eAmZ6mLFP7aipzV2F0Sehexe7KHmzA==", "dev": true, "license": "MIT", "dependencies": { @@ -3997,8 +3968,8 @@ "commander": "~11.0.0", "fs-extra": "~11.1.1", "jsonschema": "~1.4.1", - "langium": "~3.4.0", - "langium-railroad": "~3.4.0", + "langium": "~3.5.0", + "langium-railroad": "~3.5.0", "lodash": "~4.17.21" }, "bin": { @@ -4009,13 +3980,13 @@ } }, "node_modules/langium-railroad": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.4.0.tgz", - "integrity": "sha512-dTSTm4+UI2byf+kMnjXBJgcif6XjpvFrFv4HhRONV6ZzQIVWweAycg40q7Wm8D/iagtZa/eFa1l5yCxQf896eA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.5.0.tgz", + "integrity": "sha512-80Enc6bOR6oHZD18IQlVTdfCh07rbrM5SOsPUPc1kyh7n3zQbmLs5P2E9hV4SoWlkhOjGKL1I9Z6uORpgy+jTQ==", "dev": true, "license": "MIT", "dependencies": { - "langium": "~3.4.0", + "langium": "~3.5.0", "railroad-diagrams": "~1.0.0" } }, @@ -5441,12 +5412,6 @@ "node": ">=0.10.0" } }, - "node_modules/spawn-command": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", - "dev": true - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -6011,9 +5976,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6025,22 +5990,22 @@ } }, "node_modules/typir": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/typir/-/typir-0.2.1.tgz", - "integrity": "sha512-OkW/ZDKQmeOLyMcRCn/O/D45GhzWas148oRwxZmoQTw5N2+KkjtZqNL1h3RHSubLDTCMlOWnrlvXr2Pxsce0KQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/typir/-/typir-0.2.2.tgz", + "integrity": "sha512-99SQzs/SO0FUDRjPk7rIjgwVFMA/zzXgq656MHpmuVsZZkvnBC9K8enQ6Lyt/gE4VcMqwYPqA7uKaryX03OpRA==", "license": "MIT", "engines": { "node": ">= 18.0.0" } }, "node_modules/typir-langium": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/typir-langium/-/typir-langium-0.2.1.tgz", - "integrity": "sha512-Uu7eV+yu++g93eISWrzajCeqGNZvQZsPRdrV+g3lnFVrCmlvSmX9p2b18ysWNcCS4xTZNJfIIrmNY3z2d22ldQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/typir-langium/-/typir-langium-0.2.2.tgz", + "integrity": "sha512-D2AU/dpN77V6xeMCAXlfIcF6C1/Y7T/xaGwLNmL1L82sfhzR50wctYObIFdhh3s1NLmcKeqbAorRgUPdXKQVCA==", "license": "MIT", "dependencies": { - "langium": "~3.4.0", - "typir": "~0.2.1" + "langium": "~3.5.0", + "typir": "~0.2.2" }, "engines": { "node": ">= 18.0.0" diff --git a/package.json b/package.json index 82a4195..b4e4240 100644 --- a/package.json +++ b/package.json @@ -46,10 +46,10 @@ "dependencies": { "chalk": "~5.3.0", "commander": "~11.0.0", - "langium": "~3.4.0", + "langium": "~3.5.0", "monaco-languageclient": "~8.1.1", - "typir": "<=0.2.1", - "typir-langium": "<=0.2.1", + "typir": "~0.2.2", + "typir-langium": "~0.2.2", "vscode-languageclient": "~9.0.1", "vscode-languageserver": "~9.0.1" }, @@ -57,11 +57,11 @@ "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", "@types/node": "^18.0.0", "@types/vscode": "~1.94.0", - "concurrently": "~8.2.1", + "concurrently": "~9.2.0", "esbuild": "^0.25.5", "http-server": "~14.1.1", - "langium-cli": "~3.4.0", - "typescript": "~5.1.6", + "langium-cli": "~3.5.0", + "typescript": "~5.5.0", "vite": "^6.3.5", "vitest": "^3.2.0", "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3", diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index 5434fce..a22961c 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -574,7 +574,6 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition Date: Thu, 21 Aug 2025 14:29:59 +0200 Subject: [PATCH 46/49] Update package.json Updated chalk, monaco-languageclient, types/node, typescript, vite, vitest. Removed vscode (monaco-vscode-api). --- package-lock.json | 1573 +++++++++++++++++++++++++++++++++------------ package.json | 11 +- 2 files changed, 1182 insertions(+), 402 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9dad136..5017641 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,10 @@ "name": "rcheck", "version": "0.0.1", "dependencies": { - "chalk": "~5.3.0", + "chalk": "~5.6.0", "commander": "~11.0.0", "langium": "~3.5.0", - "monaco-languageclient": "~8.1.1", + "monaco-languageclient": "~9.11.0", "typir": "~0.2.2", "typir-langium": "~0.2.2", "vscode-languageclient": "~9.0.1", @@ -22,17 +22,16 @@ }, "devDependencies": { "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", - "@types/node": "^18.0.0", + "@types/node": "^24.0.0", "@types/vscode": "~1.94.0", "@vscode/vsce": "^3.4.0", "concurrently": "~9.2.0", "esbuild": "^0.25.5", "http-server": "~14.1.1", "langium-cli": "~3.5.0", - "typescript": "~5.5.0", - "vite": "^6.3.5", - "vitest": "^3.2.0", - "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3" + "typescript": "~5.9.2", + "vite": "^7.0.0", + "vitest": "^3.2.0" }, "engines": { "node": ">=18.0.0", @@ -300,93 +299,864 @@ "import-meta-resolve": "^4.0.0" } }, + "node_modules/@codingame/monaco-vscode-08d1b4da-daf2-5f0d-8c50-ca6a6986c50f-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-08d1b4da-daf2-5f0d-8c50-ca6a6986c50f-common/-/monaco-vscode-08d1b4da-daf2-5f0d-8c50-ca6a6986c50f-common-20.2.1.tgz", + "integrity": "sha512-2knRCAm0RMhRrBsQxpWPmCduNCoc03GqQs8Rkw6XupQYyZxNkgJPaoxdWrwZsmrx3FivCV6t/+ijl70X6dIRnQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common/-/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common-20.2.1.tgz", + "integrity": "sha512-6EvqHSjWuf5HhjHPv+CXurWq31QR+PrxnuWaRX3O+Qvse/hACIBlPXDAD8fDMn1YK9QSdf4rwds0zChbfpmosQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common/-/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common-20.2.1.tgz", + "integrity": "sha512-PaB//D7uvOUay6TbPxt6GrVfRVQBF1JWe++3srdqAEn4vHS8yT3uS1GUI+ET0VPK4LNvkl5gEF04wC7y5fLXoQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-0cc5da60-f921-59b9-bd8c-a018e93c0a6f-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-0cc5da60-f921-59b9-bd8c-a018e93c0a6f-common/-/monaco-vscode-0cc5da60-f921-59b9-bd8c-a018e93c0a6f-common-20.2.1.tgz", + "integrity": "sha512-5Wk6XcM1BZyOopJ/XOea60FLNhx4ErrU4PYFwpb5NePlK6Bk27YPh1Bv3meohmRxr3WSdQymYGuRAdRj3stXoA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-f22e7e55-aee8-5b52-a6bc-950efd9f5890-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-15626ec7-b165-51e1-8caf-7bcc2ae9b95a-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-15626ec7-b165-51e1-8caf-7bcc2ae9b95a-common/-/monaco-vscode-15626ec7-b165-51e1-8caf-7bcc2ae9b95a-common-20.2.1.tgz", + "integrity": "sha512-CXw/aLqqMDism6lyFXuR+5r/AIgl5UgTXm0xli8WK38LoqhYtRMVxk5vy6kbmtK3w5cA9XMKwWSO5NHS8XscTQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common/-/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common-20.2.1.tgz", + "integrity": "sha512-WuzU3yRkKwL8ZXiZyEAF5xeWqEebJu3rWBndQYsig/12wbfeqEwQBh7JwZBK1uc/1Cl8VN8wE1QpYQyC/C7m8g==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common/-/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common-20.2.1.tgz", + "integrity": "sha512-xV8T8zmmQhAb7NPz+0h6Z0R4IzdB3BcwXkYIKuANZLI2jeKdo+ixw2+FClCHGjGBycffmYqIISXecgixIJrJHw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common/-/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common-20.2.1.tgz", + "integrity": "sha512-3MvmIwes9tLQd7FopLUtsocjRiej+dxbp+Eo5uQrPyV4sghyrhuSpe90mHM7MK3Pd/YNmtRXAem5EtRkWeyCog==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-256d5b78-0649-50e9-8354-2807f95f68f4-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-256d5b78-0649-50e9-8354-2807f95f68f4-common/-/monaco-vscode-256d5b78-0649-50e9-8354-2807f95f68f4-common-20.2.1.tgz", + "integrity": "sha512-692CODk83dErjqKqdQKu87eKVV10lXXRNOS5tbbd3FqIdDiEYubocKDkTXSwZ5wVfQYmALaUEsfSN4XIqUVLAA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-262ed59d-4f76-57cd-9e9f-1877f26ae049-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-262ed59d-4f76-57cd-9e9f-1877f26ae049-common/-/monaco-vscode-262ed59d-4f76-57cd-9e9f-1877f26ae049-common-20.2.1.tgz", + "integrity": "sha512-MHK36sZwljQ+U3/wDrY57sN/iN6tM5+Xu4uBZpdnEorkoXq/Jg2q8dvVXw0qGvHfR80oT5i/dBdpcdytrR9ADA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-6883db80-c313-54eb-8fbc-5872c56b0326-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-2a94c04a-b85b-5669-b06b-89c1bfa11cb9-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-2a94c04a-b85b-5669-b06b-89c1bfa11cb9-common/-/monaco-vscode-2a94c04a-b85b-5669-b06b-89c1bfa11cb9-common-20.2.1.tgz", + "integrity": "sha512-R75FXTJR5mO1u57E3a5jBnEfxeIAPmRVEp5i+w9wGh/IkvQ/VidK1eH1g1lK/m2CRGcgzY6pYwMb7bbrOqzNHg==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common": "20.2.1", + "@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common/-/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common-20.2.1.tgz", + "integrity": "sha512-Gz5ukIwb/g+8KMhlAuPK2DaL5MkHJRpBk/jjsTGu7E1AvJWcxFMxk4Z0P3KhhZCwZxbAH2OmP3u6dAtHOGTc2Q==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common/-/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common-20.2.1.tgz", + "integrity": "sha512-y37l/C9r8jkWLRZDAiVYSK8kZdFjMvN0cxLrRbOL/O/TSKCa7sdT7fnmelwwSwY/moFVknrSUSJf1HLiZeB5yw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-40cada32-7e9c-528a-81fc-766e4da54147-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-40cada32-7e9c-528a-81fc-766e4da54147-common/-/monaco-vscode-40cada32-7e9c-528a-81fc-766e4da54147-common-20.2.1.tgz", + "integrity": "sha512-wCxhPyTty6XWwgIl492WUCXI5Zuwxrhc+BgZPjm32GCk2D/MZMhJt/T7iH8ZkCIGtO1kIyHpBXDBJL7L2h2lag==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.2.1", + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-422642f2-7e3a-5c1c-9e1e-1d3ef1817346-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-422642f2-7e3a-5c1c-9e1e-1d3ef1817346-common/-/monaco-vscode-422642f2-7e3a-5c1c-9e1e-1d3ef1817346-common-20.2.1.tgz", + "integrity": "sha512-KiPs0Bz2NdBUbfN+SrbzAXmCK1n1sk4C/EBHcjAU9EFt+9Qs7vBWPbPL/a9uxsAn1yr3/ENKRA/sG9la3TJP6g==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common/-/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common-20.2.1.tgz", + "integrity": "sha512-vjDxz1Vtnp7SXuh9IijlLyTH9Kz2gK432UiFGea3CyL9JRh6lF5MGl7r0qUeXQoyPoyTgvcUvhARnbSqtt3esw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common/-/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common-20.2.1.tgz", + "integrity": "sha512-5py+dgP5LT1LcK4mlWIc7GByW4Ft4u5MA0BimFTSAWY+B+32TlzUulXETLa3fdTBjthpPxZcfUivwKCIURe+Lw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-5452e2b7-9081-5f95-839b-4ab3544ce28f-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-5452e2b7-9081-5f95-839b-4ab3544ce28f-common/-/monaco-vscode-5452e2b7-9081-5f95-839b-4ab3544ce28f-common-20.2.1.tgz", + "integrity": "sha512-Doc26S+nDEsDT1CoLs4nB1wkEtg35HLZmig7xzObtw8b35pBXE9FmVe8aL/sowmSIb1fVflszunp8AyZGcyLpg==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common/-/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common-20.2.1.tgz", + "integrity": "sha512-wnGmFRFs9LRMDkfuXhLgg/WnsMpI25N5br8eAj1+RiYv9LdbWhQZjXHY0Bba3HNrVGEvH7SxGZ3tBeH5mH77MQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-249dc928-1da3-51c1-82d0-45e0ba9d08a1-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common/-/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common-20.2.1.tgz", + "integrity": "sha512-6JLv8gpbbHsqg91ImVt21OXcr8w+THi6yAzgzrlZo1ok9nU5ARY7XjiBCJTajleyMj9tLnn+LbAkqE7A3I7BnA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common/-/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common-20.2.1.tgz", + "integrity": "sha512-PKvV+6yFq4zDXkqT8O5r/yu4quJsHECh0bRDp0SyJby3xayjyjVleY4Dp3KEgcifmAmBiaevY8+Qsoh8AqGa9A==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-08d1b4da-daf2-5f0d-8c50-ca6a6986c50f-common": "20.2.1", + "@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-622c0cca-d5fa-59b6-b730-0715afcf93ee-common": "20.2.1", + "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1", + "@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-622c0cca-d5fa-59b6-b730-0715afcf93ee-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-622c0cca-d5fa-59b6-b730-0715afcf93ee-common/-/monaco-vscode-622c0cca-d5fa-59b6-b730-0715afcf93ee-common-20.2.1.tgz", + "integrity": "sha512-7CJTGnACYkU4eZZz6ZgEUSacF1uVxgQp5PB/dDvTwjUHGSAoYDuYcUwGlRHiglhTM3OeWfr3bD1v93TM8t4tvQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common/-/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common-20.2.1.tgz", + "integrity": "sha512-ju1ZXDXt7HRiXUQ56xgqno6aIBqT8DjCbGq4lEpbV4LCa0cEUTN1vnPvfv6h5XgVfxxV7AgG/0223aJH/FvCcQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-6845754f-e617-5ed9-8aaa-6ca3653a9532-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-6845754f-e617-5ed9-8aaa-6ca3653a9532-common/-/monaco-vscode-6845754f-e617-5ed9-8aaa-6ca3653a9532-common-20.2.1.tgz", + "integrity": "sha512-4hmesrfHj/NSJg7mPpN8OxrQtOjI4DW1nU8IqLgxjcYzUG0lKtBbyAdYEnrvace70+1QpeufTf3QZBgnLemI7A==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-6883db80-c313-54eb-8fbc-5872c56b0326-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-6883db80-c313-54eb-8fbc-5872c56b0326-common/-/monaco-vscode-6883db80-c313-54eb-8fbc-5872c56b0326-common-20.2.1.tgz", + "integrity": "sha512-LbKvvmNoE1outKNVNLZrlNxkmXbiX0ZmKc3epvDH/JsJMKzgP8BwObOuemwp0BjsAR2NVTtG0RPRUMFFACfJaA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-6bf85d7b-e6e3-54e9-9bc1-7e08d663f0f6-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-6bf85d7b-e6e3-54e9-9bc1-7e08d663f0f6-common/-/monaco-vscode-6bf85d7b-e6e3-54e9-9bc1-7e08d663f0f6-common-20.2.1.tgz", + "integrity": "sha512-+l9owwUpqkQgA9g0Mo23uQL2YoiMLEAZiR/rR4ti9T2OjRoejeH3FUjiutl+6Z7vq7WfSn2fl9DIqd6oC/BX8w==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-0cc5da60-f921-59b9-bd8c-a018e93c0a6f-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-85886bdb-61c5-52f1-8eb7-d1d32f6f8cbd-common": "20.2.1", + "@codingame/monaco-vscode-96e83782-7f38-572e-8787-02e981f1c54f-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-f22e7e55-aee8-5b52-a6bc-950efd9f5890-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-6db1b967-5327-5c5c-8c17-bd92774c0fb2-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-6db1b967-5327-5c5c-8c17-bd92774c0fb2-common/-/monaco-vscode-6db1b967-5327-5c5c-8c17-bd92774c0fb2-common-20.2.1.tgz", + "integrity": "sha512-zYgzAYrrOgffttoGEG37f5VI4ZwpycZcoRA0wCPckk0rlTYAiHA4wabm8aR3H+IriWmAxBYqFyIg3b9EnsWWgA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-6f931a91-88ea-5232-897f-a17ec3929ba5-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-6f931a91-88ea-5232-897f-a17ec3929ba5-common/-/monaco-vscode-6f931a91-88ea-5232-897f-a17ec3929ba5-common-20.2.1.tgz", + "integrity": "sha512-5yQtd1/gHEUXrpvuZdGGBkJu4qesMspG/EyxPXEPWgWA03VsU+ZOv+J+pY6z9lQSKLrd0vMoBrZ+6Klg5TFQVw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-262ed59d-4f76-57cd-9e9f-1877f26ae049-common": "20.2.1", + "@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common/-/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common-20.2.1.tgz", + "integrity": "sha512-h12tZ7Q70p4YUcA3eEMxeg7L3SIoXC0Z6D4JqS+4N5FoXALKzk5vUw+RQBmpCpKisliwfMqBjoM/kj0dU56+GA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-7f39b6f1-3542-5430-8760-0f404d7a7cee-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-7f39b6f1-3542-5430-8760-0f404d7a7cee-common/-/monaco-vscode-7f39b6f1-3542-5430-8760-0f404d7a7cee-common-20.2.1.tgz", + "integrity": "sha512-1M19sJ7ied1QvQN8V0zyPu1Rt0P2vzCGfDxsBhIMPsZpwUXDZ1k2P+HFQBjVshTlh0eQEvZNXWLs9yiuYl8I+g==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-85886bdb-61c5-52f1-8eb7-d1d32f6f8cbd-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-85886bdb-61c5-52f1-8eb7-d1d32f6f8cbd-common/-/monaco-vscode-85886bdb-61c5-52f1-8eb7-d1d32f6f8cbd-common-20.2.1.tgz", + "integrity": "sha512-BjMRdAfVn3zb5l7RnlrgxSmSwCRFjeEYZQYbwa0EV6Jp0PBe2DFaOf2HZUrtVoLC6UlyC95DcDNcrmX8qdVAwA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-897bebad-39df-57cb-8a57-36a271d038be-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-897bebad-39df-57cb-8a57-36a271d038be-common/-/monaco-vscode-897bebad-39df-57cb-8a57-36a271d038be-common-20.2.1.tgz", + "integrity": "sha512-mYMsqVYVTLmoX9TYccX5QmEmcPGAuhnHSYu7KY7uNk/wPVeMmg/FQLyAMfXwPbmeSOcGlgD+qRLLBeapefVnFg==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-8ccb7637-50ea-5359-97bf-00015d7fe567-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-8ccb7637-50ea-5359-97bf-00015d7fe567-common/-/monaco-vscode-8ccb7637-50ea-5359-97bf-00015d7fe567-common-20.2.1.tgz", + "integrity": "sha512-5IhDRyiRLPAysf2VD4KYrcGGeTkejwNRKoiXDWigd9PXdLcyJwv/ntvkY5KvcXf8CKUX6oBvdK3QYD0VegJmng==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-6db1b967-5327-5c5c-8c17-bd92774c0fb2-common": "20.2.1", + "@codingame/monaco-vscode-897bebad-39df-57cb-8a57-36a271d038be-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-96e83782-7f38-572e-8787-02e981f1c54f-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-96e83782-7f38-572e-8787-02e981f1c54f-common/-/monaco-vscode-96e83782-7f38-572e-8787-02e981f1c54f-common-20.2.1.tgz", + "integrity": "sha512-m/oReuik0SnYS8tofyH/B9Ne2mufr8wWPNfXNZeODmKgH/4A94IGc45TX+5yxcnENYYlaGb4SRzkTXe/CqzLBg==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-ebba7d85-8a22-5735-adf4-8299cd976dce-common": "20.2.1", + "@codingame/monaco-vscode-f22e7e55-aee8-5b52-a6bc-950efd9f5890-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-9a1a5840-af83-5d07-a156-ba32a36c5c4b-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-9a1a5840-af83-5d07-a156-ba32a36c5c4b-common/-/monaco-vscode-9a1a5840-af83-5d07-a156-ba32a36c5c4b-common-20.2.1.tgz", + "integrity": "sha512-KbwZGcSZrc85o/bQx6K+K5+tSmldEykFdwUrsELknfyrXzD7XDUHP4OAPmCB2tyMYx+2CtoDg1Ap8OpqlTM1bg==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-9ee79c1a-3f03-568b-8eac-b02513a98b68-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-9ee79c1a-3f03-568b-8eac-b02513a98b68-common/-/monaco-vscode-9ee79c1a-3f03-568b-8eac-b02513a98b68-common-20.2.1.tgz", + "integrity": "sha512-yMGrBy2R4M3pc69BXrGnHc4U6hdeCZRYFz08IlwOqmRIKEvETGEYARLMjNIKF7OSGtN72w/ogYdDw904Sr+Bwg==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-262ed59d-4f76-57cd-9e9f-1877f26ae049-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-9efc1f50-c7de-55d6-8b28-bcc88bd49b5a-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-9efc1f50-c7de-55d6-8b28-bcc88bd49b5a-common/-/monaco-vscode-9efc1f50-c7de-55d6-8b28-bcc88bd49b5a-common-20.2.1.tgz", + "integrity": "sha512-07ZlQCLQYnJmdDz4j0aVertHJ6/ddEryLXn6u5LTG/GJNEQzFUUwr3O16i0TLqsCGYaGGZ4R1cZq5EbfF/Og2Q==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-bc6d9a89-1625-5010-b57e-ff44151144fe-common": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1", + "@codingame/monaco-vscode-ebba7d85-8a22-5735-adf4-8299cd976dce-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common/-/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common-20.2.1.tgz", + "integrity": "sha512-rpurbDFIG1YSOZfciXFquEmOYDGXvfaimVBQpjY6WcF9V6x24KNJHnx3Wa06gaXJoaQ7M4ucRr1kN6ynJKtcNQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common/-/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common-20.2.1.tgz", + "integrity": "sha512-pENxDpxf2HM93oG7fjI13M/4zxiDZuKnXIzGgfBPchHEQww0+ZBV9fzOHYrQySkntpowD9uoNeikhTKEtYkiIw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common/-/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common-20.2.1.tgz", + "integrity": "sha512-JQLcPhCfxc4RMsSuIPKzYCXAKVGYNd262kqfjcVLwPznVVcCPbBe4fWu9khKnVEPE9bWDPO9o4iMOuUDLXu8/A==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common/-/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common-20.2.1.tgz", + "integrity": "sha512-hqFZdyhyaRnetCP6km6f2QD4ZewOe2g6zNC4yX2fvmN1WkvkDiab1HLHEbl0iEcVWH4XB2RXTYAjBK/xkMfEXA==", + "license": "MIT" + }, + "node_modules/@codingame/monaco-vscode-abed5a84-8a82-5f84-9412-88a736235bae-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-abed5a84-8a82-5f84-9412-88a736235bae-common/-/monaco-vscode-abed5a84-8a82-5f84-9412-88a736235bae-common-20.2.1.tgz", + "integrity": "sha512-wi6SYca8DUN6D2/bjwCc6FxSyr9mB/o8z8JQDu2cd7HYjMg7SwfqLypiaxEOaYhJa84R/Om9s0dbcjBIxndAcQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common/-/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common-20.2.1.tgz", + "integrity": "sha512-rtg073ZjqdDZ8SIy502gMQRxX0S/ZxrqFZX/rWO1lDXagirWNbIhn0vPfwCM8ydCwPf4TEyTaOswflETW1Mu6A==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "20.2.1", + "@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "20.2.1", + "@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-bd0792ac-6043-5ec3-a41a-54ccb922a1f4-common": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common": "20.2.1", + "@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-api": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-20.2.1.tgz", + "integrity": "sha512-V0U7srsbChsugxi4HP/Q9Xrzw1eajB3UfGUN7l+EYkZK72kChtXoNTyds1wiUfNwsQIt4C6MIwyOQqOCrPY5Lw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-base-service-override": "20.2.1", + "@codingame/monaco-vscode-environment-service-override": "20.2.1", + "@codingame/monaco-vscode-extensions-service-override": "20.2.1", + "@codingame/monaco-vscode-files-service-override": "20.2.1", + "@codingame/monaco-vscode-host-service-override": "20.2.1", + "@codingame/monaco-vscode-layout-service-override": "20.2.1", + "@codingame/monaco-vscode-quickaccess-service-override": "20.2.1", + "@vscode/iconv-lite-umd": "0.7.0", + "dompurify": "3.2.6", + "jschardet": "3.1.4", + "marked": "14.0.0" + } + }, + "node_modules/@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/-/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common-20.2.1.tgz", + "integrity": "sha512-D5q+XtmzMFHwVX9/2kp8woXMhnfGaRwv5CBWxQM4SGRJzfbDE+43K1ngNWazyK8r5+7QUYEjJmVWsDeh0LQTCQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1" + } + }, "node_modules/@codingame/monaco-vscode-base-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-base-service-override/-/monaco-vscode-base-service-override-3.2.3.tgz", - "integrity": "sha512-OHVtyMIbcFPC68Fv6jEg7p7MYIK9UzymnbwPRetuOHFj1xMALI7qkl9DH0czBBOZAk+4BttXqZLlJ9Ph3B4HHg==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-base-service-override/-/monaco-vscode-base-service-override-20.2.1.tgz", + "integrity": "sha512-U+XrQIXmhwrKwO/wntLxk9ZySMviDFd+1XbjCuZFBs++SYYk8p7vul93SyfAs7MVz37Vdp13XULJzYqZObEDDw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.2.1", + "@codingame/monaco-vscode-23aade48-f094-5c08-9555-97fc9cca96c9-common": "20.2.1", + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-9a1a5840-af83-5d07-a156-ba32a36c5c4b-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-bc6d9a89-1625-5010-b57e-ff44151144fe-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-bc6d9a89-1625-5010-b57e-ff44151144fe-common/-/monaco-vscode-bc6d9a89-1625-5010-b57e-ff44151144fe-common-20.2.1.tgz", + "integrity": "sha512-rPJKfOtFMZ+rX9uSj0ibs78odA3WwdT16QMDBvMx+l9KeTB3axNONSo577CHsx/zaTK98cwAhJD8gh4iyA/iKQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-bd0792ac-6043-5ec3-a41a-54ccb922a1f4-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-bd0792ac-6043-5ec3-a41a-54ccb922a1f4-common/-/monaco-vscode-bd0792ac-6043-5ec3-a41a-54ccb922a1f4-common-20.2.1.tgz", + "integrity": "sha512-iQlIMzfM0McG9694DOGeChv5VSIBT2i3Ex56xUgBFFipmpn7GQTZKrtkl1UydhpW1IaP4T6rzV5TOvB4IrKegQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-615ce609-8555-545a-a549-47bd9f80e9f8-common": "20.2.1", + "@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1", + "@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common": "20.2.1", + "@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-bf94ddb5-e436-506a-9763-5ab86b642508-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-bf94ddb5-e436-506a-9763-5ab86b642508-common/-/monaco-vscode-bf94ddb5-e436-506a-9763-5ab86b642508-common-20.2.1.tgz", + "integrity": "sha512-8Yju8mAt25Z7bygULthr3nal7/kjf2OYBZDy71A5+NNxeOdlkhxPvlawaJ2Xr2mVlKstBBJ15vvcyPStdEHJSw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common/-/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common-20.2.1.tgz", + "integrity": "sha512-/RVKGRcuaRzXPEr+tHATIXu0441ZG99YMZCETDiSfleQ03DuB7itdW5nMj9pKzKGKXqenWgcRKV1pqJCfpMbjw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common/-/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common-20.2.1.tgz", + "integrity": "sha512-KvhAG6OM3Xi+aTBA10u2bjw/ClHerBbStouoXZwLozKBXJLrawk5JrP9lyc3rDeMd865uGNe2GDdlT4MnXzQsA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common/-/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common-20.2.1.tgz", + "integrity": "sha512-X6pMLGw7VP/q8R+HoULf0sOlSDkwOWJg7s9SBetHY02cpfllmtDHKfZlB/DyxwfIwChypZebYvEzwjWSAzk0IQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-configuration-service-override": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-configuration-service-override/-/monaco-vscode-configuration-service-override-20.2.1.tgz", + "integrity": "sha512-Cak6szK7coRFQBi7YTbjqeSV2RUvFMaZaLkmZn7TWoSJleNwwUGotAE3Gl3f1dctXtKXXq9lh//h6PXWwviqkw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.2.1", + "@codingame/monaco-vscode-422642f2-7e3a-5c1c-9e1e-1d3ef1817346-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common": "20.2.1", + "@codingame/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common": "20.2.1", + "@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.2.1", + "@codingame/monaco-vscode-files-service-override": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-d0569cfb-4706-5ad6-b0b0-5115ad8685db-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-d0569cfb-4706-5ad6-b0b0-5115ad8685db-common/-/monaco-vscode-d0569cfb-4706-5ad6-b0b0-5115ad8685db-common-20.2.1.tgz", + "integrity": "sha512-KiUFtr157EffTrqbBbXIfHz1Zsykb6qDJIaR/ltl3Zfux6cncEE6hxvAlqdPSK/o+/122UnrBYCFBH8MQUOoCQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-d609a7d3-bf87-551a-884f-550a8b327ec5-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-d609a7d3-bf87-551a-884f-550a8b327ec5-common/-/monaco-vscode-d609a7d3-bf87-551a-884f-550a8b327ec5-common-20.2.1.tgz", + "integrity": "sha512-6uG+28Zj39LD2HrfuMYwIz42imewq0xgKPreI0BoyDqaRNzWkCQlRbP9JDUHK9ZFnfPFImfxrmQJkFx82WWCsA==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common/-/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common-20.2.1.tgz", + "integrity": "sha512-J1GtOd6fiBVV2NWgWtQUgXd2iWE07/23lb8p5cGDChbmvnYReKNLNEmrrnXGRiptN1PokiJXzmanSc9C1dX/Uw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common/-/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common-20.2.1.tgz", + "integrity": "sha512-X10AYZvaKJtPC5SpvW3IIu92kZSn4flvpTiD2n8iyPgs8HF98TIfhyYkreR17gfKVbh2tOS0KAMGD3fORV+srA==", + "license": "MIT" + }, + "node_modules/@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common/-/monaco-vscode-dbfe5f85-b426-55ed-a79b-5f811b395762-common-20.2.1.tgz", + "integrity": "sha512-dDTxW7RAUyzksMC7DHrF7Z5z80SdV6rx/aADjmy12OVHTqf4Dltxy73WF0NxIhjSGHVAOqheBQ6kwgl4xqqc0g==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-bc6d9a89-1625-5010-b57e-ff44151144fe-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-eb7d5efd-2e60-59f8-9ba4-9a8ae8cb2957-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-eb7d5efd-2e60-59f8-9ba4-9a8ae8cb2957-common/-/monaco-vscode-eb7d5efd-2e60-59f8-9ba4-9a8ae8cb2957-common-20.2.1.tgz", + "integrity": "sha512-QO6e8HCjoJzT7HQyP1ysqHW+5uGQz3gTZA9F9cqCSzbSdig7SEPZ1CFeZaCcxifTSVe/koel0AVf4c4qDl1Zaw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-262ed59d-4f76-57cd-9e9f-1877f26ae049-common": "20.2.1", + "@codingame/monaco-vscode-501b06ab-3f58-516b-8a1a-c29d375d3da4-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-9ee79c1a-3f03-568b-8eac-b02513a98b68-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-eba0b9b3-174c-5dae-9867-a37810ca1808-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-eba0b9b3-174c-5dae-9867-a37810ca1808-common/-/monaco-vscode-eba0b9b3-174c-5dae-9867-a37810ca1808-common-20.2.1.tgz", + "integrity": "sha512-fjhb02OSNCCEvzumxpnH7CF+8hV3/8iEFjm1qOTodczWjvdWa+BhaiUEBt4NueQ8IR/8UtIW9Iq1a0TwOJF2xw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-ebba7d85-8a22-5735-adf4-8299cd976dce-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-ebba7d85-8a22-5735-adf4-8299cd976dce-common/-/monaco-vscode-ebba7d85-8a22-5735-adf4-8299cd976dce-common-20.2.1.tgz", + "integrity": "sha512-IaEfEIpOatIxm2iJAopML1ocDkAx/kL+GmN8nSEih1q+1JyLjU8qY3hCZratK0rApjKTWnJCVkZ5hvapLsWpJw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common/-/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common-20.2.1.tgz", + "integrity": "sha512-HRs+VzEls/SYZeNCPXVkNfPH48ODuYLjSPDNGhW0pwaDnX28nmmchXIH6bc6Og4GFtMSn5eRw1pgBNCkAbljNw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-622c0cca-d5fa-59b6-b730-0715afcf93ee-common": "20.2.1", + "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-editor-api": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-api/-/monaco-vscode-editor-api-20.2.1.tgz", + "integrity": "sha512-f+e6Lchp/aW2J5lEqkULP8NF4PGRayVG2/X90HN7ydlWAIr/WDZfVDmP2XhmnTZXfAhCoYQWWljtHMQWY7aSyw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-5452e2b7-9081-5f95-839b-4ab3544ce28f-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-editor-service-override": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-service-override/-/monaco-vscode-editor-service-override-20.2.1.tgz", + "integrity": "sha512-Oetg/Ammu5aaBoFkGYTwNN+iTTsRO45eyY66hjjFFGGaLrcKKpFlgpGjZ7uIXcp8P8QCyPBAYHdEeJ2jFKceGg==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-72a1b7d3-3f58-5545-9b7e-f579bd003081-common": "20.2.1", + "@codingame/monaco-vscode-9efc1f50-c7de-55d6-8b28-bcc88bd49b5a-common": "20.2.1", + "@codingame/monaco-vscode-ac93482b-2178-52df-a200-ba0d1a4963fb-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" } }, "node_modules/@codingame/monaco-vscode-environment-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-environment-service-override/-/monaco-vscode-environment-service-override-3.2.3.tgz", - "integrity": "sha512-7YVJhS0RuKkrjwzz2ZKJeU98t29Yc2U/NfQfpTTbLfnZVBxPnC4Gbm59bRWswjtbBrIVpO5Dil+00o32HwXzyw==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-environment-service-override/-/monaco-vscode-environment-service-override-20.2.1.tgz", + "integrity": "sha512-+jJ2UfaiBJF949UYBg8+X9xf/sQGDjXRWQOlbV/084iX8ao0zed5GmCcxkCNQEncWGhoc/79z8F0+BlAJhqsbw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-abed5a84-8a82-5f84-9412-88a736235bae-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" } }, - "node_modules/@codingame/monaco-vscode-extensions-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extensions-service-override/-/monaco-vscode-extensions-service-override-3.2.3.tgz", - "integrity": "sha512-YZfEmKaXyXh54rIJ/c9k+D1JeWfHiryW5UfuVgscmLS3QoiLsPRurfVBY4zIBN88rTQknOViqqW7llpnmaiFYQ==", + "node_modules/@codingame/monaco-vscode-extension-api": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extension-api/-/monaco-vscode-extension-api-20.2.1.tgz", + "integrity": "sha512-K2VFVhQZUpBS+YJRr4DYgvNjelu7dWw81YWg8PwEVj7X8vSd9DqQZbTvudsiJDhlkkY4KWqZQjtITY0fc/X3QQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-base-service-override": "3.2.3", - "@codingame/monaco-vscode-environment-service-override": "3.2.3", - "@codingame/monaco-vscode-extensions-service-override": "3.2.3", - "@codingame/monaco-vscode-files-service-override": "3.2.3", - "@codingame/monaco-vscode-host-service-override": "3.2.3", - "@codingame/monaco-vscode-layout-service-override": "3.2.3", - "@codingame/monaco-vscode-quickaccess-service-override": "3.2.3", - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-extensions-service-override": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-extensions-service-override": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extensions-service-override/-/monaco-vscode-extensions-service-override-20.2.1.tgz", + "integrity": "sha512-+/m/ZrGyBpfj80f2g0U42OSMhSaXCZNULUKyIM+Amm5TqcaonJ6VysGEga48QO3SGHqzdBRSJJRwR5MNhQAbOw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-0af61f78-dfc5-57ba-8d32-66268c8de38d-common": "20.2.1", + "@codingame/monaco-vscode-256d5b78-0649-50e9-8354-2807f95f68f4-common": "20.2.1", + "@codingame/monaco-vscode-2a94c04a-b85b-5669-b06b-89c1bfa11cb9-common": "20.2.1", + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common": "20.2.1", + "@codingame/monaco-vscode-571c8352-7953-5038-9f09-e03bb6219a0e-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-622c0cca-d5fa-59b6-b730-0715afcf93ee-common": "20.2.1", + "@codingame/monaco-vscode-670aae94-7f88-54d7-90ea-6fcbef423557-common": "20.2.1", + "@codingame/monaco-vscode-6845754f-e617-5ed9-8aaa-6ca3653a9532-common": "20.2.1", + "@codingame/monaco-vscode-6f931a91-88ea-5232-897f-a17ec3929ba5-common": "20.2.1", + "@codingame/monaco-vscode-7f39b6f1-3542-5430-8760-0f404d7a7cee-common": "20.2.1", + "@codingame/monaco-vscode-8ccb7637-50ea-5359-97bf-00015d7fe567-common": "20.2.1", + "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.2.1", + "@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "20.2.1", + "@codingame/monaco-vscode-a8d3bd74-e63e-5327-96e8-4f931661e329-common": "20.2.1", + "@codingame/monaco-vscode-a9da9abe-278d-5ce6-9418-99c7c07c5c37-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common": "20.2.1", + "@codingame/monaco-vscode-bf94ddb5-e436-506a-9763-5ab86b642508-common": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-d0569cfb-4706-5ad6-b0b0-5115ad8685db-common": "20.2.1", + "@codingame/monaco-vscode-eb7d5efd-2e60-59f8-9ba4-9a8ae8cb2957-common": "20.2.1", + "@codingame/monaco-vscode-eba0b9b3-174c-5dae-9867-a37810ca1808-common": "20.2.1", + "@codingame/monaco-vscode-f22e7e55-aee8-5b52-a6bc-950efd9f5890-common": "20.2.1", + "@codingame/monaco-vscode-files-service-override": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-f22e7e55-aee8-5b52-a6bc-950efd9f5890-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-f22e7e55-aee8-5b52-a6bc-950efd9f5890-common/-/monaco-vscode-f22e7e55-aee8-5b52-a6bc-950efd9f5890-common-20.2.1.tgz", + "integrity": "sha512-HrUgIIQpWkMcGy7fHQFX7y3FOCP0Hetb85lDvZCSf+XiXcz/4YP193bHp3BA+zwRFanD7RWTSrwXFbC3BVPnlQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-d941ac7b-412f-57e3-b1bf-f6b0eb253b21-common": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common/-/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common-20.2.1.tgz", + "integrity": "sha512-R+8qheGjNfJthnO4Qr0zs+x7Ylcw5/g7One5V/izemVoK2hPC4yGSRyF0V1OcAjkqDxJsOvcSU0GrstEVnOI0g==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "20.2.1" } }, "node_modules/@codingame/monaco-vscode-files-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-files-service-override/-/monaco-vscode-files-service-override-3.2.3.tgz", - "integrity": "sha512-M/yEyD4zSYt7eQISeH/OSUELxx7nXtmXIHjC9mQXBo0VD47nAgjy9Yo3vS1al3+Sz3j1Uj2je96x/6Q9zGwg4A==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-files-service-override/-/monaco-vscode-files-service-override-20.2.1.tgz", + "integrity": "sha512-p+3Ycbc5VOwOxH5QkhKvgDavOhGQCk5e7aa4Z0ERtkWst5CF8q0xqQbcke1UBjwLbst2Pt0kRuGXz7FolikzZA==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common": "20.2.1", + "@codingame/monaco-vscode-15626ec7-b165-51e1-8caf-7bcc2ae9b95a-common": "20.2.1", + "@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1", + "@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common": "20.2.1" } }, "node_modules/@codingame/monaco-vscode-host-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-host-service-override/-/monaco-vscode-host-service-override-3.2.3.tgz", - "integrity": "sha512-zY54k4czioGczMOmWPF6aHx7jrHSnkU1D36MYyY3wrvFgI5diJCrCSz35VPf0WTlLh4OT1jJ+D9ufmJ1cn1moQ==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-host-service-override/-/monaco-vscode-host-service-override-20.2.1.tgz", + "integrity": "sha512-Q3jSzf39M8dMPNbsmrHaJRDBvIX+9ZzEoieXZf5HnK6UBxULKLXdj0mO1xzZD/4AfxfMQTumHAG8PNkVPJ2NnQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.2.1", + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" } }, "node_modules/@codingame/monaco-vscode-languages-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-languages-service-override/-/monaco-vscode-languages-service-override-3.2.3.tgz", - "integrity": "sha512-EO3JDyqY1wNe/2NN1S8TmdHGr+H53UvvC+LWD/sUXyz21LqO1cK/bA7ZRNo0yTizYz080RYxBEzmVZ5UtPqkcg==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-languages-service-override/-/monaco-vscode-languages-service-override-20.2.1.tgz", + "integrity": "sha512-q8MVHEOb4o7p2YMdvW5q3e6U+yL6BVHQJB8JqHgmQ0eTx5gK99PtOCpIst3Tot4CmLiCLcMl8av7NH5nwNDexw==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-files-service-override": "3.2.3", - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-files-service-override": "20.2.1" } }, "node_modules/@codingame/monaco-vscode-layout-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-layout-service-override/-/monaco-vscode-layout-service-override-3.2.3.tgz", - "integrity": "sha512-ZMSjElmJdvMb4C7TJe71QJXvn4EZ8YvDGCNChuUHmbGfaX2MEmtMBvMjZH+z5RF5IA1Mtx6RztSBJHDhhYgjBA==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-layout-service-override/-/monaco-vscode-layout-service-override-20.2.1.tgz", + "integrity": "sha512-P2857Tn7ZX5Xi/DgbxfMjJpXiBwI7+ACmUoQTAPBnKam40ZG7EdNS31s02BUVUx22JmDzBbVJ3vYDCCKaeRJHw==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-6bf85d7b-e6e3-54e9-9bc1-7e08d663f0f6-common": "20.2.1", + "@codingame/monaco-vscode-85886bdb-61c5-52f1-8eb7-d1d32f6f8cbd-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-localization-service-override": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-localization-service-override/-/monaco-vscode-localization-service-override-20.2.1.tgz", + "integrity": "sha512-DHLSu88FWHBSY724GuPIA/sLdIw/j0Bdj3LwdzN46T5R+VV3H7sqtqTLBbs+aY3r9GweNUus3GkwjWZXXGNq/Q==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-a654b07e-8806-5425-b124-18f03ba8e11a-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1" + } + }, + "node_modules/@codingame/monaco-vscode-log-service-override": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-log-service-override/-/monaco-vscode-log-service-override-20.2.1.tgz", + "integrity": "sha512-CUTxmqqFeu8Sbw24ot6S3wSQDE5DOTMHrK3gC/heNjkWDPXQTu10QteWnBekfP5Czbm+huXUDljL41BVHoD5rQ==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-abed5a84-8a82-5f84-9412-88a736235bae-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common": "20.2.1", + "@codingame/monaco-vscode-environment-service-override": "20.2.1" } }, "node_modules/@codingame/monaco-vscode-model-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-model-service-override/-/monaco-vscode-model-service-override-3.2.3.tgz", - "integrity": "sha512-rpLIBbl5LL4bx8YooiosL+LbDpLO8S+Vs6EFW9n2yzTn1CA6BOY5I0ANNyBsfQ+Bw4jEzzSWnjVDgxfyRFVqZQ==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-model-service-override/-/monaco-vscode-model-service-override-20.2.1.tgz", + "integrity": "sha512-ff/hBbV1ERU6dcoCJSkBZyg1BvJ8JOmmDt8rmoaWMNoub3hdsmvA87jKw1iblhv/EtKYL0R9J25+6e9LIU2FAQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-0c06bfba-d24d-5c4d-90cd-b40cefb7f811-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-caeb744c-8e3f-5c11-80fb-0f057d24d544-common": "20.2.1" } }, "node_modules/@codingame/monaco-vscode-quickaccess-service-override": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-quickaccess-service-override/-/monaco-vscode-quickaccess-service-override-3.2.3.tgz", - "integrity": "sha512-vr6l1tvA81yOfYKG5zdCaMoGeE7ruWXfISeQv8XcHpr1/VvxCdeBOi22GhRaomEKg9ioAqxzAe0WK8cS96ftIA==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-quickaccess-service-override/-/monaco-vscode-quickaccess-service-override-20.2.1.tgz", + "integrity": "sha512-bx5dbe60EPOBesHcC0kJySmmix72vQvRLf2cBl7J3Xncs4yaShlaaScgwL5BwmlNIdpMD8Ay0vN1AOT38PKrkQ==", "license": "MIT", "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" + "@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.2.1", + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-40cada32-7e9c-528a-81fc-766e4da54147-common": "20.2.1", + "@codingame/monaco-vscode-9a1a5840-af83-5d07-a156-ba32a36c5c4b-common": "20.2.1", + "@codingame/monaco-vscode-a17e9d37-b6c1-5556-8402-5db73960fae3-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-d609a7d3-bf87-551a-884f-550a8b327ec5-common": "20.2.1", + "@codingame/monaco-vscode-eda30bac-0984-5b42-9362-c68996b85232-common": "20.2.1" } }, "node_modules/@esbuild/aix-ppc64": { @@ -943,9 +1713,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.4.tgz", - "integrity": "sha512-B2wfzCJ+ps/OBzRjeds7DlJumCU3rXMxJJS1vzURyj7+KBHGONm7c9q1TfdBl4vCuNMkDvARn3PBl2wZzuR5mw==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.47.1.tgz", + "integrity": "sha512-lTahKRJip0knffA/GTNFJMrToD+CM+JJ+Qt5kjzBK/sFQ0EWqfKW3AYQSlZXN98tX0lx66083U9JYIMioMMK7g==", "cpu": [ "arm" ], @@ -957,9 +1727,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.4.tgz", - "integrity": "sha512-FGJYXvYdn8Bs6lAlBZYT5n+4x0ciEp4cmttsvKAZc/c8/JiPaQK8u0c/86vKX8lA7OY/+37lIQSe0YoAImvBAA==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.47.1.tgz", + "integrity": "sha512-uqxkb3RJLzlBbh/bbNQ4r7YpSZnjgMgyoEOY7Fy6GCbelkDSAzeiogxMG9TfLsBbqmGsdDObo3mzGqa8hps4MA==", "cpu": [ "arm64" ], @@ -971,9 +1741,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.4.tgz", - "integrity": "sha512-/9qwE/BM7ATw/W/OFEMTm3dmywbJyLQb4f4v5nmOjgYxPIGpw7HaxRi6LnD4Pjn/q7k55FGeHe1/OD02w63apA==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.47.1.tgz", + "integrity": "sha512-tV6reObmxBDS4DDyLzTDIpymthNlxrLBGAoQx6m2a7eifSNEZdkXQl1PE4ZjCkEDPVgNXSzND/k9AQ3mC4IOEQ==", "cpu": [ "arm64" ], @@ -985,9 +1755,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.4.tgz", - "integrity": "sha512-QkWfNbeRuzFnv2d0aPlrzcA3Ebq2mE8kX/5Pl7VdRShbPBjSnom7dbT8E3Jmhxo2RL784hyqGvR5KHavCJQciw==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.47.1.tgz", + "integrity": "sha512-XuJRPTnMk1lwsSnS3vYyVMu4x/+WIw1MMSiqj5C4j3QOWsMzbJEK90zG+SWV1h0B1ABGCQ0UZUjti+TQK35uHQ==", "cpu": [ "x64" ], @@ -999,9 +1769,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.4.tgz", - "integrity": "sha512-+ToyOMYnSfV8D+ckxO6NthPln/PDNp1P6INcNypfZ7muLmEvPKXqduUiD8DlJpMMT8LxHcE5W0dK9kXfJke9Zw==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.47.1.tgz", + "integrity": "sha512-79BAm8Ag/tmJ5asCqgOXsb3WY28Rdd5Lxj8ONiQzWzy9LvWORd5qVuOnjlqiWWZJw+dWewEktZb5yiM1DLLaHw==", "cpu": [ "arm64" ], @@ -1013,9 +1783,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.4.tgz", - "integrity": "sha512-cGT6ey/W+sje6zywbLiqmkfkO210FgRz7tepWAzzEVgQU8Hn91JJmQWNqs55IuglG8sJdzk7XfNgmGRtcYlo1w==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.47.1.tgz", + "integrity": "sha512-OQ2/ZDGzdOOlyfqBiip0ZX/jVFekzYrGtUsqAfLDbWy0jh1PUU18+jYp8UMpqhly5ltEqotc2miLngf9FPSWIA==", "cpu": [ "x64" ], @@ -1027,9 +1797,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.4.tgz", - "integrity": "sha512-9fhTJyOb275w5RofPSl8lpr4jFowd+H4oQKJ9XTYzD1JWgxdZKE8bA6d4npuiMemkecQOcigX01FNZNCYnQBdA==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.47.1.tgz", + "integrity": "sha512-HZZBXJL1udxlCVvoVadstgiU26seKkHbbAMLg7680gAcMnRNP9SAwTMVet02ANA94kXEI2VhBnXs4e5nf7KG2A==", "cpu": [ "arm" ], @@ -1041,9 +1811,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.4.tgz", - "integrity": "sha512-+6kCIM5Zjvz2HwPl/udgVs07tPMIp1VU2Y0c72ezjOvSvEfAIWsUgpcSDvnC7g9NrjYR6X9bZT92mZZ90TfvXw==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.47.1.tgz", + "integrity": "sha512-sZ5p2I9UA7T950JmuZ3pgdKA6+RTBr+0FpK427ExW0t7n+QwYOcmDTK/aRlzoBrWyTpJNlS3kacgSlSTUg6P/Q==", "cpu": [ "arm" ], @@ -1055,9 +1825,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.4.tgz", - "integrity": "sha512-SWuXdnsayCZL4lXoo6jn0yyAj7TTjWE4NwDVt9s7cmu6poMhtiras5c8h6Ih6Y0Zk6Z+8t/mLumvpdSPTWub2Q==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.47.1.tgz", + "integrity": "sha512-3hBFoqPyU89Dyf1mQRXCdpc6qC6At3LV6jbbIOZd72jcx7xNk3aAp+EjzAtN6sDlmHFzsDJN5yeUySvorWeRXA==", "cpu": [ "arm64" ], @@ -1069,9 +1839,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.4.tgz", - "integrity": "sha512-vDknMDqtMhrrroa5kyX6tuC0aRZZlQ+ipDfbXd2YGz5HeV2t8HOl/FDAd2ynhs7Ki5VooWiiZcCtxiZ4IjqZwQ==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.47.1.tgz", + "integrity": "sha512-49J4FnMHfGodJWPw73Ve+/hsPjZgcXQGkmqBGZFvltzBKRS+cvMiWNLadOMXKGnYRhs1ToTGM0sItKISoSGUNA==", "cpu": [ "arm64" ], @@ -1083,9 +1853,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.4.tgz", - "integrity": "sha512-mCBkjRZWhvjtl/x+Bd4fQkWZT8canStKDxGrHlBiTnZmJnWygGcvBylzLVCZXka4dco5ymkWhZlLwKCGFF4ivw==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.47.1.tgz", + "integrity": "sha512-4yYU8p7AneEpQkRX03pbpLmE21z5JNys16F1BZBZg5fP9rIlb0TkeQjn5du5w4agConCCEoYIG57sNxjryHEGg==", "cpu": [ "loong64" ], @@ -1097,9 +1867,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.4.tgz", - "integrity": "sha512-YMdz2phOTFF+Z66dQfGf0gmeDSi5DJzY5bpZyeg9CPBkV9QDzJ1yFRlmi/j7WWRf3hYIWrOaJj5jsfwgc8GTHQ==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.47.1.tgz", + "integrity": "sha512-fAiq+J28l2YMWgC39jz/zPi2jqc0y3GSRo1yyxlBHt6UN0yYgnegHSRPa3pnHS5amT/efXQrm0ug5+aNEu9UuQ==", "cpu": [ "ppc64" ], @@ -1111,9 +1881,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.4.tgz", - "integrity": "sha512-r0WKLSfFAK8ucG024v2yiLSJMedoWvk8yWqfNICX28NHDGeu3F/wBf8KG6mclghx4FsLePxJr/9N8rIj1PtCnw==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.47.1.tgz", + "integrity": "sha512-daoT0PMENNdjVYYU9xec30Y2prb1AbEIbb64sqkcQcSaR0zYuKkoPuhIztfxuqN82KYCKKrj+tQe4Gi7OSm1ow==", "cpu": [ "riscv64" ], @@ -1125,9 +1895,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.4.tgz", - "integrity": "sha512-IaizpPP2UQU3MNyPH1u0Xxbm73D+4OupL0bjo4Hm0496e2wg3zuvoAIhubkD1NGy9fXILEExPQy87mweujEatA==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.47.1.tgz", + "integrity": "sha512-JNyXaAhWtdzfXu5pUcHAuNwGQKevR+6z/poYQKVW+pLaYOj9G1meYc57/1Xv2u4uTxfu9qEWmNTjv/H/EpAisw==", "cpu": [ "riscv64" ], @@ -1139,9 +1909,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.4.tgz", - "integrity": "sha512-aCM29orANR0a8wk896p6UEgIfupReupnmISz6SUwMIwTGaTI8MuKdE0OD2LvEg8ondDyZdMvnaN3bW4nFbATPA==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.47.1.tgz", + "integrity": "sha512-U/CHbqKSwEQyZXjCpY43/GLYcTVKEXeRHw0rMBJP7fP3x6WpYG4LTJWR3ic6TeYKX6ZK7mrhltP4ppolyVhLVQ==", "cpu": [ "s390x" ], @@ -1153,9 +1923,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.4.tgz", - "integrity": "sha512-0Xj1vZE3cbr/wda8d/m+UeuSL+TDpuozzdD4QaSzu/xSOMK0Su5RhIkF7KVHFQsobemUNHPLEcYllL7ZTCP/Cg==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.47.1.tgz", + "integrity": "sha512-uTLEakjxOTElfeZIGWkC34u2auLHB1AYS6wBjPGI00bWdxdLcCzK5awjs25YXpqB9lS8S0vbO0t9ZcBeNibA7g==", "cpu": [ "x64" ], @@ -1167,9 +1937,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.4.tgz", - "integrity": "sha512-kM/orjpolfA5yxsx84kI6bnK47AAZuWxglGKcNmokw2yy9i5eHY5UAjcX45jemTJnfHAWo3/hOoRqEeeTdL5hw==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.47.1.tgz", + "integrity": "sha512-Ft+d/9DXs30BK7CHCTX11FtQGHUdpNDLJW0HHLign4lgMgBcPFN3NkdIXhC5r9iwsMwYreBBc4Rho5ieOmKNVQ==", "cpu": [ "x64" ], @@ -1181,9 +1951,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.4.tgz", - "integrity": "sha512-cNLH4psMEsWKILW0isbpQA2OvjXLbKvnkcJFmqAptPQbtLrobiapBJVj6RoIvg6UXVp5w0wnIfd/Q56cNpF+Ew==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.47.1.tgz", + "integrity": "sha512-N9X5WqGYzZnjGAFsKSfYFtAShYjwOmFJoWbLg3dYixZOZqU7hdMq+/xyS14zKLhFhZDhP9VfkzQnsdk0ZDS9IA==", "cpu": [ "arm64" ], @@ -1195,9 +1965,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.4.tgz", - "integrity": "sha512-OiEa5lRhiANpv4SfwYVgQ3opYWi/QmPDC5ve21m8G9pf6ZO+aX1g2EEF1/IFaM1xPSP7mK0msTRXlPs6mIagkg==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.47.1.tgz", + "integrity": "sha512-O+KcfeCORZADEY8oQJk4HK8wtEOCRE4MdOkb8qGZQNun3jzmj2nmhV/B/ZaaZOkPmJyvm/gW9n0gsB4eRa1eiQ==", "cpu": [ "ia32" ], @@ -1209,9 +1979,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.4.tgz", - "integrity": "sha512-IKL9mewGZ5UuuX4NQlwOmxPyqielvkAPUS2s1cl6yWjjQvyN3h5JTdVFGD5Jr5xMjRC8setOfGQDVgX8V+dkjg==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.47.1.tgz", + "integrity": "sha512-CpKnYa8eHthJa3c+C38v/E+/KZyF1Jdh2Cz3DyKZqEWYgrM1IHFArXNWvBLPQCKUEsAqqKX27tTqVEFbDNUcOA==", "cpu": [ "x64" ], @@ -1292,19 +2062,6 @@ "node": ">=20.0.0" } }, - "node_modules/@secretlint/formatter/node_modules/chalk": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", - "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@secretlint/node": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz", @@ -1548,13 +2305,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.123", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.123.tgz", - "integrity": "sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg==", + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz", + "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.10.0" } }, "node_modules/@types/normalize-package-data": { @@ -1571,6 +2328,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, "node_modules/@types/vscode": { "version": "1.94.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.94.0.tgz", @@ -1610,6 +2374,33 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, "node_modules/@vitest/pretty-format": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", @@ -1681,6 +2472,12 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vscode/iconv-lite-umd": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@vscode/iconv-lite-umd/-/iconv-lite-umd-0.7.0.tgz", + "integrity": "sha512-bRRFxLfg5dtAyl5XyiVWz/ZBPahpOpPrNYnnHpOpUZvam4tKH35wdhP4Kj6PbM0+KdliOsPzbGWpkxcdpNB/sg==", + "license": "MIT" + }, "node_modules/@vscode/vsce": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.6.0.tgz", @@ -1873,17 +2670,6 @@ "win32" ] }, - "node_modules/@vscode/vsce/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@vscode/vsce/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1911,19 +2697,6 @@ "node": ">=18" } }, - "node_modules/@vscode/vsce/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@vscode/vsce/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2149,12 +2922,14 @@ "license": "BSD-2-Clause" }, "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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -2288,9 +3063,9 @@ } }, "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", + "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -2777,6 +3552,15 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", + "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/domutils": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", @@ -3083,19 +3867,6 @@ "node": ">=8.6.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-uri": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", @@ -3330,20 +4101,54 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/glob/node_modules/minimatch": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, - "license": "ISC", + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "20 || >=22" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/gopd": { @@ -3636,6 +4441,16 @@ "license": "BSD-3-Clause", "optional": true }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/import-meta-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", @@ -3832,6 +4647,15 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jschardet": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-3.1.4.tgz", + "integrity": "sha512-/kmVISmrwVwtyYU40iQUOp3SUPk2dhNCMsZBQX0R1/jZ8maaXJ/oZIzUOiyOqcgtLnETFKYChbJ5iDC/eWmFHg==", + "license": "LGPL-2.1+", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -3979,6 +4803,19 @@ "node": ">=18.0.0" } }, + "node_modules/langium-cli/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/langium-railroad": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/langium-railroad/-/langium-railroad-3.5.0.tgz", @@ -4134,6 +4971,18 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/marked": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -4225,6 +5074,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -4253,44 +5115,28 @@ "license": "MIT", "optional": true }, - "node_modules/monaco-editor": { - "name": "@codingame/monaco-vscode-editor-api", - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-editor-api/-/monaco-vscode-editor-api-3.2.3.tgz", - "integrity": "sha512-7EaQf5n3lTtCIciz7UyfoYt4FowhrD8xAc/T7gbyo2LkuSD7A8h4CHbnUOZNhsTqocFqOUSkcQl0z5n0T1LoTQ==", - "license": "MIT", - "dependencies": { - "vscode": "npm:@codingame/monaco-vscode-api@3.2.3" - } - }, "node_modules/monaco-languageclient": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/monaco-languageclient/-/monaco-languageclient-8.1.1.tgz", - "integrity": "sha512-33MLy4uk0s8hafD1WWdo0x/7ymKwDY5aBoC8Q4D+PBjae8xEHg+yIGyZneWF1ouO0/prn973hzBJ1kRZp6RTNw==", - "license": "MIT", - "dependencies": { - "@codingame/monaco-vscode-extensions-service-override": "~3.2.3", - "@codingame/monaco-vscode-languages-service-override": "~3.2.3", - "@codingame/monaco-vscode-model-service-override": "~3.2.3", - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", - "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3", + "version": "9.11.0", + "resolved": "https://registry.npmjs.org/monaco-languageclient/-/monaco-languageclient-9.11.0.tgz", + "integrity": "sha512-76aEPzISqQF/6W6eAonWWcAiAqYsNlo7CeKxhAgXokGEw51mS4SraEumwhyHeb0uM6KWkTpzEdxShXxBAmbtGw==", + "license": "MIT", + "dependencies": { + "@codingame/monaco-vscode-api": "~20.2.1", + "@codingame/monaco-vscode-configuration-service-override": "~20.2.1", + "@codingame/monaco-vscode-editor-api": "~20.2.1", + "@codingame/monaco-vscode-editor-service-override": "~20.2.1", + "@codingame/monaco-vscode-extension-api": "~20.2.1", + "@codingame/monaco-vscode-extensions-service-override": "~20.2.1", + "@codingame/monaco-vscode-languages-service-override": "~20.2.1", + "@codingame/monaco-vscode-localization-service-override": "~20.2.1", + "@codingame/monaco-vscode-log-service-override": "~20.2.1", + "@codingame/monaco-vscode-model-service-override": "~20.2.1", + "vscode": "npm:@codingame/monaco-vscode-extension-api@~20.2.1", "vscode-languageclient": "~9.0.1" }, "engines": { - "node": ">=16.11.0", - "npm": ">=9.0.0" - }, - "peerDependencies": { - "monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~3.2.3", - "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3" - }, - "peerDependenciesMeta": { - "monaco-editor": { - "optional": false - }, - "vscode": { - "optional": false - } + "node": ">=20.10.0", + "npm": ">=10.2.3" } }, "node_modules/ms": { @@ -4509,19 +5355,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-json/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parse-semver": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", @@ -4632,6 +5465,19 @@ "node": "20 || >=22" } }, + "node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -4873,17 +5719,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -4917,14 +5752,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "node_modules/read-pkg/node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4985,9 +5820,9 @@ } }, "node_modules/rollup": { - "version": "4.46.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.4.tgz", - "integrity": "sha512-YbxoxvoqNg9zAmw4+vzh1FkGAiZRK+LhnSrbSrSXMdZYsRPDWoshcSd/pldKRO6lWzv/e9TiJAVQyirYIeSIPQ==", + "version": "4.47.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.47.1.tgz", + "integrity": "sha512-iasGAQoZ5dWDzULEUX3jiW0oB1qyFOepSyDyoU6S/OhVlDIwj5knI5QBa5RRQ0sK7OE0v+8VIi2JuV+G+3tfNg==", "dev": true, "license": "MIT", "dependencies": { @@ -5001,26 +5836,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.46.4", - "@rollup/rollup-android-arm64": "4.46.4", - "@rollup/rollup-darwin-arm64": "4.46.4", - "@rollup/rollup-darwin-x64": "4.46.4", - "@rollup/rollup-freebsd-arm64": "4.46.4", - "@rollup/rollup-freebsd-x64": "4.46.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.46.4", - "@rollup/rollup-linux-arm-musleabihf": "4.46.4", - "@rollup/rollup-linux-arm64-gnu": "4.46.4", - "@rollup/rollup-linux-arm64-musl": "4.46.4", - "@rollup/rollup-linux-loongarch64-gnu": "4.46.4", - "@rollup/rollup-linux-ppc64-gnu": "4.46.4", - "@rollup/rollup-linux-riscv64-gnu": "4.46.4", - "@rollup/rollup-linux-riscv64-musl": "4.46.4", - "@rollup/rollup-linux-s390x-gnu": "4.46.4", - "@rollup/rollup-linux-x64-gnu": "4.46.4", - "@rollup/rollup-linux-x64-musl": "4.46.4", - "@rollup/rollup-win32-arm64-msvc": "4.46.4", - "@rollup/rollup-win32-ia32-msvc": "4.46.4", - "@rollup/rollup-win32-x64-msvc": "4.46.4", + "@rollup/rollup-android-arm-eabi": "4.47.1", + "@rollup/rollup-android-arm64": "4.47.1", + "@rollup/rollup-darwin-arm64": "4.47.1", + "@rollup/rollup-darwin-x64": "4.47.1", + "@rollup/rollup-freebsd-arm64": "4.47.1", + "@rollup/rollup-freebsd-x64": "4.47.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.47.1", + "@rollup/rollup-linux-arm-musleabihf": "4.47.1", + "@rollup/rollup-linux-arm64-gnu": "4.47.1", + "@rollup/rollup-linux-arm64-musl": "4.47.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.47.1", + "@rollup/rollup-linux-ppc64-gnu": "4.47.1", + "@rollup/rollup-linux-riscv64-gnu": "4.47.1", + "@rollup/rollup-linux-riscv64-musl": "4.47.1", + "@rollup/rollup-linux-s390x-gnu": "4.47.1", + "@rollup/rollup-linux-x64-gnu": "4.47.1", + "@rollup/rollup-linux-x64-musl": "4.47.1", + "@rollup/rollup-win32-arm64-msvc": "4.47.1", + "@rollup/rollup-win32-ia32-msvc": "4.47.1", + "@rollup/rollup-win32-x64-msvc": "4.47.1", "fsevents": "~2.3.2" } }, @@ -5114,76 +5949,6 @@ "node": ">=20.0.0" } }, - "node_modules/secretlint/node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/secretlint/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/secretlint/node_modules/path-type": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/secretlint/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/secretlint/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", @@ -5384,6 +6149,19 @@ "simple-concat": "^1.0.0" } }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -5619,6 +6397,17 @@ "node": ">=8" } }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-literal": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", @@ -5963,6 +6752,19 @@ "node": "*" } }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typed-rest-client": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", @@ -5976,9 +6778,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6036,16 +6838,16 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", "dev": true, "license": "MIT" }, "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", "engines": { @@ -6127,24 +6929,24 @@ } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.3.tgz", + "integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.14" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -6153,14 +6955,14 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", - "less": "*", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -6328,33 +7130,6 @@ } } }, - "node_modules/vitest/node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, "node_modules/vitest/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -6369,19 +7144,16 @@ } }, "node_modules/vscode": { - "name": "@codingame/monaco-vscode-api", - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-api/-/monaco-vscode-api-3.2.3.tgz", - "integrity": "sha512-YOad82N2G5Ae/Ry14LOM3Mka6EjzbGXfwIs44xP/kFdhk9m7c1vXiIQxJIyUjTsJgzfEqYvcQKULlt4cqC7cEA==", + "name": "@codingame/monaco-vscode-extension-api", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@codingame/monaco-vscode-extension-api/-/monaco-vscode-extension-api-20.2.1.tgz", + "integrity": "sha512-K2VFVhQZUpBS+YJRr4DYgvNjelu7dWw81YWg8PwEVj7X8vSd9DqQZbTvudsiJDhlkkY4KWqZQjtITY0fc/X3QQ==", "license": "MIT", "dependencies": { - "@codingame/monaco-vscode-base-service-override": "3.2.3", - "@codingame/monaco-vscode-environment-service-override": "3.2.3", - "@codingame/monaco-vscode-extensions-service-override": "3.2.3", - "@codingame/monaco-vscode-files-service-override": "3.2.3", - "@codingame/monaco-vscode-host-service-override": "3.2.3", - "@codingame/monaco-vscode-layout-service-override": "3.2.3", - "@codingame/monaco-vscode-quickaccess-service-override": "3.2.3" + "@codingame/monaco-vscode-34a0ffd3-b9f5-5699-b43b-38af5732f38a-common": "20.2.1", + "@codingame/monaco-vscode-4a3ac544-9a61-534c-88df-756262793ef7-common": "20.2.1", + "@codingame/monaco-vscode-api": "20.2.1", + "@codingame/monaco-vscode-extensions-service-override": "20.2.1" } }, "node_modules/vscode-jsonrpc": { @@ -6407,6 +7179,15 @@ "vscode": "^1.82.0" } }, + "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==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/vscode-languageclient/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", diff --git a/package.json b/package.json index b4e4240..fdb3d23 100644 --- a/package.json +++ b/package.json @@ -44,10 +44,10 @@ "test": "vitest run" }, "dependencies": { - "chalk": "~5.3.0", + "chalk": "~5.6.0", "commander": "~11.0.0", "langium": "~3.5.0", - "monaco-languageclient": "~8.1.1", + "monaco-languageclient": "~9.11.0", "typir": "~0.2.2", "typir-langium": "~0.2.2", "vscode-languageclient": "~9.0.1", @@ -55,16 +55,15 @@ }, "devDependencies": { "@codingame/esbuild-import-meta-url-plugin": "~1.0.2", - "@types/node": "^18.0.0", + "@types/node": "^24.0.0", "@types/vscode": "~1.94.0", "concurrently": "~9.2.0", "esbuild": "^0.25.5", "http-server": "~14.1.1", "langium-cli": "~3.5.0", - "typescript": "~5.5.0", - "vite": "^6.3.5", + "typescript": "~5.9.2", + "vite": "^7.0.0", "vitest": "^3.2.0", - "vscode": "npm:@codingame/monaco-vscode-api@~3.2.3", "@vscode/vsce": "^3.4.0" }, "volta": { From a13f28ed3bc007d3f2285b18338040767fbcbbb3 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Thu, 21 Aug 2025 14:38:45 +0200 Subject: [PATCH 47/49] Restore support for process labels in LTOL --- src/language/r-check-type-checking.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/language/r-check-type-checking.ts b/src/language/r-check-type-checking.ts index a22961c..e6b0c06 100644 --- a/src/language/r-check-type-checking.ts +++ b/src/language/r-check-type-checking.ts @@ -32,6 +32,10 @@ export class RCheckTypeSystem implements LangiumTypeSystemDefinition node.builtinType === "bool", From a77f63bc7a78c0f0b9a4edb7c3f9f40714ef7ec6 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Thu, 21 Aug 2025 14:52:02 +0200 Subject: [PATCH 48/49] Update recipe submodule --- recipe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe b/recipe index 1d8fb9d..f83d736 160000 --- a/recipe +++ b/recipe @@ -1 +1 @@ -Subproject commit 1d8fb9d449aa5ad702c124f85e2e67e481e3483f +Subproject commit f83d73659ee63fbf6e08028267b78eefc2c59301 From 2273b3825d1447ef69385aac07d47519ba5104a9 Mon Sep 17 00:00:00 2001 From: Luca Di Stefano Date: Thu, 25 Sep 2025 09:45:42 +0200 Subject: [PATCH 49/49] Update package-lock.json --- package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5017641..f34a000 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6611,14 +6611,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -6929,9 +6929,9 @@ } }, "node_modules/vite": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.3.tgz", - "integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.7.tgz", + "integrity": "sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==", "dev": true, "license": "MIT", "dependencies": { @@ -6940,7 +6940,7 @@ "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", - "tinyglobby": "^0.2.14" + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js"